What’s the fastest way to isolate whether the delay is coming from TTFB vs frontend rendering?
Run Lighthouse from Chrome's dev tools.
How are you serving the app? Just to be sure: are you building the assets, and not using any development tool (npm run dev or php artisan serve) in production?
In Apache, have you:
- Enabled http2 or http3? This is pretty important.
- Enabled traffic compression (gzip)?
What's the size of the largest javascript bundle when you build the assets?
The first things I'd do is open the browser dev tools and check the console for any errors, the network tab for any glaring issues, and then run Lighthouse or equivalent. You can analyze the waterfall graph in the Network tab, but I'd check the other stuff first.