Engineering

Core Web Vitals Fixes That Actually Move Numbers

Stop chasing Lighthouse vanity. Fix LCP, INP, and CLS with the changes that move field data - not just lab screenshots.

MA

Muhammad Ahmed

Principal Frontend Engineer

11 min read

Key takeaways

  • Prioritize field data over lab-only green scores
  • Attack LCP, INP, and CLS with specific, ordered fixes
  • Measure after each change - don’t batch blind optimizations

Teams burn weeks “optimizing performance” while Search Console field data barely moves. Usually they optimized the wrong page, on a fast laptop, with a cold cache that real users never see.

Start from field data

  1. 01Identify the URLs that matter: money pages and high-traffic templates
  2. 02Read CrUX / Search Console for LCP, INP, CLS - not just Lighthouse
  3. 03Reproduce on mid-tier mobile throttling before declaring victory

LCP

Largest contentful paint - load feel

INP

Interaction to next paint - input feel

CLS

Layout shift - visual stability

LCP: get the hero there faster

  • Preload the true LCP image or font - not every asset
  • Serve correctly sized images; avoid huge heroes scaled down in CSS
  • Eliminate render-blocking chains ahead of the LCP element
  • Prefer server-rendered HTML for above-the-fold content

INP: make interactions cheap

Long tasks on click handlers, heavy hydration, and third-party scripts dominate INP. Break up work, defer non-critical JS, and keep the main thread free when the user taps.

Mindset, not magic
// Prefer: small handlers, deferred work
button.addEventListener("click", () => {
  updateUIImmediately();
  queueMicrotask(() => runExpensiveAnalytics());
});

CLS: reserve space, stop surprises

  • Width/height or aspect-ratio on images and embeds
  • No late-injected banners above existing content without reserved space
  • Font loading strategy that doesn’t swap layout wildly
  • Avoid inserting ads/cookies banners that shove the page down
Vanity optimization
Field-moving fix
Homepage Lighthouse 98 on desktop
Checkout template LCP on mobile CrUX
Minify everything blindly
Remove the one blocking script on LCP path
One big “perf sprint”
Ship, measure, iterate per vital

Performance work without field measurement is interior decorating.

Related services

MintyLogix

Want this applied to your product?

Tell us what you're building. We'll respond with a clear plan - no pitch theater.

Start a project