Live Diff Engine · Updated Feb 27, 2026

Next.js Version Diff_

Every breaking change, new API, and deprecation — machine-parsed from the official Next.js repo. No summaries. Raw diffs.

v14v15
Next.js 14 → 15 · App Router API diff
AddedChangedRemoved
API / Featurev14 BehaviorMigration Notev15 BehaviorType
fetch() cachingCached by default (force-cache)Add cache: "force-cache" explici…No-store by defaultCHG
cookies() / headers()Sync — returns value directlyAwait the function call: const c…Async — returns PromiseCHG
params / searchParamsSync props in page.tsxUnwrap with await in async compo…Async props (Promise<>)CHG
after()New stable API — no migration ne…Stable — run code after responseNEW
connection()New stable API — opt into dynami…Stable — force dynamic renderNEW
cacheTag() / cacheLife()Enable with dynamicIO flag in ne…Experimental — fine-grained cache controlNEW
next/dynamic (App Router)Partial supportUse React.lazy() + Suspense for …Deprecated in App RouterDEP
Partial PrerenderingExperimental (opt-in)Now stable — remove experimental…Stable (incremental)CHG
3Added4Changed1RemovedClick any row to expand migration details
App Router · v14 → v15·fetch() caching changed·cookies() now async·Turbopack stable in dev·PPR incremental stable·React 19 supported·params now Promise<>·after() API landed·next/dynamic deprecated·connection() added·App Router · v14 → v15·fetch() caching changed·cookies() now async·Turbopack stable in dev·PPR incremental stable·React 19 supported·params now Promise<>·after() API landed·next/dynamic deprecated·connection() added·
Version Spec Sheets
v15.1.0Dec 10, 2025MED RISK
Risk Score
6/10

Async Dynamic APIs, PPR stable, React 19 support, Turbopack dev stable.

Added (2)

Execute code after a response has finished streaming. Useful for logging, analytics, and side-effects that should not block the response.

import { after } from 'next/server';
 
 
export default function Page() {
after(() => {
// runs after response
analytics.track('page_view')
})
return <div>Page</div>
}
Migration Checklist

Explicitly opt a component into dynamic rendering. Replaces the pattern of reading unstable headers/cookies just to force dynamic.

import { connection } from 'next/server';
 
 
export default async function Page() {
await connection()
// everything below is dynamic
return <Dashboard />
}
Migration Checklist
Changed (2)

fetch() now defaults to no-store semantics in Server Components. Previously defaulted to force-cache.

// v14 (implicit force-cache)
const data = await fetch('/api/data')
 
// v15 (explicit — required for caching)
const data = await fetch('/api/data', {
cache: 'force-cache',
next: { revalidate: 3600 }
})
Migration Checklist

These APIs are now async and return Promises. Accessing synchronously throws in strict mode.

// v14
const cookieStore = cookies()
const theme = cookieStore.get('theme')
 
// v15
const cookieStore = await cookies()
const theme = cookieStore.get('theme')
Migration Checklist
Removed (1)

next/dynamic is deprecated for App Router. Use React.lazy() with Suspense for code-splitting in the App Router.

// Deprecated in App Router
import dynamic from 'next/dynamic';
 
const Comp = dynamic(() => import('./Comp'))
 
// v15 recommended
import { lazy, Suspense } from 'react';
 
const Comp = lazy(() => import('./Comp'))
Migration Checklist
v14.2.0Apr 11, 2024LOW RISK
Risk Score
2/10

Turbopack dev improvements, memory optimizations, build tracing enhancements.

Added (2)

25% reduction in local server memory usage. Persistent caching improvements reduce cold start by up to 60%.

Migration Checklist

Configure client-side router cache duration for static and dynamic routes independently.

// next.config.js
module.exports = {
experimental: {
staleTimes: {
dynamic: 30, // seconds
static: 180,
}
}
}
Migration Checklist
Changed (1)

More accurate output file tracing reduces serverless bundle sizes by 10–20%.

Migration Checklist
Removed (0)
No removals
Free Tier
Free Forever

Track Your Stack
Free.

Get personalized upgrade alerts when breaking changes land in your tracked versions. No noise — only diffs that affect your exact framework config.

Instant alerts for breaking changes in your versions
Codemods and migration scripts, pre-filtered
Risk score per upgrade — before you pull the trigger

No credit card · Unsubscribe anytime · Tracking 1 version

Inline Diff Tool

Diff Any Two Versions

First query free. Sign in to unlock unlimited diffs and export.

v13.5v15.1 · app/page.tsx
-3+4

Select two versions and run diff

First query is always free

847APIs tracked
12Major versions
3,241Diffs run today
99.2%Diff accuracy