Skip to content
Abstract illustration for Lighthouse performance checklist
Next.js1 min read

A practical checklist for 95+ Lighthouse

The few things that actually move LCP/CLS consistently: image strategy, font loading tactics, predictable layouts, and the small CSS choices that compound across pages.

B
Bipin Kumar
Next.js · AI · Automation

Why Lighthouse scores matter (and when they don't)

Lighthouse scores aren't a vanity metric — they directly correlate with user retention, conversion rates, and SEO rankings. But the goal isn't to chase 100s blindly; it's to ship a site that feels fast to real users.

The checklist

1. Images are always the bottleneck

Most "slow" sites I audit have image problems. The fixes:

  • Use next/image with explicit width/height (prevents CLS)
  • Serve AVIF/WebP with JPEG fallback
  • Lazy-load below-the-fold images
  • Use responsive sizes attribute

2. Font loading strategy

next/font does most of the work, but:

  • Preload critical font weights only
  • Use font-display: swap or optional
  • Subset to Latin characters unless you need i18n

3. Layout stability

CLS under 0.1 requires discipline:

  • Reserve space for images, ads, and async content
  • Avoid injecting content above existing content
  • Use CSS aspect-ratio for media embeds

4. JavaScript budget

Every kilobyte you ship is a kilobyte users pay to download and parse:

  • Use Server Components by default in Next.js 14
  • Code-split at route boundaries
  • Audit third-party scripts quarterly

Measurement

Don't trust Lighthouse alone. Set up Real User Monitoring (RUM) with Vercel Analytics or similar — p75 LCP matters more than a lab score.

Keep Reading

Related articles

All articles
Contact

Got a project in mind?

I take a limited number of clients each quarter. If you need a Next.js platform, an AI agent, or a reliable automation layer — share your context and I'll reply within 12 hours.

Replies within 12 hours · IST · UTC+5:30
NDAs welcome · all work confidential by default
Project brief
Get a scope in 48 hours.
No tracking. Opens your email client with a draft.