Skip to content
← All insights
PerformanceMay 14, 2026·6 min read

Core Web Vitals in 2025: What Actually Moves the Needle

LCP, INP, CLS — and the engineering patterns we use to keep every one of them in the green on real-user devices.

A
Aayushya Panchal

Most performance blogs treat Core Web Vitals like a checklist. In production they are a moving target — shaped by the device, the network, and the user's intent. Here's how we approach them at Tapas Devlabs.

Largest Contentful Paint is a content problem

LCP is not about how fast your bundle is — it is about how fast the largest visible element on the fold is delivered. The fastest path to a good LCP is to ship the LCP image as a static, preloaded asset and render the rest of the page around it. Hero images go to the CDN, are preloaded, and the layout above the fold never waits on JS.

INP replaced FID — and the bar moved

Interaction to Next Paint measures the latency between a user input and the next paint after the handler runs. The fix is not "use less JS" — it is to keep the main thread free during input. We use React 19 transitions for non-urgent updates and run heavy work in a Worker whenever we can.

CLS is a layout problem you can prevent

Reserve space for everything that is not yet rendered: images with width/height, embeds with aspect-ratio, fonts with size-adjust or a fallback metric override. Then audit on real-user data, not just Lighthouse.

What we measure on every deploy

  • Real-user CWV via Vercel Speed Insights and CrUX
  • Per-route 75th percentile over the last 24h
  • Alerts when any route regresses by more than 5%
  • A weekly perf review with the engineering team
#Performance#Next.js#CWV