RReleaseNoteKit

← All examples

Next.js
vercel/next.js · v15.2.4…v15.3.0 · 412 commits
Demo

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.ppr flag 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 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)
  • 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: 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.

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.