Achieve a 100/100 Lighthouse Score with Next.js — Quick answer
If you follow a disciplined performance-first workflow—serve critical UI as static or ISR pages, load only above-the-fold assets, use next/image and next/font correctly, defer non‑critical JavaScript, and cache at the edge—you can reliably achieve a 100/100 Lighthouse score with Next.js for regulated pages. This guide is written for frontend engineers, technical product managers, and founders who own web performance and want an actionable, repeatable implementation plan.
Author: Wizora Studio performance team — Updated: 2026-08-26
Who this guide is for
- Developers implementing Next.js apps who need reproducible Lighthouse results.
- Product and engineering managers estimating effort to reach top Core Web Vitals.
- Founders evaluating vendors for a performance-first web rebuild or audit.
The Core Web Vitals that actually matter
Focus on the three metrics Lighthouse weights most heavily:
- Largest Contentful Paint (LCP) — time to render the main hero image or headline. Target <2.5s in lab and <2.5s field median.
- Cumulative Layout Shift (CLS) — avoid visual shifts during load. Target <0.1.
- Interaction to Next Paint (INP) — measures responsiveness for user interactions. Target <200ms.
Practical workflow: step‑by‑step example to reach 100/100
-
Audit baseline performance.
Run Lighthouse locally (Chrome DevTools) and collect field data from PageSpeed Insights and Real User Monitoring. Identify the LCP element, CLS triggers, and long tasks blocking interactivity.
-
Make critical UI render immediately.
Prefer static (SSG) or ISR for marketing pages. For authenticated pages, move as much UI as possible to edge-cached pages and hydrate user-specific bits after load.
-
Optimize images.
Use Next.js image handling: ensure you include responsive sizes via the sizes attribute and mark only above-the-fold images as priority. Convert to modern formats (AVIF/WebP) server-side and serve appropriately scaled images.
-
Eliminate CLS from fonts and layout shifts.
Use next/font (or self-hosted fonts) to precompute fallbacks and avoid FOUT/FOIT. Reserve space for dynamic content (ads, embeds) with fixed aspect containers to prevent shifts.
-
Defer heavy JavaScript.
Use dynamic imports (next/dynamic) with SSR disabled for interactive charts, maps, and bulky third-party widgets. Load analytics/chat during idle time using Next.js Script strategies.
-
Edge caching and middleware routing.
Use ISR to publish static HTML to the edge. Handle redirects and auth checks in middleware so pages compile and cache without extra server-side latency.
-
Measure and iterate.
Repeat Lighthouse runs in consistent environments, and validate field metrics for at least two weeks to catch variance from CDNs or third-party changes.
Checklist: configuration, build, and deployment checks for Next.js
- Pages that should score 100: exported as static/ISR where possible.
- next.config.js: enable image formats (AVIF/WebP) and configure caching headers for static assets.
- Images: set sizes and priority only for LCP images; otherwise rely on lazy loading.
- Fonts: use next/font or preload with matching font-display to prevent layout shifts.
- JavaScript: code-split, remove unused libraries, and dynamic import heavy modules with ssr: false when appropriate.
- Third-party scripts: load with strategy="lazyOnload" or after user interaction.
- Edge: configure ISR and proper cache-control headers; enable CDN edge caching for HTML if content is cacheable.
- Build: run bundle analysis (next build + analyzer) and remove large dependencies identified in the main bundle.
- Deployment: validate TTFB across regions and set up health checks for cache purges and revalidation.
Common pitfalls: images, fonts (CLS), and third‑party scripts
- Missing sizes attribute — browsers download oversized images on mobile; always provide sizes for responsive images.
- Unbounded embeds — iframes or widgets without reserved aspect boxes cause CLS spikes; wrap them in fixed-aspect containers.
- Blocking analytics/chat — synchronous third-party scripts create long tasks; load them lazily or on interaction.
- Client-side only hydration — shipping large client bundles for content that could be static increases INP; prefer SSR/ISR and hydrate selectively.
Security, risks, and limitations to consider
- Edge caching improves speed but can serve stale content; use proper revalidation strategies and short stale-while-revalidate when freshness matters.
- Aggressive optimization may hide functional regressions. Always include end-to-end and accessibility tests in CI before deploying performance changes.
- Third-party vendors can change behavior and impact your score without code changes on your side; monitor third-party performance and have guardrails to disable them if needed.
- Lab Lighthouse results can differ from field (Real User) metrics; prioritize field data when making product decisions.
Accessibility and technical SEO checklist
- Titles and metas: ensure each page has a unique title and meta description and a canonical link in your head (server-rendered when possible).
- Images: include descriptive alt text for meaningful content; decorative images should have empty alt attributes.
- Contrast and focus: verify color contrast ratios and visible focus outlines; support prefers-reduced-motion media queries.
- Sitemap and robots: publish a sitemap and ensure robots.txt isn't blocking important pages.
- Server-rendered text: ensure critical content is present in server HTML so crawlers and Lighthouse capture it immediately.
Implementation notes (practical tips)
- Use next/image with sizes tuned to your layout breakpoints. Mark only above-the-fold images with priority.
- Use next/font to avoid layout shifts caused by web fonts; preload only when necessary.
- Code-split via dynamic imports for large components and libraries, particularly charting and mapping libraries.
- Use Next.js middleware for redirects/auth to avoid SSR blocking of cacheable pages.
- Run automated Lighthouse checks in CI that emulate the same throttling profile used for local audits to keep runs comparable.
Costs and timeline considerations for teams and projects
Optimizing to a 100/100 score is primarily an engineering effort: auditing, refactoring, and CI integration. For a marketing site this is usually a multi-week effort (audit, implement, test), while a complex authenticated app may take longer because of data freshness and edge-revalidation complexities. If you need external help, consider starting with a focused performance audit before a full rework.
Example implementation (short case study)
We audited a SaaS marketing site that had a 60 Lighthouse score: large hero images, an advertising iframe, and a heavy analytics tag. Actions taken: convert hero images to AVIF, add responsive sizes, use next/font, lazy-load the ad iframe behind user interaction, and load analytics with idle strategy. Result: LCP improved by 2.1s and CLS dropped to near zero in field data. For similar engagements we partner on full delivery—see related work in our portfolio at Wizora work.
Technical SEO verification notes
- Confirm canonical tags are server-rendered and consistent across drafts and production.
- Verify sitemap.xml is reachable and updated with new routes.
- Check that critical content is present in the initial HTML payload (not injected only by client JS).
FAQs
How long does it take to Achieve a 100/100 Lighthouse Score with Next.js?
It depends on the starting point. Small marketing sites can reach it in a few sprints; large apps require staged work to avoid functional regressions. Start with an audit to scope effort.
Will removing third‑party tools always improve the score?
Often yes, but not always — sometimes the impact is small if scripts are loaded lazily. Prefer deferred loading or privacy‑friendly alternatives rather than outright removal if the tool is business-critical.
Do I need to use a specific hosting or CDN to reach 100?
Any modern CDN and edge platform that supports CDN caching and routing (and low TTFB) can work. The key is correct caching and ISR configuration rather than a single provider.
When to contact Wizora
If you want a performance audit, a prioritized remediation plan, or full implementation, we offer web development and SaaS development services and can help with both audit and delivery. Learn more about our web offerings at Web development and SaaS work at SaaS development. Ready to start? Get in touch for an audit and next steps.
Summary and recommended next actions
Achieving a 100/100 Lighthouse score with Next.js is a repeatable engineering process: measure, prioritize LCP/CLS/INP fixes, optimize images and fonts, defer non‑critical JS, and use edge caching. Start with an audit, apply the checklist above, validate in the field, and iterate. If you want hands-on help, contact us to scope an audit and implementation plan.



