Repository navigation
Releases
v16.5.0-canary.51
v16.5.0-canary.50
Core Changes
- Enable turbopackMinifyBeforeChunking by default on canary releases: #101113
- Turbopack: write smaller/faster client reference manifests: #101312
- Generate managed agent instructions on next dev and respect opt-outs: #101746
- fix(next/image): check the LCP element loading state: #101737
- Run render error reporting outside the work-unit scope: #101597
- Fix RSC navigation and runtime prefetches in
next start: #101357 - Expose full-route RSC prerender classification to adapters: #101309
- Distinguish dynamic rendering from required prerendering: #101511
- turbopack: size chunk items by their minified code when minifying before chunking: #101010
- Prevent repeated prerenders during fallback shell revalidation: #101756
- Enable Turbopack GC by default: #101591
- Exit next dev when the server process is killed by a signal: #101752
- Store "use cache" durability once per entry in server reference manifest: #101674
- Remove
durabilityproperty fromcreateServerModuleMapresults: #101730 - Resolve webpack dev HMR test callback when a build has nothing to apply: #101682
- turbo-tasks: capture effects on multiple workers: #101514
- Turbopack: report routes nested inside catch-all segments instead of panicking in dev: #101697
Example Changes
- docs: standalone env file precedence and with-docker-multi-env secrets: #101728
- examples: bump Alpine Docker base images to Node 24: #101215
Misc Changes
- docs: place shell param-order rule with build-time shells: #101680
- turbo-persistence: don't modify the directory on read-only open: #101779
- Optimize inline_atom: #101778
- docs: clarify standalone .env copying and the next-server tracing exclude key: #101699
- docs: Add more clarification about SVG security policies: #101311
- Add a 48-hour Cargo dependency cooldown: #101765
- Update Rust nightly to 2026-11-13: #101764
- Upgrade React from
df6aa4ec-20261112todf6aa4ec-20261112: #101760 - turbo-tasks-backend: store task edges in flat EdgeSets: #101489
- turbo-tasks-backend: add a profile driver to the keyed dependencies benchmark: #101731
- docs: correct deploymentId environment variable precedence: #101740
- Turbopack: list compact re-export namespace keys in code unit order: #101494
- turbo-tasks-backend: fix transient root test race: #101700
- Scaffold separate entrypoint for Turbopack NFT functionality: #94356
- Turbopack: read UnusedReferences by key in ESM export code generation: #101626
- Require real deployment coverage for application behavior: #101510
- Turbopack: read UnusedReferences by key in pattern mapping: #101725
- test: replace files atomically in patchFile: #101683
- turbo-persistence: faster key block sorting: #100335
- turbopack: return small free ranges to the OS after project shutdown: #101623
- Turbopack: return freed memory eagerly while shutting down the project: #101589
- turbo-persistence: validate sst_inspect block reads with BlockOffsets: #100313
Credits
Huge thanks to @lukesandberg, @icyJoseph, @aurorascharff, @bgw, @wbinnssmith, @unstubbable, @sokra, and @mischnic for helping!
v16.5.0-canary.49
Core Changes
- Optimize NFT base path mapping: #101151
- Fix
ImageResponseprerendering with--debug-prerender: #101678 - Upgrade React from
1620f7b9-20261111todf6aa4ec-20261112: #101673 - Fix ESLint link rule for constant and mapped hrefs: #101641
- Complete metadata references and fix descriptor resolution: #101547
- docs: clarify dynamicParams with Cache Components: #100249
- Test Proxy Link headers across cache revalidation: #101620
- Remove obsolete prerender abort workarounds: #101621
- Use forward slashes in route bundle stats chunk paths: #101617
- Preserve build diagnostics during worker shutdown: #101598
Misc Changes
- turbo-tasks-backend: keep the active count inline: #101486
- turbopack: use static for shared rcstr! values and hardcode magic identifiers: #101686
- docs: clarify synchronous IO after request data: #101685
- turbo-persistence: remove ParallelScheduler::block_in_place: #101544
- Turbopack: release freed memory right after project shutdown: #101529
- turbo-tasks-backend: read collectibles and update the reader dependency atomically: #101548
- [internal-skills] fetch CI status on demand instead of blocking on --wait: #101661
- Fix pnpm-lock.yaml for bench/large-app-router after React upgrade: #101642
- bench: add generated large App Router benchmark for Turbopack scaling: #101502
- test: fix flaky vary-params-base-dynamic prefetch collection: #101531
- test: fit cold-cache npm install in create-next-app template test timeout: #101625
- docs: add native DOM examples to Activity guide: #101581
- turbo-persistence: report batch_get misses from batch_lookup_entry: #101615
- create-next-app: exit with code 1 when installation fails: #101624
- Strengthen documentation review criteria: #101622
- Turbopack: skip unmatched siblings when building app loader trees: #101535
- docs: explain runtime config removal on the middleware-to-proxy error page: #101616
- Turbopack: start whole-app client style groups earlier in production builds: #101612
- turbo-tasks: don't make parentless transient tasks aggregation roots: #101614
- turbo-tasks: avoid redundant aggregation roots and root-upper optimization cascades: #101604
- turbo-persistence: make batch_get callback-oriented: #100678
Credits
Huge thanks to @lukesandberg, @mischnic, @aurorascharff, @sokra, @unstubbable, @eps1lon, and @icyJoseph for helping!
v16.5.0-canary.48
Core Changes
- Prerender route handlers that await immediates: #101593
- Fix orphaned detached telemetry flush processes: #101588
- Upgrade React from
e84e1492-20261031to1620f7b9-20261111: #101587 - docs: clarify tag invalidation client effects: #101504
- Keep dev overlay errors across no-op webpack hot updates: #101532
Misc Changes
- Turbopack: don't grow effect vectors inside the analyzer arena: #101480
- Fix metadata route selection with
--debug-build-paths: #101585 - eval: generate the docs pointer from the tested Next.js package: #101558
- Turbopack: scale default disk write concurrency: #101519
- eval: correct graders for Proxy, instant navigation, and category prefetching: #101523
- docs: clarify Server Actions configuration: #101549
- Turbopack: add build cache portability e2e test and fix location-dependent tasks: #100780
- Turbopack: replace SwcComments with a lightweight MutableComments store: #101543
- turbo-tasks-backend: merge aggregated data updates for new followers: #100435
- test: fix keep-alive socket reuse in CSS HMR race helper: #101530
- turbo-tasks: count task executions in task statistics: #101025
- test: fix repeated-slashes router push navigation race: #101528
- next-core: deserialize next.config env and output file tracing globs into typed maps: #100971
- turbo-tasks: add OrderedJsonValue/OrderedJsonMap with key-order-sensitive equality: #100964
- turbo-tasks: use OrderedAutoMap/OrderedAutoSet for order-observing values: #100940
- auto-hash-map: add positional access and IndexMap/IndexSet conversions for ordered maps: #101497
- test: close lingering prerender-export server connections: #101527
- test: fix flaky app-root-params-getters/simple: #101525
- test: fix flaky dev-validation-worker-source-maps: #101524
- turbo-tasks-malloc: use official mimalloc Rust bindings (v3.6.1): #101518
- docs: explain complementary Web Vitals and custom metrics APIs: #98968
Credits
Huge thanks to @unstubbable, @timneutkens, @jimmyhmiller, @aurorascharff, @sokra, @lukesandberg, and @adityareddy-dev for helping!
v16.5.0-canary.47
Core Changes
- fix(next/image): detect distortion using intrinsic proportions: #101349
- Write CPU profiles for next build static workers: #100614
Misc Changes
- turbo-tasks-backend: process aggregation edge removals after additions and balancing: #100892
- turbo-tasks-backend: track early aggregation edge removals as follower debt instead of retrying: #100873
- Skip unused URL effects in web worker constructors: #101297
- Turbopack: discover snapshot fixtures with custom entries: #101495
- turbo-tasks: Add AutoSet and OrderedAutoSet benchmarks: #100952
- turbo-tasks: Support IndexMap backed AutoMap and AutoSet: #100948
- Turbopack: fix scope-hoisted imports of missing exports: #101482
- Turbopack: don't suggest already-imported names for missing exports: #101479
Credits
Huge thanks to @sokra, @jimmyhmiller, and @aurorascharff for helping!
v16.5.0-canary.46
Core Changes
- Resolve parallel route params from the URL when predicting routes: #101477
- Prevent prerenders from changing foreground response status: #101295
- Release fetch cache locks when origin fetch throws synchronously: #101461
- Don't block the dev overlay on the npm registry version check: #100628
- Fix deployed RSC responses after static-to-partial revalidation: #101454
- docs: enable the testing API at build and server startup: #101443
Misc Changes
- turbo-tasks: pack CellKey into one word: #101393
- Turbopack: use bincode fixint encoding for ids and persisted hashes: #101419
- [evals] Move fixtures to AI SDK 7: #101470
- Turbopack: migrate CSS snapshot tests to execution tests: #101232
- Turbopack: migrate basic snapshot tests to execution tests: #101231
- Turbopack: migrate tree-shaking and scope-hoisting snapshot tests to execution tests: #101230
- Turbopack: migrate ESM export optimization snapshot tests to execution tests: #101229
- Turbopack: migrate CommonJS tree-shaking snapshot tests to execution tests: #101228
- Turbopack: migrate comptime snapshot tests to execution tests: #101227
- Turbopack: migrate import and resolution snapshot tests to execution tests: #101211
- Require real router interactions in navigation tests: #101462
- [create-next-app] Output next steps commands when creating app from template: #99769
Credits
Huge thanks to @lukesandberg, @acdlite, @unstubbable, @swarnava, @sokra, @ShakilUrRehman21, and @aurorascharff for helping!
v16.4.6
Note
This release is backporting bug fixes. It does not include all pending features/changes on canary.
Core Changes
- [lts-active] Pin Tailwind to 4.3.3 in create-next-app and tests (#101061, #101176) (#101307)
- [lts-active] Automatically compress route handler responses if not already compressed (#101280)
- [lts-active] Turbopack GC fixes for dev (#100279, #100370) (#101308)
Credits
Huge thanks to @lukesandberg and @eps1lon for helping!
v16.5.0-canary.45
Core Changes
- docs: clarify agent feedback workspace context: #101358
Misc Changes
- Turbopack: support turbopackIgnore on new URL(): #99965
- turbo-tasks-backend: release unused capacity in task storage: #101344
- turbopack-ecmascript: store AstPathTrie nodes as parent and kind indices: #101370
Credits
Huge thanks to @lukesandberg and @aurorascharff for helping!
v16.5.0-canary.44
Core Changes
- docs: clarify refresh client cache behavior: #101160
- Link Cache Components config errors to the migration guide: #101348
- Bump
is-animated@3.0.19: #101173
Example Changes
- docs: use visible route locators with Cache Components: #101346
Misc Changes
- docs: fix missing Roboto_Mono import in Pages Router font example: #88849
- docs: fix crossOrigin wording: #97462
- fix: update MDN link in route.mdx: #100753
- docs: fix link reference for child Layout in documentation: #94327
- docs: fix two links broken by the middleware to proxy rename: #99375
- docs: clarify Image priority migration and loading choices: #101345
- docs: clarify metadata image precedence: #101249
- Upgrade Rust toolchain to nightly-2026-11-06: #101279
Credits
Huge thanks to @codeandcore, @Rezakarimzadeh98, @robsimmons, @fediev, @adityareddy-dev, @aurorascharff, @styfle, and @mischnic for helping!
v16.5.0-canary.43
Core Changes
- fix(app-render): stop prerendered Link headers from accumulating on revalidation: #100960
- Align eslint-config-next TypeScript peer with typescript-eslint: #101247
- Reduce header allocations in NodeNextResponse: #101225
- [image-optimizer] Move next/image-optimizer-transform under the next/experimental namespace: #101252
- [image-optimizer] Don't use NextConfigComplete for the imageOptimizerTransform public API: #101184
- Improve Request Insights context menus and trace interactions: #97796
- Build and analyze in one pass: #99962
Misc Changes
- docs: clarify SVG handling in the Image Optimization API: #101301
- Turbopack: use hash collections for turbo-tasks values whose order is unobserved: #100939
- Turbopack: don't split page entries into a facade: #101152
- Turbopack: replace Next.js entry kinds with an opaque entry tag: #101291
- docs: map BFF proxy example routes to fixed backend endpoints: #101286
- docs: explain ESLint setup with TypeScript 7: #101246
- Durable use cache conditional reads: #101283
- docs: read the URL in history API event handlers instead of calling hooks: #101224
- review: escalate Next.js concepts in Turbopack code: #101278
- test: enable HMR dependency acceptance coverage for webpack: #101196
- test: Replace
itTurbopackwith test gates: #101195
Credits
Huge thanks to @styfle, @lukesandberg, @linyiru, @icyJoseph, @kassens, @mischnic, @eps1lon, @bgw, @DavidIlie, and @wbinnssmith for helping!