Next.js
vercel/next.js · v15.2.4…v15.3.0 · 412 commits
Partial Prerendering goes stable, after() lands, Turbopack on prod build
Three years of experiments converge: PPR is now default, after() defers post-response work, and Turbopack powers production builds in beta.
Preview
Partial Prerendering goes stable, after() lands, Turbopack on prod build
_2026-05-15_
Three years of experiments converge: Partial Prerendering is now default, after() lets you defer post-response work, and Turbopack powers production builds in beta.
New features
- Partial Prerendering ships stable — no
experimental.pprflag needed (#71203) after()for post-response work — analytics, cache priming, webhook fan-out (#70824)- Typed Routes now covers
app/route handlers, not just page segments (#71045) next devopens the browser automatically — pass--no-opento disable
Performance
- turbopack: production build in beta — 4.2× faster on a 1.2k-route monorepo benchmark (#71500)
- App Router middleware cold start cut by 40%
- Image component decoded 18% faster on AVIF inputs
Breaking changes
- Minimum Node version raised to 20.10 (was 18.18) (#71010)
legacyBrowsers: trueremoved fromnext.config.js
Bug fixes
- Hydration mismatch when reading
searchParamsinsidegenerateMetadata redirect()no longer drops the query string on dynamic segments- Double-revalidation on
revalidatePath('/')resolved
Behind the scenes
37 internal type tightenings and a unified test runner across all packages.
Markdown
# Partial Prerendering goes stable, after() lands, Turbopack on prod build
_2026-05-15_
Three years of experiments converge: Partial Prerendering is now default, `after()` lets you defer post-response work, and Turbopack powers production builds in beta.
## New features
- Partial Prerendering ships stable — no `experimental.ppr` flag needed ([#71203](https://github.com/vercel/next.js/pull/71203))
- `after()` for post-response work — analytics, cache priming, webhook fan-out ([#70824](https://github.com/vercel/next.js/pull/70824))
- Typed Routes now covers `app/` route handlers, not just page segments ([#71045](https://github.com/vercel/next.js/pull/71045))
- `next dev` opens the browser automatically — pass `--no-open` to disable
## Performance
- **turbopack:** production build in beta — 4.2× faster on a 1.2k-route monorepo benchmark ([#71500](https://github.com/vercel/next.js/pull/71500))
- App Router middleware cold start cut by 40%
- Image component decoded 18% faster on AVIF inputs
## Breaking changes
- Minimum Node version raised to 20.10 (was 18.18) ([#71010](https://github.com/vercel/next.js/pull/71010))
- `legacyBrowsers: true` removed from `next.config.js`
## Bug fixes
- Hydration mismatch when reading `searchParams` inside `generateMetadata`
- `redirect()` no longer drops the query string on dynamic segments
- Double-revalidation on `revalidatePath('/')` resolved
## Behind the scenes
37 internal type tightenings and a unified test runner across all packages.
Tweet / X thread
🚀 Next.js 15.3.0 is out. Three years of experiments converge: Partial Prerendering is now default, after() lets you defer post-response work, and Turbopack powers production builds in beta. --- New features: • PPR ships stable — no experimental flag • after() for post-response analytics / cache priming • Typed Routes covers App Router route handlers --- Performance: • Turbopack prod build is 4.2× faster on monorepo benchmarks • Middleware cold start cut 40% --- Breaking changes: • Minimum Node version is now 20.10 • legacyBrowsers config option removed --- Full changelog → https://releasenotekit.toolu.dev/examples/nextjs
Email digest
Want this on your own repo?
Free preview, $19 once to publish. No subscription.