SL

Core Web Vitals for Next.js: A Practical Checklist

Sapun Lamichhane7 min read

The three metrics, in plain terms

  • LCP (Largest Contentful Paint) — how long until the largest visible element (usually a hero image or heading) has rendered.
  • INP (Interaction to Next Paint) — how quickly the page responds after a user actually interacts with it, replacing the older FID metric.
  • CLS (Cumulative Layout Shift) — how much visible content jumps around as the page loads.

Field data vs. lab data — measure the right one

A Lighthouse score in dev tools is lab data — a single run, on one simulated connection, on one device. Google's actual ranking signal is field data from the Chrome UX Report (CrUX), aggregated from real visitors over a rolling 28-day window. A site can have a perfect Lighthouse score and a poor CrUX report if real users are mostly on slower connections or older phones than the lab simulation assumes. Check Search Console's Core Web Vitals report, not just a local Lighthouse run, before declaring a page fixed.

Next.js-specific levers for LCP

  • Use the built-in Image component with explicit width/height (or fill with a sized container) so the browser can reserve space before the image loads — this also directly helps CLS.
  • Mark the LCP image with priority so Next.js preloads it instead of lazy-loading the one image that matters most for this metric.
  • Audit font loading — a custom font swapping in after paint (FOUT) can itself trigger the LCP element to shift.

Next.js-specific levers for INP

INP problems in a Next.js site are usually caused by large client-side JavaScript bundles blocking the main thread during hydration, especially with heavy animation libraries running on every route. Code-split anything not needed for the initial interaction, and check whether animation-heavy sections can defer their JS until after first interaction rather than loading eagerly with the rest of the bundle.

Common CLS causes worth checking specifically

  • Ads or embeds injected without a reserved space.
  • Web fonts that render at a different width than the fallback font before swapping.
  • Content injected above existing content after initial load (a common mistake with cookie banners and promotional bars).

A pre-launch checklist

Before shipping a new page: confirm the LCP element is identified and preloaded, confirm every image has explicit dimensions, run a CrUX check once the page has real traffic (not just a lab score), and budget the JavaScript payload before writing the components rather than after — see the companion piece on setting performance budgets before you design.

Book a free 10-minute consultation

Sapun Lamichhane is a business growth analyst and founder of Arcetis, based in Pokhara, Nepal. If you want a second opinion on your account, your funnel, or whether a channel is worth your budget at all, book a free 10-minute call — no pitch, and a straight answer even when the answer is that you do not need help.

Direct: +977 9846162626 · lamichhanesapun2@gmail.com

This post supports the frameworks documented in full on the Authority page.