Back to BlogWeb Development
The Ultimate Next.js Performance Guide: Hitting 100 on Core Web Vitals
By Garvit Dubey2026-06-088 min read
## Why Core Web Vitals Matter More Than Ever
Google's page experience signals are now a confirmed ranking factor, and Core Web Vitals--LCP, INP, and CLS--sit at the heart of that equation. In our experience building 120+ websites, we've seen a direct correlation: every 100ms improvement in LCP translates to roughly 1.2% higher conversion rates.
### The Three Metrics That Matter
**Largest Contentful Paint (LCP) -- Target: < 2.5s**
LCP measures when the largest visible element finishes rendering. The most common culprits for slow LCP are unoptimised hero images and render-blocking JavaScript.
**Interaction to Next Paint (INP) -- Target: < 200ms**
INP replaced FID in 2024 and measures overall responsiveness. Heavy client-side JavaScript and unoptimised event handlers are the usual offenders.
**Cumulative Layout Shift (CLS) -- Target: < 0.1**
CLS captures visual stability. Dynamic ad slots, images without dimensions, and web font loading are the top causes of layout shift.
### Our Next.js Performance Playbook
**1. Image Optimisation with next/image**
Always use the built-in `Image` component. It automatically serves WebP/AVIF, lazy-loads below-the-fold images, and reserves layout space to prevent CLS.
**2. Server Components by Default**
In the App Router, components are Server Components by default--meaning zero JavaScript shipped to the client unless you explicitly opt in with `'use client'`. Keep interactive islands small.
**3. Strategic Code Splitting**
Use `dynamic()` imports for heavy components that aren't needed on initial render--modals, charts, maps, and rich text editors.
**4. Font Optimisation with next/font**
Load fonts via `next/font` to eliminate render-blocking requests and prevent FOUT/FOIT.
**5. Edge Caching with ISR**
Use Incremental Static Regeneration to serve pages from the edge while keeping content fresh. We typically set `revalidate: 3600` for content pages and `revalidate: 60` for dynamic listings.
### Real Results
On a recent e-commerce project, these optimisations moved our Lighthouse Performance score from 62 to 98, reduced LCP from 4.2s to 1.1s, and contributed to a 32% increase in organic traffic within 3 months.
*Need help optimising your Next.js application? [Get in touch](/contact)--we offer free performance audits.*
Next.jsPerformanceCore Web VitalsSEOLighthouse
