Skip to main content

LCP + INP + CLS

This step is refinement: after you have the stack stable and caches enabled, you fix the remaining CWV regressions with targeted changes.

LCP (Largest Contentful Paint)​

  1. Identify the LCP element (image, heading, hero container).
  2. Make that resource load first.

Common fixes:

  • Do not lazy load the LCP image.
  • Add priority hints for the LCP image.
  • Reduce render blockers (CSS/JS) before the first paint.
Prioritize a hero image
<img src="/path/hero.webp" width="1600" height="900" loading="eager" fetchpriority="high" decoding="async" alt="">

INP (Interaction to Next Paint)​

INP problems usually come from main-thread work:

  • heavy JS bundles
  • third-party scripts executing on load
  • long tasks triggered by scroll/click handlers

Common fixes:

  • remove scripts you do not need
  • delay non-critical third-party scripts
  • keep critical UI scripts excluded from delay

CLS (Cumulative Layout Shift)​

CLS is almost always caused by late layout changes:

  • images/iframes without reserved space
  • fonts swapping with different metrics
  • banners/popups injected above the fold

Common fixes:

  • ensure media has width and height
  • reserve space for banners and embeds
  • preload only the fonts used above the fold

Debugging Tools​

  • Chrome DevTools Performance panel: identify LCP element and long tasks.
  • Chrome DevTools Rendering: enable layout shift regions.
  • Lighthouse diagnostics: confirm which audits are still failing.

Checklist​

  • LCP element identified and prioritized.
  • Non-critical scripts delayed or removed.
  • Media sizing prevents layout shifts.
  • Changes validated on mobile.

What's Next​