Why Core Web Vitals Still Matter in 2025
Google officially folded Core Web Vitals into its ranking signals in 2021, and the weight of those signals has only grown since. In 2025, the three metrics — Largest Contentful Paint (LCP), Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS) — are no longer a tiebreaker. On competitive SERPs, they are often the difference.
More importantly, they correlate directly with revenue. A 100ms improvement in LCP is associated with a 1–2% lift in conversion rate. CLS issues cause accidental clicks, rage clicks, and abandoned sessions. Poor INP makes your UI feel broken even when it technically works.
Largest Contentful Paint (LCP)
LCP measures how long it takes for the largest visible element in the viewport to render. In most cases, this is a hero image, a large heading, or a background image.
Target: under 2.5 seconds
The most common causes of poor LCP:
How to fix it in Next.js:
Use the component with priority on your above-the-fold hero image. This automatically adds and serves AVIF/WebP. Set explicit width and height to eliminate layout shift. If your LCP element is a CSS background, move it to an tag — CSS backgrounds cannot be preloaded as efficiently.
Interaction to Next Paint (INP)
INP replaced First Input Delay (FID) as the responsiveness metric in March 2024. Where FID only measured the first interaction, INP measures the worst interaction throughout the full page session.
Target: under 200ms
INP failures are almost always caused by:
How to fix it:
Break long tasks using scheduler.yield() or setTimeout(..., 0) to yield to the browser. Audit your third-party scripts — even one poorly implemented analytics tag can blow your INP. In Next.js, use next/script with strategy="lazyOnload" for non-critical scripts.
Cumulative Layout Shift (CLS)
CLS measures how much the page layout shifts unexpectedly during load. A score of 0 means no shifting. Anything above 0.1 is flagged as needing improvement.
Target: under 0.1
The main culprits:
How to fix it:
Always set width and height on images. For web fonts, use font-display: optional or font-display: swap with a matched fallback. Reserve space for dynamic content with CSS min-height. In Next.js, the component handles image dimensions automatically.
Setting a Performance Budget
The most effective teams treat performance like a feature with a hard budget. Define maximum thresholds before development starts:
|--------|------|-------------------|
Run Lighthouse CI in your deployment pipeline and fail builds that exceed your budget. Vercel's built-in Speed Insights gives you field data (real user measurements) rather than lab data — use both.
The Fastest Wins
If you need to improve scores quickly, these changes typically have the highest return on time invested:
Core Web Vitals are not a one-time fix. Set up monitoring, track field data weekly, and treat regressions as bugs — because for your users, they are.