A Lighthouse score of 100 on your laptop means very little. Field data from real users on real networks is what Google reads, and the two frequently disagree.
Fix LCP first, and fix it at the source
Largest Contentful Paint is usually a hero image or a heading blocked by a web font. Preload the image, serve it in a modern format at the size it renders, and give the font a real fallback with font-display: swap.
On one client rebuild, correctly sizing a single hero image took LCP from 4.1s to 1.2s on mid-range Android. Nothing else we did that month came close.
Layout shift is almost always uncontrolled dimensions
- Width and height attributes on every image and iframe
- Reserved space for ad slots and embeds before they load
- Fonts with matched fallback metrics so swap does not reflow
- No content injected above existing content after paint
Interaction latency is a JavaScript problem
Interaction to Next Paint punishes heavy main-thread work. Server components, smaller client bundles and deferring analytics until idle do more than any micro-optimisation inside your event handlers.
Measure the field, not the lab
Install a real-user monitoring script and look at the 75th percentile on mobile. That number is the one that moves your rankings, and it is usually two to three times worse than your lab score.
Want this applied to your product?
We do this work for clients every week. Bring us the specifics and we will tell you what we would change first.
Book a Call