What are the key differences between Next.js 13, 14, and 15?
Each of these releases introduced a major architectural shift. A quick tour of what changed and why it matters.
Next.js 13 (October 2022) — introduced the App Router in beta. The biggest release in the framework's history:
app/ directory — file-system routing that uses React Server Components by default.
Nested layouts and loading states —
layout.tsx,loading.tsx,error.tsx,not-found.tsx.Streaming and Suspense — pages can stream from the server, showing UI incrementally.
Server Components, Client Components — clear split between server-only and client-executable code.
Turbopack (alpha) — Rust-based dev bundler, much faster than Webpack.
next/image and next/font — redesigned image component and first-class web-font support.
Next.js 14 (October 2023) — stabilized 13's new features, no breaking changes:
Server Actions (stable) —
'use server'functions callable from forms and client code.Partial Prerendering (preview) — static shells with streaming dynamic content in the same page.
Turbopack for dev — significantly faster local startup and HMR for most projects.
Metadata improvements — dynamic OG image generation via
ImageResponse.Bundle size and memory usage reductions across the App Router runtime.
Next.js 15 (October 2024) — shifted defaults around caching and async APIs:
Async request APIs —
cookies(),headers(),params, andsearchParamsare now async. Existing code needsawait.Caching defaults inverted — fetches and Route Handlers are now uncached by default. Opt back into caching explicitly.
React 19 support — Actions,
use(), and new form features all work in App Router.Turbopack stable for dev — default bundler for
next dev.Static Route Indicator and Dev Instrumentation — clearer diagnostics in dev.
next/after — schedule work after the response has been sent.
Partial Prerendering (still experimental) — production-ready for many apps.
Practical migration notes:
13 to 14 — generally drop-in. Adopt Server Actions if you're doing forms.
14 to 15 — requires code changes. The
codemodcommand automates most of the async API migrations:npx @next/codemod@latest next-async-request-api. Audit everyfetchcall to decide whether it should be cached.Anything older than 13 — the Pages Router still works and is still maintained. Moving to the App Router is encouraged but not required for existing projects.
This is a frequently asked question. Know the headline feature of each version: v13 = App Router (beta), v14 = stable App Router + Server Actions, v15 = default caching changes + async APIs.
The v15 caching change is especially important to mention.