Performance work often stalls because it is framed as a score to raise rather than an experience to fix. The score is a proxy. The experience is the thing.
Measure what users get
Lab tools run on fast hardware and stable networks. Real users are on mid-range phones, congested mobile networks and browsers with a dozen tabs open. Field data — Core Web Vitals from actual sessions — tells you what is happening; lab data tells you why.
Where the time usually goes
- JavaScript. Shipped, parsed and executed before anything is interactive. Most of it is framework and dependency weight, not application code.
- Images. Correct formats and explicit dimensions eliminate both weight and layout shift.
- Fonts. A blocking font request delays every word on the page.
- Third-party scripts. Tag managers and widgets frequently cost more than the entire application.
A practical order of work
- Render on the server and ship interactivity only where it is needed.
- Set a JavaScript budget and enforce it in CI, so regressions are blocked rather than discovered.
- Serve modern image formats with correct sizing and dimensions.
- Self-host fonts, preload the critical face, and always define a fallback.
- Audit third-party scripts twice a year and remove what nobody defends.
None of this is novel. It is simply rarely done consistently, and consistency is what separates a fast site from one that was fast at launch.

