Releases: vercel/next.js
v16.2.1-canary.30
Core Changes
- Add next internal upload-trace: #92191
- Perf: Add fast path to isAbsoluteUrl: #91389
- Perf: Don't require watchpack in production: #91387
- Request logging: Fix generate-params time being included in next.js time: #91386
- Perf: Use charCodeAt in removeTrailingSlash: #91384
- Perf: Cache regex in shouldServeStreamingMetadata: #91388
- fix: scope "Pages Router only" comment to default export in next/error: #92566
- Turbopack Build: Remove dev fouc from production bundle: #80935
- fix(hmr): reconnect WebSocket after sleep/wake: #91416
- Handle
targetoption in React Compiler for Pages + React 18: #91500 - [turbopack] Rust dependency caching via sccache: #91873
- trace: detect rage restarts and deleted .next dirs: #92489
Misc Changes
- turbo-tasks-backend: prevent duplicate task restores with restoring bits: #92389
- docs: update details about
unstable_retry()behavior: #91827 - docs: link updateTag from cacheTag reference: #92379
- [test] Stop using deprecated
target: "es5"TypeScript compiler option: #92458 - Docs: Instant docs updates: #92515
- Turbopack: Improve unable to resolve next error: #91394
- [test] Ensure incomplete minimum release age isn't propagated to fixture installs: #92568
- test: skip .next and other build artifacts in writeFiles filter: #92578
- Replace wasmer with wasmtime for SWC plugin WASM engine: #91533
- docs: native db drivers with sync queries: #92572
- turbopack: fix incremental build when module factories are restored from persistent cache: #92569
- CI: Another attempt to fix pnpm versions for next-stats-action on canary: #92550
- [turbopack] fix a debug_assert failure: #92581
Credits
Huge thanks to @sokra, @timneutkens, @devjiwonchoi, @aurorascharff, @eps1lon, @lukesandberg, @icyJoseph, @bgw, @mmastrac, and @wbinnssmith for helping!
v16.2.3
Note
This release is backporting security and bug fixes. For more information about the fixed security vulnerability, please see https://vercel.com/changelog/summary-of-cve-2026-23869. The release does not include all pending features/changes on canary.
Core Changes
- Ensure app-page reports stale ISR revalidation errors via onRequestError (#92282)
- Fix [Bug]: manifest.ts breaks HMR in Next.js 16.2 (#91981 through #92273)
- Deduplicate output assets and detect content conflicts on emit (#92292)
- Fix styled-jsx race condition: styles lost due to concurrent rendering (#92459)
- turbo-tasks-backend: stability fixes for task cancellation and error handling (#92254)
Credits
Huge thanks to @icyJoseph, @sokra, @wbinnssmith, @eps1lon and @ztanner for helping!
v16.2.1-canary.29
Core Changes
- Turbopack: switch from immutable token to path prefix: #92164
- [build info]: distinguish between PPR and fully static routes in gSP: #92518
- [build info]: omit symbol from top level gSP route: #92525
Misc Changes
- CI: Fix issue with conflicting 'engines.pnpm' field in next-stats-action: #92533
- Exclude use tests from react18 testing: #92542
- Fix React18 tests for unstable_io: #92543
Credits
Huge thanks to @bgw, @mischnic, @gnoff, and @ztanner for helping!
v16.2.1-canary.27
Core Changes
- fix: mention params and searchParams in blocking-route error messages: #92360
- CPU prof: Write profiles to .next-profiles instead of .next/cpu-profiles: #92078
- feat: generate root params types: #91019
- fix: resolve function configs in unstable_getResponseFromNextConfig: #92501
- Bundle skills/ directory into next/dist/skills: #92493
- Node.js streams: Fork points: #92252
- fix: replace docs/canary links with stable docs paths in error messages: #92528
Misc Changes
- CI: Remove unused dependencies from next-stats-action dockerfile: #92485
- docs: add note on React canary version to View transitions guide: #92315
- docs: note PPR default in cacheComponents reference: #92378
- Upgrade swc_core 57 -> 58, swc_sourcemap 9 -> 10, swc_plugin_runner 24 -> 25: #91532
- docs: instant-navs draft, samples for build validation: #91850
- docs: add middleware.mdx deprecation stub for discoverability: #92281
- docs: improve blocking-route error page for params discoverability: #92359
- docs: clarify cacheLife() cannot be called at module scope: #92326
- perf: use whole_app_module_graph for get_compilation_issues MCP tool: #92473
- Turbopack: Write trace file to .next-profiles: #92189
- Update Rspack development test manifest: #92502
- Update Rspack production test manifest: #92503
- CI: Use pnpm lockfile for next-stats-action: #92488
- docs: add note on installing
server-onlyin data security guide: #92445 - CI: Use minimumReleaseAge in pnpm workspace files: #92480
Credits
Huge thanks to @bgw, @aurorascharff, @lukesandberg, @icyJoseph, @timneutkens, @sokra, @vercel-release-bot, @abhishekmardiya, @bgub, @TooTallNate, and @gaojude for helping!
v15.5.15
Please refer the following changelogs for more information about this security release:
v16.2.1-canary.26
Core Changes
- next-routing: middleware matching and app request URL normalization: #91859
- docs: clarify serverless runtime behavior for use cache: #92232
Misc Changes
- Adding more system info to the 'initialize project' trace: #92427
- CI: Update and cleanup next-stats-action, force using pnpm 10.33.0: #92475
- turbo-persistence: Use AtomicBool for is_empty() to avoid lock contention: #92481
Credits
Huge thanks to @ijjk, @andrewimm, @bgw, @wwenrr, and @lukesandberg for helping!
v16.2.1-canary.25
Core Changes
- Include more context in macOS Rosetta 2 warning message: #92436
- change the process name of builds: #92411
- Fix styled-jsx race condition: styles lost due to concurrent rendering: #92459
- turbo-tasks: fix hashed cell mode crash on task error (re-land #91576): #92108
- Optimize how we track data for persistence: #89370
- Route Handlers: Fix devRequestTimingInternalsEnd and Turbopack server HMR: #92271
Misc Changes
- turbo-persistence: skip BlockCache for uncompressed (mmap-backed) blocks: #92390
- docs: clarify that proxy/middleware matches static assets by default: #92441
- turbo-persistence: pin referenced BlockCache entries to prevent eviction: #92361
- [test] Skip flaky
client-cache.parallel-routesin production and deploy: #92195 - Fix sst inspect tool to respect
CURRENTand stale sst files: #92414 - [turbopack] add family name to many spans: #92415
- scripts/pr-status: add reply-and-resolve-thread command: #92450
- [test] Regenerate checked-in tsconfig.json files: #92455
Credits
Huge thanks to @sokra, @bgw, @lukesandberg, @icyJoseph, @eps1lon, and @wbinnssmith for helping!
v16.2.1-canary.24
Core Changes
- chore: Upgrade to pnpm 10.x: #92283
- fix(server-hmr): metadata routes overwrite page runtime HMR handler: #92273
- Turbopack: Add a check for node version before allowing workerThreads: #91614
Misc Changes
- turbo-persistence: optimize file syncing: #90542
- Bump turborepo from 2.8.11 to 2.9.4: #92425
- Turbopack: Remove
turbo_tasks::apply_effects, useEffects::applyinstead: #91858
Credits
Huge thanks to @bgw, @wbinnssmith, and @lukesandberg for helping!
v16.2.1-canary.23
v16.2.1-canary.22
Core Changes
- Handle edge runtime in places that import node:stream: #92354
- fix: add AGENTS.md at package root for agent discovery: #92376
- Fix fallback route params case in app-page handler: #91737
Credits
Huge thanks to @timneutkens, @aurorascharff, and @ijjk for helping!