Google folded Core Web Vitals into ranking signals years ago, and every SEO checklist since has told you to chase a green Lighthouse score. That's not wrong, exactly — but it's the wrong target. A site can score 100 on Lighthouse and still feel sluggish to a real visitor on a mid-range phone with a shaky connection. The metrics that matter are the ones that map to what a person actually experiences: how fast the page looks ready, how fast it responds to a tap, and whether anything jumps around while they're trying to read it.
Largest Contentful Paint: optimize the thing people are waiting for, not everything
LCP measures when the largest visible element — usually a hero image or headline — finishes rendering. The biggest wins here rarely come from generic image compression. They come from finding the actual bottleneck: is the hero image being requested late because it's buried in a CSS background instead of a preloaded <img> tag? Is the font blocking render because it's loaded via a third-party stylesheet with no font-display: swap? Is the server itself slow to respond to the very first request? Fix the specific bottleneck for your specific page rather than applying every optimization technique uniformly — most of them won't matter for your LCP element.
Interaction to Next Paint replaced First Input Delay — and it's less forgiving
INP measures the full round trip from a user's click or tap to the next visual update, across every interaction on the page, not just the first one. The usual culprit is JavaScript doing too much synchronous work on the main thread — a heavy state update, a poorly-debounced search filter, or a third-party analytics script that hijacks the thread at the worst possible moment. Breaking up long tasks, deferring non-critical scripts, and being deliberate about what runs on every keystroke or scroll event matters far more here than shaving kilobytes off a bundle.
Cumulative Layout Shift: the one users complain about without knowing its name
CLS is the metric behind "I was about to click something and the page jumped and I clicked the wrong thing." It's almost always caused by images or ads without reserved dimensions, web fonts swapping in and changing line heights, or content injected above what the user is already looking at. Reserving space with explicit width/height attributes or aspect-ratio CSS fixes the vast majority of CLS issues, and it's one of the cheapest fixes on this list relative to the frustration it prevents.
What we actually prioritize on client projects
In practice, we audit third-party scripts first — tag managers, chat widgets, and analytics snippets are disproportionately responsible for both INP and LCP regressions, and they're the easiest thing to audit and the easiest thing teams forget to revisit after launch. After that, we look at font loading strategy and image delivery, since those two alone typically account for most of a site's LCP budget. Micro-optimizing bundle size tends to come last — it matters, but it's rarely the biggest lever available.
The honest takeaway: don't optimize for the Lighthouse score. Optimize for the specific thing that's slow on your specific site, measured on real devices under real network conditions. That's what actually shows up as lower bounce rates and more completed checkouts.


