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.
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/imagewith explicit width/height (prevents CLS) - Serve AVIF/WebP with JPEG fallback
- Lazy-load below-the-fold images
- Use responsive
sizesattribute
2. Font loading strategy
next/font does most of the work, but:
- Preload critical font weights only
- Use
font-display: swaporoptional - 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-ratiofor 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.
Related articles
n8n workflows that scale: retries, idempotency, alerts
Build automations like product features — observable, debuggable, safe at 2 AM.
Shipping AI assistants with guardrails & source transparency
UX patterns that make retrieval trustworthy and reduce support risk during rollout.
Migrating WordPress to Next.js without losing SEO
A redirect strategy, schema preservation plan, and gotchas I've hit on 10+ migrations.