Miyoit
Next.jsReactPerformanceLighthouse

Optimizing Next.js 15 App Router for Green Core Web Vitals

June 10, 20266 min readLiam SterlingSenior Frontend Lead

Next.js 15 App Router provides a powerful foundation for speed. However, loading bulky fonts, uncompressed images, and client-heavy states can quickly degrade your Core Web Vitals. This article reviews how we optimize frontends for sub-100ms loading speeds.

1. Leverage Server Components by Default

By using React Server Components (RSC), page HTML is fully compiled on the server side and sent to the browser. The client-side JavaScript bundle for text and layouts drops to zero. Only define "use client" at the leaf nodes of your visual tree (like toggles, forms, or menus) to minimize hydration cost.

2. Next-Gen Image Optimization

Next.js provides an Image component that automatically resizing images, converts them to modern formats (like WebP or AVIF), and prevents layout shifts. Always configure explicit layout sizes and use priority loaders for above-the-fold assets:

<Image src="/hero.png" alt="Hero" width={600} height={400} priority />

3. Edge Caching and ISR

For marketing pages, services, and blogs, utilize Incremental Static Regeneration (ISR). By declaring a revalidate parameter, Next.js builds pages statically at build time, serving them from CDN edge nodes instantly, and regenerates them in the background when content edits occur.

Written by Liam SterlingSenior Frontend Lead

Marcus and Elena publish technical articles and insights regularly for global engineering teams, documenting systems design paradigms.

Apply these guidelines

Partner with our team to architect scaling database schemes, vector pipelines, or custom engineering setups for your project.