// LOADING
// LOADING
// LOADING_ARTICLE
core web vitals are the three metrics google uses to score the real-world experience of your pages — and they feed directly into search ranking. a fast, stable page is not just nice to have; it is an seo signal. here is what each metric measures and how to move it in a next.js app.
google's page experience signals reward pages that load quickly, respond instantly, and do not jump around while loading. they are measured from real users (field data in the chrome ux report), not just your lab tests. that is why two sites with the same lighthouse score can rank differently — the field numbers are what count. caching plays a huge role here, which i cover in how browser caching works and why it matters for SEO.
lcp measures how long until the biggest element in the viewport (usually a hero image or headline) renders. good is under 2.5s. slow lcp almost always comes from:
inp replaced first input delay in 2024 and measures how quickly the page responds to the whole lifecycle of user interactions — clicks, taps, key presses. good is under 200ms. the usual cause is too much javascript blocking the main thread, often from unnecessary re-renders.
cls measures visual stability — how much content jumps as the page loads. good is under 0.1. images without dimensions, injected banners, and late-loading fonts are the typical offenders.
next/image with the priority flag on the hero so it is not lazy-loaded.sizes so the browser downloads the right resolution.deciding how a page is rendered is half the battle — SSR vs SSG in Next.js walks through which strategy gives you the fastest first paint for a given page.
inp is mostly a javascript problem. the fixes:
tsximport { useTransition } from "react"; const [isPending, startTransition] = useTransition(); function onChange(value: string) { setInput(value); // urgent: keep typing snappy startTransition(() => { setResults(filter(value)); // non-urgent: won't block the interaction }); }
clean component patterns also help here — see React best practices.
width/height (or use next/image, which reserves the space).font-display: optional or swap with a matched fallback to avoid text reflow.lab tools (lighthouse, the next.js build output) catch obvious regressions, but field data is what google ranks on. check the core web vitals report in google search console regularly — it shows real-user numbers per url group and flags pages that need work. you can also stream live metrics with the web-vitals library to your analytics.
next/image with priority and sizesperformance is a system, not a single fix. combine fast rendering (RSC), the right render strategy (SSR vs SSG), and aggressive caching (caching strategies), then verify with field data. want a teardown of your site's vitals? get in touch.