Fixing High INP & LCP in Next.js 15 App Router: A Step-by-Step Core Web Vitals Optimization Guide (2026)
Quick Navigation
- 01Understanding INP & LCP Bottlenecks in Next.js 15
- 02Step 1: Profiling Long Tasks with LoAf API
- 03Step 2: Eliminating React Hydration Bottlenecks
- 04Step 3: Yielding Main Thread via scheduler.yield()
- 05Step 4: Sub-500ms LCP Asset Prioritization
- 06Step 5: Zero-CLS Layout & next/font Optimization
- 07Step 6: Edge Headers & next.config.js Optimization
Core Web Vitals are a major Google organic ranking factor. With Google replacing FID with Interaction to Next Paint (INP), web applications that suffer from main-thread JavaScript bottlenecks during user clicks, taps, or keyboard events get penalized. In this guide, we break down step-by-step how to optimize Next.js 15 App Router applications for sub-15ms INP and sub-1.2s LCP scores.
📊 2026 Core Web Vitals Targets
01. Understanding INP & LCP Bottlenecks in Next.js 15
In Next.js 15 App Router applications, poor INP is almost always caused by large client-side React component trees re-rendering synchronously during click events, heavy third-party tracking scripts, or dynamic layout recalculations. Poor LCP occurs when main hero images or web fonts lack proper fetch priority or are blocked behind dynamic server data fetches.
02. Step 1: Profiling Long Tasks with Long Animation Frames (LoAf) API
Instead of guessing which click handler is slow, instrument your Next.js client layout with the native Chrome Long Animation Frames (LoAf) API to record exact main-thread long tasks:
03. Step 2: Eliminating React Hydration Bottlenecks
Ensure interactive elements use dynamic lazy imports and server component boundaries so that heavy client JavaScript is excluded from initial hydration.
04. Step 3: Yielding Main Thread via scheduler.yield()
When filtering large datasets client-side, break up execution blocks using `scheduler.yield()` or `requestIdleCallback()` to allow the browser layout engine to process user input immediately:
05. Step 4: Sub-500ms LCP Asset Prioritization
For hero images or prominent product visuals, pass `priority` and explicit `sizes` props to `next/image` so Next.js generates preloading headers and high-priority fetch tags:
06. Step 5: Zero-CLS Layout & next/font Optimization
Prevent Cumulative Layout Shift (CLS) during web font loading by utilizing `next/font/google` with automatic fallback metric overrides:
07. Step 6: Edge Headers & next.config.js Optimization
Configure `next.config.js` to enable AVIF image format, HTTP/3 asset optimization, and granular caching headers:
Want a 95+ Core Web Vitals Next.js Web App or SaaS Platform?
Inceptus Digital builds high-performance web applications, custom SaaS platforms, and enterprise software designed for sub-second page loads and maximum conversion rates.
Explore Next.js Engineering Services →Need Custom Engineering or Growth Systems?
Our team helps ambitious brands build bespoke software, AI integrations, and high-conversion platforms.