Skip to content
isam.chajia
Frontend

Core Web Vitals in Next.js: a practical guide to passing

LCP, INP and CLS explained, with the Next.js techniques that actually move the needle on real devices.

Isam Chajia8 min read
Performance dashboard on a screen next to a smartphone

Core Web Vitals are user-experience metrics, not a checkbox. In Next.js most of the work is about what you ship to the browser and when.

The three metrics

  • LCP — how fast the main content appears.
  • INP — how quickly the page responds to interaction.
  • CLS — how much the layout shifts while loading.

Get images and fonts right

Use the framework's image component so images are sized, lazy-loaded and served in modern formats. Load fonts with display swap and preconnect to avoid invisible text.

import Image from "next/image";

export function Hero() {
  return <Image src="/hero.jpg" alt="" width={1200} height={630} priority />;
}

Ship less JavaScript

  • Keep heavy libraries out of client components.
  • Split interactive widgets so static HTML arrives first.
  • Reserve space for media and ads to protect CLS.

Measure before and after

Test on a throttled connection with real devices, not just your laptop. Fix the largest contributor first, then re-measure — good performance comes from iteration.

Performance is a feature you keep, not a task you finish.
  • Core Web Vitals
  • Next.js
  • Performance
Available for new work

Enjoying the writing?

If an article sparked an idea for your product or team, I'd be glad to hear about it.

Replies within 2 working daysMarrakech, Morocco