Next.js

Frameworks & LibrariesMIT

The React framework for the web.

Latest v16.3.4 · by VercelWritten in JavaScriptWebsitevercel/next.jsRSS

Branches

16
v16.3.4
15
v15.5.25

Release activity

Release activity — 81 releases across 41 days since Jul 20, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Jul 20, 2026. Older weeks are hidden at this screen width.
JunJulAugSep
SundayNo releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 20261 release on Aug 16, 20261 release on Aug 23, 2026No releases on Aug 30, 2026No releases on Sep 6, 2026
Monday1 release on Jul 20, 2026No releases on Jul 27, 20263 releases on Aug 3, 20262 releases on Aug 10, 20261 release on Aug 17, 20263 releases on Aug 24, 20263 releases on Aug 31, 20261 release on Sep 7, 2026
Tuesday5 releases on Jul 21, 20265 releases on Jul 28, 20262 releases on Aug 4, 20262 releases on Aug 11, 20262 releases on Aug 18, 20264 releases on Aug 25, 20261 release on Sep 1, 20262 releases on Sep 8, 2026
Wednesday1 release on Jul 22, 2026No releases on Jul 29, 20262 releases on Aug 5, 20262 releases on Aug 12, 20261 release on Aug 19, 2026No releases on Aug 26, 20261 release on Sep 2, 2026No releases on Sep 9, 2026
Thursday3 releases on Jul 23, 20262 releases on Jul 30, 2026No releases on Aug 6, 20262 releases on Aug 13, 20261 release on Aug 20, 20261 release on Aug 27, 20261 release on Sep 3, 2026
FridayNo releases on Jul 24, 20261 release on Jul 31, 20264 releases on Aug 7, 20263 releases on Aug 14, 20263 releases on Aug 21, 20262 releases on Aug 28, 20262 releases on Sep 4, 2026
Saturday4 releases on Jul 25, 20261 release on Aug 1, 20261 release on Aug 8, 20261 release on Aug 15, 20261 release on Aug 22, 20261 release on Aug 29, 20261 release on Sep 5, 2026

81 releases since Jul 20, 2026, busiest day 5

Changelog

What changed from 15 to 16
Filter releases by branch
81 of 81 releases

v16.4.0-canary.22

Pre-release
Added 2
  • Add version for loaders api
  • Add .resolve to loaders api
Changed 1
  • Let a GC pass wind down when it is blocking an operation in turbo-tasks-backend

From Next.js

Misc Changes
  • Add version for loaders api: #98377
  • turbo-tasks-backend: let a GC pass wind down when it is blocking an operation: #96676
  • docs: preserve Next.js development state: #98276
  • Adds .resolve to loaders api: #98361
Credits

Huge thanks to @jimmyhmiller, @lukesandberg, and @aurorascharff for helping!

View originalPermalink
How v16.4.0-canary.22 went

v16.4.0-canary.21

Pre-release
Added 1
  • Add unstable_navigation and unstable_prefetch API references to documentation
Changed 8
  • Bump swc to v78
  • Create next.config.ts when generating apps with pnpm new-test
  • Accept LayoutProps in App Router migration for evals
  • Run deploy tests against local JavaScript changes by default
  • Resolve workspace:* packages to the version under test
  • Add instant validation for caches excluded from prerenders
  • Model caches with stale < MIN_SHELL_STALE as prefetch-only data
  • Document excluding content from a prefetch in the prefetching guide
Fixed 3
  • Fix missing runtime-follow up if hints are stale
  • Fix turbopacks webpack loader setup to support options being optional
  • Stabilize server action HMR update

From Next.js

Misc Changes
  • Bump to swc v78: #98268
  • Create next.config.ts when generating apps with pnpm new-test: #98364
  • test(evals): accept LayoutProps in App Router migration: #98365
  • [test] Run deploy tests against local JavaScript changes by default: #98353
  • [test] Resolve workspace:* packages to the version under test: #98330
  • turbo-tasks: explicit GC root anchoring + cross-session orphan reclamation: #96857
  • [PPF] Fix missing runtime-follow up if hints are stale: #98278
  • Instant validation for caches excluded from prerenders: #98342
  • [PPF] Model caches with stale < MIN_SHELL_STALE as prefetch-only data: #98339
  • docs: document excluding content from a prefetch in the prefetching g…: #98175
  • docs: add unstable_navigation and unstable_prefetch API references: #98122
  • Fix turbopacks webpack loader setup to support options being optional: #98270
  • [ci] Align build-and-deploy triggers with build-and-test: #98331
  • test: stabilize server action HMR update: #98322
Credits

Huge thanks to @mischnic, @lubieowoce, @aurorascharff, @unstubbable, @eps1lon, @lukesandberg, @icyJoseph, @jimmyhmiller, and @sokra for helping!

View originalPermalink
How v16.4.0-canary.21 went

v16.4.0-canary.20

Pre-release
Fixed 1
  • Fix flaky successive HMR changes test

From Next.js

Misc Changes
  • test(turbopack): remove dead top-level task unmarks: #98246
  • Fix flaky successive HMR changes test: #97610
  • docs: Remove version label from Turbopack in Pages Router: #98316
  • turbo-tasks-backend: fix strongly consistent read hanging on a canceled task: #98312
Credits

Huge thanks to @lukesandberg, @sokra, and @icyJoseph for helping!

View originalPermalink
How v16.4.0-canary.20 went

v16.4.0-canary.19

Pre-release
Fixed 1
  • route info segment overrides not updating in dev overlay

From Next.js

Misc Changes
  • fix: route info segment overrides not updating in dev overlay: #96968
Credits

Huge thanks to @mezotv for helping!

View originalPermalink
How v16.4.0-canary.19 went

v16.4.0-canary.18

Pre-release
Added 1
  • add API reference pages for skipProxyUrlNormalize and skipTrailingSlashRedirect
Fixed 2
  • fix source field in CSS sourcemaps in Turbopack
  • track dynamic accesses in final runtime prerenders

From Next.js

Misc Changes
  • Turbopack: fix source field in CSS sourcemaps: #88225
  • fix: track dynamic accesses in final runtime prerenders: #98255
  • docs: add API reference pages for skipProxyUrlNormalize and skipTrailingSlashRedirect: #97967
Credits

Huge thanks to @Xanaado, @lubieowoce, and @icyJoseph for helping!

View originalPermalink
How v16.4.0-canary.18 went

v16.4.0-canary.17

Pre-release
Changed 1
  • Turn on the adapter route collapses by default
Fixed 1
  • Suppress missing package manager errors in next info

From Next.js

Misc Changes
  • Turn on the adapter route collapses by default: #98218
  • fix: suppress missing package manager errors in next info: #97946
Credits

Huge thanks to @unstubbable and @marcoshernanz for helping!

View originalPermalink
How v16.4.0-canary.17 went

v16.4.0-canary.16

Pre-release
Changed 4
  • Return client errors for unrecognized Server Actions
  • Skip ignored files during server tracing in Turbopack
  • Upgrade web-vitals to v6 and report soft navigations
  • Upgrade React from 21c89c9f-20260901 to f4e439e1-20260902

From Next.js

Misc Changes
  • test: remove stale deploy manifest exclusions: #98051
  • Enable hourly next-maintainer auto-close workflow: #98225
  • Return client errors for unrecognized Server Actions: #98123
  • Add Next Maintainer auto-close workflow: #98197
  • perf(turbopack): skip ignored files during server tracing: #97475
  • docs: note that experimental.taint taints process.env: #98145
  • test: preserve static params during Cache Components migration: #98209
  • Upgrade web-vitals to v6 and report soft navigations: #97232
  • Upgrade React from 21c89c9f-20260901 to f4e439e1-20260902: #98188
Credits

Huge thanks to @gnoff, @marcoshernanz, @jimmyhmiller, @icyJoseph, @aurorascharff, and @timneutkens for helping!

View originalPermalink
How v16.4.0-canary.16 went

v16.4.0-canary.15

Pre-release
Changed 4
  • Reduce Turbopack cache size with per-family compression
  • Bump swc to v77
  • Upgrade React from ff7445e6-20260831 to 21c89c9f-20260901
  • Implement parent_count-driven garbage collection in turbo-tasks-backend
Removed 1
  • Remove the worker thread for turbopack builds

From Next.js

Misc Changes
  • Reduce Turbopack cache size with per-family compression: #97714
  • [test] Skip hooks of suites skipped by a lazy @force-gate: #98169
  • docs: local development: Rewrite docker section, add Windows Dev Drive and WSL2 instructions: #98164
  • Bump swc to v77: #97407
  • Upgrade React from ff7445e6-20260831 to 21c89c9f-20260901: #98147
  • turbo-tasks-backend: parent_count-driven garbage collection: #97282
  • Remove the worker thread for turbopack builds: #96862
  • turbo-tasks-malloc: address review feedback on #97761: #98153
Credits

Huge thanks to @lukesandberg, @eps1lon, @bgw, and @mischnic for helping!

View originalPermalink
How v16.4.0-canary.15 went

v16.4.0-canary.14

Pre-release
Changed 2
  • turbo-tasks-malloc now reports memory from mimalloc
  • Remove expired sharp release age exclusions
Removed 1
  • Remove Edge runtime handling in use-cache-wrapper

From Next.js

Misc Changes
  • turbo-tasks-malloc: report memory from mimalloc: #97761
  • Remove Edge runtime handling in use-cache-wrapper: #98139
  • Skip discussions in the issue_lock workflow: #98146
  • [ci] Fix issue_lock: #97755
  • docs: document preloading with Cache Components: #97864
  • chore: Remove expired sharp release age exclusions: #98120
Credits

Huge thanks to @lukesandberg, @mischnic, @eps1lon, @aurorascharff, and @styfle for helping!

View originalPermalink
How v16.4.0-canary.14 went

v16.4.0-canary.13

Pre-release
Changed 9
  • Shorten use cache messages and unify them into one factory
  • Upgrade React from 29d9d318-20260826 to ff7445e6-20260831
  • Use commander for CLI argument parsing
  • Pass in original searchParams for private-cache pages
  • Remove unused code from image optimizer
  • Improve test cache handler implementations
Fixed 2
  • Stop requiring the removed viewTransition flag in agent-043
  • Fix Turbopack HMR recovery after dropped connections

From Next.js

Misc Changes
  • evals: stop requiring the removed viewTransition flag in agent-043: #98116
  • errors: shorten "use cache" messages and unify them into one factory: #94300
  • test: add adoption skill evals: #97759
  • Upgrade React from 29d9d318-20260826 to ff7445e6-20260831: #98113
  • [ci] Simplify upload-preview-tarballs workflow: #98109
  • devlow: use commander for cli argument parsing: #93860
  • [PPF] Pass in original searchParams for private-cache pages: #98041
  • docs: document create-next-app Cache Components prompt and flag: #97798
  • lazy server hmr: #96566
  • Fix Turbopack HMR recovery after dropped connections: #97966
  • test: Improve test cache handler implementations: #98098
  • docs: Fix the documented contract for custom cache handlers: #98039
  • chore: remove unused code from image optimizer: #98060
  • docs: add layout stability guidance for videos and iframes: #98070
  • tests: Improve use-cache-cross-deployment tests: #98049
Credits

Huge thanks to @gaojude, @aurorascharff, @eps1lon, @wbinnssmith, @lubieowoce, @icyJoseph, @mischnic, @unstubbable, and @styfle for helping!

View originalPermalink
How v16.4.0-canary.13 went

v16.3.4

Latest
Changed 1
  • Re-enable AVIF Image Optimization
Fixed 3
  • Fix infinite recursion in testmode passthrough fetch
  • Fix build error when aliasing typescript to @typescript/typescript6
  • Fix unset crossOrigin in Turbopack manifests

From Next.js

Follow-up release to v16.3.3 re-enabling AVIF Image Optimization (#97949).

The following bug fixes have been backported. It does not include all pending features/changes on canary.

  • testmode: Fix infinite recursion in testmode passthrough fetch (#97691)
  • Fix build error when aliasing typescript to @typescript/typescript6 (#97997)
  • Fix unset crossOrigin in Turbopack manifests (#97930)
Credits

Huge thanks to @eps1lon, @mischnic, and @timneutkens for helping!

View originalPermalink
How v16.3.4 went

v15.5.25

Fixed 1
  • Re-enabled AVIF Image Optimization when newer versions of sharp are installed

From Next.js

Follow-up release to v15.5.24 re-enabling AVIF Image Optimization when newer versions of sharp are installed (#97954).

View originalPermalink
How v15.5.25 went

v16.4.0-canary.12

Pre-release
Changed 3
  • Store keys in key order in SST blocks that omit hashes
  • Honor non-interactive mode in upgrade codemod prompts
  • Transform .mjs files with Next.js codemods

From Next.js

Misc Changes
  • [ci] Remove the popular workflow and its action: #97753
  • Store keys in key order in SST blocks that omit hashes: #97480
  • Honor non-interactive mode in upgrade codemod prompts: #98030
  • Transform .mjs files with Next.js codemods: #98029
Credits

Huge thanks to @eps1lon, @lukesandberg, and @devjiwonchoi for helping!

View originalPermalink
How v16.4.0-canary.12 went

v16.4.0-canary.11

Pre-release
Changed 7
  • More granular cache keys for use-cache entries
  • Refactor image optimizer into lightweight transform module
  • Turbopack: enable export mangling by default in production builds
  • Turbopack: mangle exported names for smaller bundle sizes
  • Turbopack: allow get_definable_name to return a list
  • Turbopack: unify member and in handling
  • Turbopack: add next_config.use_react_experimental getter
Fixed 4
  • Fix optimistic routing for encoded dynamic params
  • Fix intercepted route params after Proxy rewrites
  • Fix navigation() in prospective runtime prerenders
  • Guard filesystem reads against unresolved symlinks

From Next.js

Misc Changes
  • Fix optimistic routing for encoded dynamic params: #97948
  • Fix intercepted route params after Proxy rewrites: #97953
  • [PPF] Fix navigation() in prospective runtime prerenders: #98000
  • Revert "test: re-enable sync IO root coverage": #98050
  • Turbopack: drop rust analyzer skip annotation: #98047
  • Turbopack: add next_config.use_react_experimental getter: #98032
  • More granular cache keys for use-cache entries: #95233
  • [ci] Remove dormant code_freeze workflow: #97756
  • test: re-enable sync IO root coverage: #97996
  • [ci] Remove the unused wrong-issue-template workflow and action: #97749
  • [image-optimizer] Refactor into lightweight transform module: #97988
  • [ci] Remove the stale-issue workflow: #97758
  • [ci] Use presigned URLs to upload preview builds: #97922
  • Turbopack: allow get_definable_name to return a list: #97984
  • [ci] Run flake detection and new deploy tests when merged and on backport branches: #97991
  • docs(examples): document env var handling in the Docker examples: #97968
  • Turbopack: unify member and in handling: #97985
  • Update outdated snapshots: #98011
  • Guard filesystem reads against unresolved symlinks: #97902
  • Turbopack: enable export mangling by default in production builds: #97676
  • Turbopack: mangle exported names for smaller bundle sizes: #97672
Credits

Huge thanks to @marcoshernanz, @lubieowoce, @mischnic, @eps1lon, @gnoff, @styfle, @icyJoseph, and @sokra for helping!

View originalPermalink
How v16.4.0-canary.11 went

v16.4.0-canary.10

Pre-release
Added 2
  • Add Cache Components option to create-next-app
  • Support immutable static assets with `output: 'export'`
Changed 5
  • Upgrade Turbopack to hashbrown 0.15
  • Upgrade React from `f789f203-20260825` to `29d9d318-20260826`
  • Turbopack: shorten CSS module class names
  • Turbopack: widen the chunk ident hash from 7 to 13 base38 chars
  • Turbopack: allow compiling turbopack-node without a pool backend
Fixed 7
  • Prune incomplete parallel route matchers
  • Omit undeclared children slots from app routes
  • Fix request-context retention in the default use cache handler
  • Retain interception route host slots
  • Turbopack: don't replace single-arg calls with argument in analyzer
  • Fix build error when aliasing `typescript` to `@typescript/typescript6`
  • Turbopack: call loadActionManifest for app-route
Deprecated 1
  • Pages Router: Deprecate React 18 support

From Next.js

Misc Changes
  • Upgrade Turbopack to hashbrown 0.15: #97808
  • ci: skip framework tests for agent evals and skills: #97998
  • Expand Turbopack dev cleanup: #97833
  • Add Cache Components option to create-next-app: #97695
  • Mark deploy release test skill as internal: #97961
  • Turbopack: shorten CSS module class names: #97944
  • Prune incomplete parallel route matchers: #97108
  • Upgrade React from f789f203-20260825 to 29d9d318-20260826: #97995
  • docs(skills): preserve prefetched UI during Partial Prefetching adoption: #97712
  • Omit undeclared children slots from app routes: #97184
  • Turbopack: widen the chunk ident hash from 7 to 13 base38 chars: #97945
  • Fix request-context retention in the default use cache handler: #97941
  • docs: improve discovery summaries: #97982
  • test: add test for local font with deployment id: #97987
  • Retain interception route host slots: #97242
  • test: disable flaky sync-io-blocks-root.test.ts: #97986
  • [test] Drain build output before start: #97947
  • Expose durableUseCacheEntries config in workStore: #97926
  • Pages Router: Deprecate React 18 support: #97689
  • Turbopack: call loadActionManifest for app-route: #97921
  • [test] Unpin Vercel CLI version: #97974
  • Turbopack: don't replace single-arg calls with argument in analyzer: #95277
  • Turbopack: allow compiling turbopack-node without a pool backend: #97943
  • Support immutable static assets with output: 'export': #97711
  • Fix build error when aliasing typescript to @typescript/typescript6: #97942
  • ci: remove pull_request_stats workflow: #97792
Credits

Huge thanks to @lukesandberg, @aurorascharff, @wbinnssmith, @acdlite, @mlekhi, @mischnic, @gnoff, @sokra, @dacgray, @molebox, @styfle, @lubieowoce, and @timneutkens for helping!

View originalPermalink
How v16.4.0-canary.10 went

v16.4.0-canary.9

Pre-release
Added 2
  • Turbopack expose list of non-inlined env vars
  • Stub HTTP on wasm targets in turbo-tasks-fetch
Changed 7
  • Replace resumed render bailout error with ReactDOM.browser behind a flag
  • Replace useSearchParams bailout error with ReactDOM.browser behind a flag
  • Replace CSRBailout error with ReactDOM.browser behind a flag
  • Re-enable AVIF image optimization
  • Improve Pat::Assign modelling in Turbopack analyzer
  • Upgrade rustc to nightly-2026-08-20
  • Upgrade React from bd6ea412-20260824 to f789f203-20260825
Fixed 5
  • Don't drop client references when the concatenated module id is 0
  • Reject non-2xx internal image responses in next/image
  • Don't report a client-aborted RSC stream as a render error
  • Fix Turbopack re-export cycle deadlock
  • Make TaggedValue usable on wasm in turbo-rcstr

From Next.js

Misc Changes
  • fix: don't drop client references when the concatenated module id is 0: #97936
  • Replace resumed render bailout error with ReactDOM.browser behind a flag: #96844
  • Replace useSearchParams bailout error with ReactDOM.browser behind a flag: #96843
  • Replace CSRBailout error with ReactDOM.browser behind a flag: #96826
  • fix(next/image): reject non-2xx internal image responses: #97957
  • [test] Pin Vercel CLI to Node 20.9 compatible version: #97960
  • Re-enable AVIF image optimization: #97931
  • Don't report a client-aborted RSC stream as a render error: #96715
  • [PPF] Only track runtime accesses when the promise is used: #97165
  • Fix Turbopack re-export cycle deadlock: #97933
  • Port React's @gate test directive to the e2e harness: #96228
  • Migrate from box_patterns to deref_patterns: #97924
  • Turbopack: expose list of non-inlined env vars: #95310
  • feat(turbo-tasks-fetch): stub HTTP on wasm targets: #97585
  • fix(turbo-rcstr): make TaggedValue usable on wasm: #97577
  • docs: explain origin matching for allowedOrigins and allowedDevOrigins: #97805
  • Turbopack: improve Pat::Assign modelling in analyzer: #97867
  • Upgrade rustc to nightly-2026-08-20: #97665
  • Upgrade React from bd6ea412-20260824 to f789f203-20260825: #97887
  • [test] Fix flaky build CLI output capture: #97900
  • turbo-tasks-backend: parent_count reference counting: #95976
Credits

Huge thanks to @jgruica, @devjiwonchoi, @zeeshan56656, @eps1lon, @lazerg, @lubieowoce, @sokra, @acdlite, @mischnic, @icyJoseph, and @lukesandberg for helping!

View originalPermalink
How v16.4.0-canary.9 went

v16.4.0-canary.8

Pre-release
Added 2
  • Add evals for whether agents actually use Next.js
  • Resolve `/`-rooted imports from the project directory in Turbopack
Changed 5
  • Judge behavior instead of matching source text in evals
  • Bump @vercel/agent-eval to 2.2.1
  • Use short-lived access tokens for preview-build uploads instead of static token
  • Simplify Turbopack ecmascript effect queue
  • Update default Create Next App favicon
Fixed 2
  • Fix Turbopack resolution through chained symlinks
  • Turbopack correctly trace through TypeScript `__importStar`

From Next.js

Misc Changes
  • Fix Turbopack resolution through chained symlinks: #97825
  • Add evals for whether agents actually use Next.js: #97816
  • evals: judge behavior instead of matching source text: #97826
  • Bump @vercel/agent-eval to 2.2.1: #97885
  • feat(turbopack): resolve /-rooted imports from the project directory: #97799
  • [ci] Use short-lived access tokens for preview-build uploads instead of static token: #97256
  • Turbopack: correctly trace through TypeScript __importStar: #97697
  • [turbopack] simplify ecmascript effect queue: #97771
  • Update default Create Next App favicon: #97634
Credits

Huge thanks to @marcoshernanz, @gaojude, @sokra, @eps1lon, @mischnic, and @aurorascharff for helping!

View originalPermalink
How v16.4.0-canary.8 went

v16.4.0-canary.7

Pre-release
Changed 4
  • Disable avif image optimization in next/image
  • Replace crossterm with owo-colors in turbopack-cli-utils
  • Stop printing a stack frame for error message text
  • Upgrade React from eafeac09-20260819 to bd6ea412-20260824
Fixed 11
  • Fix ISR misses with backslashes in segments when deployed on Windows
  • Don't enable SWC's plugin host for wasm targets
  • Make process_pool inert on wasm in turbopack-node
  • Make the SWC wasm-plugin backend native-only in turbopack
  • Skip the ctrl-c handler on wasm in turbopack-trace-utils
  • Create symlinks through the WASI API on wasi in turbo-tasks-fs

From Next.js

Misc Changes
  • Fix ISR misses with backslashes in segments when deployed on Windows: #97876
  • [next/image]: disable avif image optimization: #97875
  • fix(wasm): don't enable SWC's plugin host for wasm targets: #97859
  • fix(turbopack-node): make process_pool inert on wasm: #97858
  • fix(turbopack): make the SWC wasm-plugin backend native-only: #97857
  • fix(turbopack-trace-utils): skip the ctrl-c handler on wasm: #97856
  • refactor(turbopack-cli-utils): replace crossterm with owo-colors: #97855
  • fix(turbo-tasks-fs): create symlinks through the WASI API on wasi: #97854
  • fix(turbo-tasks): compile EventListener::wait on wasm: #97853
  • fix(turbo-rcstr): allow the napi feature on wasm targets: #97852
  • fix(next-napi-bindings): detect the target, not the host, in build.rs: #97576
  • Stop printing a stack frame for error message text: #97829
  • docs: clarify revalidateTag profile expire semantics: #97836
  • docs: param access on use-server: #97865
  • docs: fix typos and correctness issues in App Router docs: #97823
  • Add deploy release test skill: #97563
  • [test] Deflake the page config test for a string config value: #97848
  • test: stabilize read-only page recreation: #97674
  • Show the errors of an AggregateError behind a cause: #97830
  • Upgrade React from eafeac09-20260819 to bd6ea412-20260824: #97812
  • fix: reuse a single drain listener when piping Node streams through gzip: #97698
  • test: preserve server cache after compile error: #97724
Credits

Huge thanks to @eps1lon, @sokra, @unstubbable, @icyJoseph, @timneutkens, @hamidrezahanafi, and @wbinnssmith for helping!

View originalPermalink
How v16.4.0-canary.7 went

v16.3.3

Security 2
  • Fix unauthenticated remote code execution on windows-hosted servers
  • Fix unauthenticated remote code execution in Image Optimization API when AVIF files are used

From Next.js

View originalPermalink
How v16.3.3 went

v15.5.24

Security 2
  • Fix unauthenticated remote code execution vulnerability on windows-hosted servers
  • Fix unauthenticated remote code execution vulnerability in Image Optimization API when AVIF files are used

From Next.js

View originalPermalink
How v15.5.24 went

v16.4.0-canary.6

Pre-release
Changed 4
  • turbo-tasks now executes scheduled tasks inline when they are read
  • Sweep stale Turbopack output from distDir on dev startup
  • Turbopack improves file existence error handling in realpath_with_links and in module resolution
  • Write traces with buffered synchronous IO
Fixed 2
  • Revert record fallback cache lifetime for blocking PPR routes
  • Fix metadata prefetch cache key for search params

From Next.js

Misc Changes
  • turbo-tasks: execute scheduled tasks inline when they are read: #96808
  • Revert "Record fallback cache lifetime for blocking PPR routes (#97821)": #97835
  • Sweep stale Turbopack output from distDir on dev startup: #97591
  • Fix metadata prefetch cache key for search params: #97729
  • Turbopack: Improve file existence error handling in realpath_with_links and in module resolution: #97717
  • Write traces with buffered synchronous IO: #96874
Credits

Huge thanks to @sokra, @acdlite, @wbinnssmith, @marcoshernanz, @bgw, and @lukesandberg for helping!

View originalPermalink
How v16.4.0-canary.6 went

v16.4.0-canary.5

Pre-release
Changed 3
  • Record fallback cache lifetime for blocking PPR routes
  • Split cold TurboMalloc accounting paths for performance improvement
  • Deduplicate the regress, wat/wasmparser and base64 dependencies

From Next.js

Misc Changes
  • Record fallback cache lifetime for blocking PPR routes: #97821
  • Document catchError for the Pages Router: #97748
  • clippy: allow needless late init where it makes sense: #96410
  • Turbopack: emit/collect: #96631
  • docs: note that response headers must be set before calling handle() in a custom server: #97693
  • Deduplicate the regress, wat/wasmparser and base64 dependencies: #97762
  • perf: split cold TurboMalloc accounting paths: #97767
Credits

Huge thanks to @acdlite, @devjiwonchoi, @wbinnssmith, @mischnic, @icyJoseph, @lukesandberg, and @sokra for helping!

View originalPermalink
How v16.4.0-canary.5 went

v16.4.0-canary.4

Pre-release
Added 1
  • Add next/cache-handlers types entrypoint
Changed 8
  • Remove unused return values from getPageStaticInfo
  • Defer NFT module content hashes in turbopack
  • Turn off the adapter route collapses by default
  • Serve a run of fallback shells from one route entry
  • Stop emitting a separate route entry for a dynamic route's RSC form
  • Stop emitting a redundant route per prefetch segment
  • Compile conditional cell updates once instead of per cell type in turbo-tasks
  • Migrate remaining async blocks to async closures

From Next.js

Misc Changes
  • Add next/cache-handlers types entrypoint: #97592
  • Remove unused return values from getPageStaticInfo: #97661
  • [turbopack] defer NFT module content hashes: #97773
  • test: deflake basePath external navigation: #97611
  • docs(adapters): document assetsHashes and routing.middlewareMatchers: #96536
  • Migrate remaining async blocks to async closures: #97701
  • Turn off the adapter route collapses by default: #97774
  • Serve a run of fallback shells from one route entry: #97738
  • [test] Capture the route table for apps with several param shapes: #97728
  • Stop emitting a separate route entry for a dynamic route's RSC form: #97726
  • Stop emitting a redundant route per prefetch segment: #97720
  • [test] Capture the dynamic routes a build passes to an adapter: #97719
  • turbo-tasks: compile conditional cell updates once, not per cell type: #97763
  • Turbopack: add unit test coverage for FileSystemPath::hash_file: #97743
Credits

Huge thanks to @marceloboeira, @mischnic, @sokra, @leejpsd, @unstubbable, and @lukesandberg for helping!

View originalPermalink
How v16.4.0-canary.4 went

v16.4.0-canary.3

Pre-release
Fixed 1
  • Fix indicator dragging on touch screens in devtools

From Next.js

Misc Changes
  • [devtools] Fix indicator dragging on touch screens: #97723
Credits

Huge thanks to @marcoshernanz for helping!

View originalPermalink
How v16.4.0-canary.3 went

v16.4.0-canary.2

Pre-release
Added 1
  • Introduce an options struct for constructing backend storage

From Next.js

Misc Changes
  • introduce an options struct for constructing backend storage: #97284
Credits

Huge thanks to @lukesandberg for helping!

View originalPermalink
How v16.4.0-canary.2 went

v16.4.0-canary.1

Pre-release
Added 4
  • Add instant validation for unstable_navigation()
  • Add scope_unbounded, a scoped execution primitive that allows more work to be discovered
  • Add a Turbopack error for missing root layouts
  • Add unstable_prefetch() function for Partial Prefetching
Changed 6
  • Avoid cloning paths in fs watcher if the path is already in a map
  • Trace graceful-fs calls in Turbopack
  • Migrate some async blocks to async closures
  • Improve Partial Prefetching adoption checks
  • Correct the upper stale bound for App Shell exclusion in cacheLife
  • Clarify beforeInteractive placement for root layouts
Fixed 2
  • Fix parallelRouteKey parameter name in useSelectedLayoutSegment(s)
  • Give eager import.meta.glob values the ESM namespace
Removed 1
  • Remove generated error codes

From Next.js

Misc Changes
  • docs: fix parallelRouteKey parameter name in useSelectedLayoutSegment(s): #97710
  • Turbopack: Avoid cloning paths in fs watcher if the path is already in a map: #97655
  • Remove generated error codes: #97687
  • [PPF] Instant validation for unstable_navigation(): #97309
  • Turbopack: trace graceful-fs calls: #97694
  • Migrate some async blocks to async closures: #97666
  • turbo-tasks: add scope_unbounded, a scoped execution primitive that allows more work to be discovered: #95974
  • test: make app-document-import-order more robust: #97682
  • Add a Turbopack error for missing root layouts: #97639
  • Improve Partial Prefetching adoption checks: #97637
  • test: stabilize poisoned proxy error overlay: #97609
  • docs: correct the upper stale bound for App Shell exclusion in cacheLife: #97653
  • docs: Adapters entry page lists its children pages twice: #97677
  • [PPF] unstable_prefetch(): #97622
  • [PPF] Scaffold unstable_prefetch(): #97618
  • docs: clarify beforeInteractive placement for root layouts: #97643
  • fix(turbopack): give eager import.meta.glob values the ESM namespace: #96559
Credits

Huge thanks to @marcoshernanz, @bgw, @devjiwonchoi, @lubieowoce, @mischnic, @lukesandberg, @DavidIlie, @aurorascharff, @sokra, and @icyJoseph for helping!

View originalPermalink
How v16.4.0-canary.1 went

v16.4.0-canary.0

Pre-release
Added 1
  • isolate HMR listeners across microfrontends in Turbopack
Changed 4
  • deduplicate Pages Router app chunks in Turbopack
  • split the read and write codepath data structures for symlinks in Turbopack
  • show last modified file when waiting for the filesystem to settle in Turbopack
  • check assignability before assigning the actor in react-sync
Fixed 1
  • preserve trailing slash during export MPA fallback

From Next.js

Misc Changes
  • feat(turbopack): isolate HMR listeners across microfrontends: #95997
  • Turbopack: deduplicate Pages Router app chunks: #97664
  • [react-sync] Check assignability before assigning the actor: #97638
  • fix: preserve trailing slash during export MPA fallback: #97613
  • Turbopack: Split the read and write codepath data structures for symlinks: #97395
  • Turbopack: Show last modified file when waiting for the filesystem to settle: #97648
Credits

Huge thanks to @fireairforce, @mischnic, @eps1lon, @QingHeSite, and @bgw for helping!

View originalPermalink
How v16.4.0-canary.0 went

v16.3.2

Changed 1
  • Authenticate Turborepo remote caching with OIDC instead of a static PAT
Fixed 5
  • Scope app-entry export validation to files inside the app directory
  • Fix catch-all index page being served for every other slug
  • Turbopack: don't trace embedded WASM loader helpers
  • Turbopack: retain conditions when replacing resolve request keys
  • Fix Turbopack worker chunk loading with asset prefix

From Next.js

[!NOTE] This release is backporting bug fixes. It does not include all pending features/changes on canary.

Core Changes
  • [backport] Scope app-entry export validation to files inside the app directory (#97357)
  • [backport] Fix catch-all index page being served for every other slug (#97416)
  • [16.3] Turbopack: don't trace embedded WASM loader helpers (#97353) (#97463)
  • [16.3] Turbopack: retain conditions when replacing resolve request keys (#97453)
  • [16.3.x] Fix Turbopack worker chunk loading with asset prefix (#97419)
  • [16.3.x] Authenticate Turborepo remote caching with OIDC instead of a static PAT (#97603)
Credits

Huge thanks to @lubieowoce, @unstubbable, @timneutkens, @mischnic, and @eps1lon for helping!

View originalPermalink
How v16.3.2 went

v16.3.1-canary.26

Pre-release
Added 1
  • Add unstable_navigation() API
Changed 5
  • Upgrade React from eb8feb71-20260814 to eafeac09-20260819
  • Rename Turbopack to use turbopack: no side effects
  • Remove HmrTarget
  • Keep HMR instructions typed until serialization
  • Serialize frozen collections by value only

From Next.js

Misc Changes
  • docs: document deploymentId build ID override and Pages Router skew in 16.2: #97645
  • Upgrade React from eb8feb71-20260814 to eafeac09-20260819: #97636
  • Turbopack: rename to use turbopack: no side effects: #94427
  • refactor: move useDynamic{Route,Search}Params to reduce snapshot churn: #97360
  • [PPF] unstable_navigation(): #96908
  • [PPF] Scaffold unstable_navigation(): #97236
  • docs: Explicit cache output description: #97548
  • Improve Cache Components sync IO migration guidance: #97572
  • [test] Use a non-native stub for the server externals list test: #97614
  • Avoid GitHub API rate limits for create-next-app examples: #97612
  • [test] Cover the prerender worker-thread backend with an addon we control: #97543
  • [test] Convert the prerender-native-module suite to local fixture packages: #97542
  • [test] Replace the turbopack-reports sqlite3 dependency with a local addon fixture: #97541
  • [test] Drop the dead sqlite3 build approval from the sharp-basic suite: #97540
  • [ci] Authenticate Turborepo remote caching with OIDC instead of a static PAT: #97590
  • Remove HmrTarget: #97253
  • Keep HMR instructions typed until serialization: #96569
  • Serialize frozen collections by value only: #96686
Credits

Huge thanks to @icyJoseph, @mischnic, @lubieowoce, @aurorascharff, @eps1lon, @sokra, and @wbinnssmith for helping!

View originalPermalink
How v16.3.1-canary.26 went

v16.3.1-canary.25

Pre-release
Changed 4
  • Move preview props into separate manifest
  • Allow TURBOPACK_PRINT_CHUNK_GROUPS in release builds
  • Implement cross-module constants in Turbopack
  • More aggressively debounce filesystem watch events if changes to node_modules are detected
Fixed 3
  • Do not mark complete shell requests as partial
  • Add accessible label to icon-only link
  • Fix use cache prerender signal retention
Removed 1
  • Remove unstable_eager

From Next.js

Misc Changes
  • [PPF] Remove unstable_eager: #97524
  • [PPF] Do not mark complete shell requests as partial: #97503
  • fix: add accessible label to icon-only link: #96334
  • Fix stale cross-references in skills/: #97566
  • docs: generateMetadata values should be serializable with use cache: #97551
  • Move preview props into separate manifest: #96004
  • docs: adjust interactive app guide: #97558
  • Turbopack: allow TURBOPACK_PRINT_CHUNK_GROUPS in release builds: #97515
  • [test] Point next-image-legacy images at a reachable endpoint: #97545
  • test: improve error-on-next-codemod-comment flakiness: #97553
  • Turbopack: cross-module constants: #90300
  • test: better isolate concurrent-install suite: #97546
  • docs: outlining and lcp: #96942
  • Fix use cache prerender signal retention: #97476
  • Turbopack: More aggressively debounce filesystem watch events if we detected changes to node_modules: #96116
  • docs: document metadata pagination field: #95509
Credits

Huge thanks to @lubieowoce, @niketchandivade, @gaojude, @devjiwonchoi, @mischnic, @aurorascharff, @eps1lon, @icyJoseph, @gnoff, @bgw, and @biubiukam for helping!

View originalPermalink
How v16.3.1-canary.25 went

v16.3.1-canary.24

Pre-release
Added 1
  • Turbopack support for character class ranges in regex
Changed 1
  • Model prerenders as render candidates
Fixed 4
  • Improve form accessibility by associating labels with inputs
  • Remove the development debug channel persistence
  • Stop the browser from restoring stale pages in development
  • Turbopack gracefully handle outputFileTracingIncludes matching a symlink

From Next.js

Misc Changes
  • style(examples): remove redundant justify-content declaration: #97222
  • docs: rename Vercel Edge Config to Global Config in redirecting guide: #97456
  • fix: improve form accessibility by associating labels with inputs: #96335
  • [docs] fix: grammar typos in linking and navigating guide: #95544
  • fix(examples): correct error message typo: #97223
  • docs: fix typos in example links: #97149
  • Model prerenders as render candidates: #97431
  • Turbopack: support character class ranges in regex: #97502
  • docs: warn when catching permanentRedirect: #97496
  • Remove the development debug channel persistence: #97510
  • Stop the browser from restoring stale pages in development: #97505
  • Turbopack: gracefully handle outputFileTracingIncludes matching a symlink: #97507
  • docs: mention Valibot as validation library option in forms guides: #97468
Credits

Huge thanks to @niketchandivade, @molebox, @seanbeirnes, @0ldh, @gnoff, @mischnic, @DavidIlie, @unstubbable, and @fabian-hiller for helping!

View originalPermalink
How v16.3.1-canary.24 went

v16.3.1-canary.23

Pre-release
Changed 1
  • Trace lazy App Route module loading

From Next.js

Misc Changes
  • Trace lazy App Route module loading: #97439
  • [ci] Wait for the next version to be available on npm before deploy tests: #97460
  • docs: fix stale Dev Overlay README link in contributing guide: #97486
  • docs: app router reference accuracy: #97477
  • test: Don't wait trying to load non-existing images: #97488
  • test: cover dynamic APIs with i18n base path: #97367
Credits

Huge thanks to @DavidIlie, @eps1lon, @icyJoseph, and @mischnic for helping!

View originalPermalink
How v16.3.1-canary.23 went

v16.3.1-canary.22

Pre-release
Added 2
  • Add persistence delete and tombstone plumbing for GC in turbo-tasks-backend
  • Add key-value tombstones for MultiValue families in turbo-persistence
Changed 1
  • Enforce that tasks exist when accessing them in turbo-tasks-backend
Fixed 3
  • Allow 32-bit usize conversion in turbo-persistence
  • Restore missing NFT exports unit fixtures
  • Fix backport canary release dispatch in CI

From Next.js

Misc Changes
  • fix(turbo-persistence): allow 32-bit usize conversion: #97288
  • test: restore missing NFT exports* unit fixtures: #97459
  • [ci] Fix backport canary release dispatch: #97383
  • turbo-tasks-backend: Enforce that tasks exist when accessing them: #96043
  • turbo-tasks-backend: add persistence delete/tombstone plumbing for GC: #95975
  • turbo-persistence: add key-value tombstones for MultiValue families: #96929
Credits

Huge thanks to @hardfist, @mischnic, @ztanner, and @lukesandberg for helping!

View originalPermalink
How v16.3.1-canary.22 went

v16.3.1-canary.21

Pre-release
Changed 2
  • Anchor the async local storage instances to global symbols
  • Reorganize client router modules

From Next.js

Misc Changes
  • Anchor the async local storage instances to global symbols: #97255
  • test: deflake use-cache-size-zero warm reload: #97421
  • Scaffolding for concurrentRouterQueue flag: #97413
  • Reorganize client router modules: #97402
Credits

Huge thanks to @unstubbable, @gnoff, and @acdlite for helping!

View originalPermalink
How v16.3.1-canary.21 went

v16.3.1-canary.20

Pre-release
Changed 3
  • Wait for back-before-hydration recoveries in the browser
  • Extract metadata resolution primitives
  • Turbopack: retain conditions when replacing resolve request keys
Removed 1
  • Remove server route matcher stack

From Next.js

Misc Changes
  • Wait for back-before-hydration recoveries in the browser: #97321
  • Extract metadata resolution primitives: #97388
  • test: update React 18 redbox snapshot: #97415
  • Turbopack: retain conditions when replacing resolve request keys: #97372
  • Remove server route matcher stack: #94157
Credits

Huge thanks to @gaearon, @gnoff, @timneutkens, and @mischnic for helping!

View originalPermalink
How v16.3.1-canary.20 went

v16.3.1-canary.19

Pre-release
Changed 2
  • Adopt SelectedMetadata for metadata rendering
  • Make unreachable codegen more generic in Turbopack
Fixed 2
  • Reject empty image on read/write to disk cache in next/image
  • Remove stale manifests for deleted routes in Turbopack

From Next.js

Misc Changes
  • Adopt SelectedMetadata for metadata rendering: #97387
  • fix(next/image): reject empty image on read/write to disk cache : #97278
  • Turbopack: remove stale manifests for deleted routes: #97333
  • Turbopack: make unreachable codegen more generic: #97385
Credits

Huge thanks to @gnoff, @styfle, @marcoshernanz, and @mischnic for helping!

View originalPermalink
How v16.3.1-canary.19 went

v16.3.1-canary.18

Pre-release
Changed 1
  • Upgrade React from 22e4f993-20260811 to eb8feb71-20260814

From Next.js

Misc Changes
  • Upgrade React from 22e4f993-20260811 to eb8feb71-20260814: #97382
View originalPermalink
How v16.3.1-canary.18 went

v16.3.1-canary.17

Pre-release
Changed 2
  • Scope app-entry export validation to files inside the app directory
  • Emit whole-app server NFTs when output: 'standalone' is used with an adapter
Fixed 2
  • Bump satori and @vercel/og
  • Fix missing Pages runtime in adapter Pages API outputs

From Next.js

Misc Changes
  • Turbopack: add imports_wildcard NFT unit test: #97373
  • Turbopack: improve chunk_item_content docs: #97370
  • Turbopack: don't trace embedded WASM loader helpers: #97353
  • test: Reenable i18n-api-support deploy test for Turbopack with adapters: #96898
  • Trace instrumentation startup: #97296
  • Trace route module preparation: #97295
  • Trace route module loading: #97318
  • fix(deps): bump satori and @vercel/og: #97276
  • Scope app-entry export validation to files inside the app directory: #97350
  • Emit whole-app server NFTs when output: 'standalone' is used with an adapter: #97287
  • [test] Cover 'use cache: private' in route handlers: #97349
  • Fix missing Pages runtime in adapter Pages API outputs: #96819
  • docs: align SPA guide reducer example with React conventions: #97341
  • Update blob version.: #97342
Credits

Huge thanks to @mischnic, @DavidIlie, @styfle, @unstubbable, @bryan-ferry, @timneutkens, @aurorascharff, and @gdborton for helping!

View originalPermalink
How v16.3.1-canary.17 went

v16.3.1-canary.16

Pre-release
Added 1
  • Add RDC compression rollout controls
Changed 7
  • Unify how a response's shell and full payloads are written
  • Convert per-segment prefetches to NavigationFlightResponse format
  • Unify how server responses are written into the client cache
  • Convert tree prefetches to NavigationFlightResponse format
  • Revert i18n localization change for dynamic Pages API routes
  • Migrate napi-rs bindings from v2 to v3
  • Upgrade React from 11eddecd-20260805 to 22e4f993-20260811
Fixed 2
  • Skip 0-byte entries when initializing disk LRU cache in next/image
  • Fix infinite recursion in testmode passthrough fetch

From Next.js

Misc Changes
  • Unify how a response's shell and full payloads are written: #96878
  • Convert per-segment prefetches to NavigationFlightResponse format: #96877
  • Unify how server responses are written into the client cache: #96876
  • Convert tree prefetches to NavigationFlightResponse format: #96788
  • Revert i18n localization change for dynamic Pages API routes (#94905): #97327
  • fix(next/image): skip 0-byte entries when initializing disk LRU cache: #94068
  • Update authentication diagram URL: #97320
  • Add a script for adopting fork pull requests: #97252
  • Migrate napi-rs bindings from v2 to v3: #95412
  • Upgrade React from 11eddecd-20260805 to 22e4f993-20260811: #97249
  • Add RDC compression rollout controls: #97247
  • [testmode] Fix infinite recursion in testmode passthrough fetch: #96525
Credits

Huge thanks to @acdlite, @gaojude, @hammadxcm, @marcoshernanz, @eps1lon, @jimmyhmiller, @gnoff, and @lazerg for helping!

View originalPermalink
How v16.3.1-canary.16 went

v16.3.1

Changed 4
  • Turbopack: add turbopack_ecmascript and turbopack_wasm's embedded FS to internal_assets_conditions
  • Turbopack: collapse nested promises in the analyzer
  • Allow literal exports in 'use cache' files
  • Retain fewer stale cache versions and use a TTL, plus the mtime fallback
Fixed 11
  • Turbopack: don't strip async-module runtime from shared runtime chunks
  • Preserve image response after optimization in next/image
  • Fix missing styled-jsx styles in Pages Router SSR on adapter builds
  • Turbopack: fix HMR for dynamic imports evaluated from layouts
  • Restore the live headers() view of the incoming request
  • Keep the dev validation worker alive across HMR updates

From Next.js

What's Changed

Full Changelog: https://github.com/vercel/next.js/compare/v16.3.0...v16.3.1

View originalPermalink
How v16.3.1 went

v16.3.1-canary.15

Pre-release
Changed 5
  • Add the mtime fallback back
  • Stop serializing hmr version state
  • Add clusters to chunking heuristics
  • Allow running ncc before pnpm build
  • Invalidate deferred Webpack entry sources
Fixed 2
  • Fix typo 'ouput' in parseIdsFromCliOutput
  • Fix HMR for dynamic imports evaluated from layouts

From Next.js

Misc Changes
  • test: fix 'ouput' typo in parseIdsFromCliOutput: #97266
  • Add the mtime fallback back: #97268
  • Allow issue participants to request reopening: #96947
  • [turbopack] Document clusters for chunking: #97267
  • Link to issues in the contribution guide and discourage trivial PRs: #97188
  • Stop serializing hmr version state: #97146
  • [turbopack] Add clusters to chunking heuristics: #95157
  • [test] Redirect the deployment host in-process for proxy deploy tests: #97260
  • [test] Unflake two cache-components-dev-streaming assertions: #97246
  • [test] Unflake use-cache-default-profile-expire-zero tests: #97250
  • [turbopack] Fix HMR for dynamic imports evaluated from layouts: #97213
  • [ci] Use OIDC tokens to read private preview builds: #96919
  • Allow running ncc before pnpm build: #97234
  • Invalidate deferred Webpack entry sources: #97205
Credits

Huge thanks to @syedsohailhussain1, @lukesandberg, @marcoshernanz, @sampoder, @unstubbable, @eps1lon, and @gnoff for helping!

View originalPermalink
How v16.3.1-canary.15 went

v16.3.1-canary.14

Pre-release
Added 1
  • Allow literal exports in 'use cache' files
Changed 1
  • Restore the live headers() view of the incoming request
Fixed 4
  • Fix debug build paths Pages Router support entries
  • Fix unset crossOrigin in Turbopack manifests
  • Fix shared Turbopack runtime initialization race
  • Fix stale data after navigation despite revalidation

From Next.js

Core Changes
  • Fix debug build paths Pages Router support entries: #93529
Misc Changes
  • Restore the live headers() view of the incoming request: #97166
  • [test] Compile the middleware redirect routes up front in dev: #97190
  • Update gh-stack skill guidance: #97163
  • [test] Unflake use-cache-custom-handler-dev tests: #97187
  • Forward a build-container pin to deploy-test deployments: #97191
  • Fix unset crossOrigin in Turbopack manifests: #97164
  • Allow literal exports in 'use cache' files: #97181
  • Fix shared Turbopack runtime initialization race: #97215
  • Fix stale data after navigation despite revalidation: #95439
  • [turbopack] Only use the shared runtime by default on canary: #97208
Credits

Huge thanks to @unstubbable, @timneutkens, @Stanzilla, @gnoff, @gaearon, and @sampoder for helping!

View originalPermalink
How v16.3.1-canary.14 went

v16.3.1-canary.13

Pre-release
Changed 3
  • Decouple loader tree construction from children ordering
  • Retain fewer stale cache versions and use a TTL in turbopack
  • Bump lightningcss

From Next.js

Misc Changes
  • Decouple loader tree construction from children ordering: #97192
  • [turbopack] Retain fewer stale cache versions and use a TTL: #96941
  • Bump lightningcss: #97159
Credits

Huge thanks to @gnoff, @lukesandberg, and @mischnic for helping!

View originalPermalink
How v16.3.1-canary.13 went

v16.3.1-canary.12

Pre-release
Changed 4
  • Accept a module type argument for import.meta.glob in Turbopack
  • Do the CJS analysis needed for scope hoisting in Turbopack
  • Use Cache Components as the internal PPR signal
  • Make legacy PPR paths explicit
Fixed 2
  • Bail CJS tree-shaking on var x = module.exports = {}
  • Fix optimistic routing bugs leading to repeated prefetch loops
Removed 1
  • Remove legacy PPR code paths

From Next.js

Misc Changes
  • [turbopack] Bail CJS tree-shaking on var x = module.exports = {}: #97130
  • docs: server client and directives: #96145
  • docs: clarify client cache freshness after hydration: #97180
  • Fix: Optimistic routing bugs leading to repeated prefetch loops: #97128
  • docs: create client-side fetching guide: #96341
  • Turbopack: accept a module type argument for import.meta.glob: #96991
  • docs: align Cache Components authentication guide title: #97143
  • test: re-enable a few more passing NFT unit cases: #97017
  • [turbopack] Do the CJS analysis needed for scope hoisting: #95826
  • Remove legacy PPR code paths: #96868
  • Use Cache Components as the internal PPR signal: #96827
  • Make legacy PPR paths explicit: #96753
  • fix: typos in code comments: #97137
  • Fix spelling in two comments: #97136
Credits

Huge thanks to @sampoder, @icyJoseph, @aurorascharff, @acdlite, @kelvinampofo, @mischnic, @ztanner, and @marcoshernanz for helping!

View originalPermalink
How v16.3.1-canary.12 went

v16.3.1-canary.11

Pre-release
Added 2
  • Trace development route compilation
  • Trace development route preparation
Changed 6
  • Rename encodeCacheTag to encodeHeaderSafe
  • Use emitted app entries for post-build processing
  • Reduce native React Compiler work in turbopack
  • Update runtime prefetching to optimizing prefetching in documentation
  • Track APIs that cause incompatible static/app shells
  • Prefix 'use cache' debug logs with the full directive
Fixed 11
  • Correct typo in rm.mjs error message
  • Encode the cache item name built by unstable_cache
  • Fix formatting of Google Fonts section in documentation
  • Fix Webiny API env variable name in examples
  • Fix Link prefetch grammar and Client Components wording in documentation
  • Fix package name in MDX .md handling section documentation

From Next.js

Core Changes
  • fix(scripts): correct typo in rm.mjs error message: #87015
  • docs: improve clarity and punctuation in README: #86096
Misc Changes
  • Encode the cache item name built by unstable_cache: #96937
  • [refactor] Rename encodeCacheTag to encodeHeaderSafe: #96936
  • Fix formatting of Google Fonts section in documentation: #88447
  • Fixing a bug - typo issue fixed: #97141
  • examples: fix Webiny API env variable name: #97134
  • docs: fix Link prefetch grammar and Client Components wording: #97132
  • Use emitted app entries for post-build processing: #97139
  • docs(mdx): fix package name in .md handling section: #97131
  • [turbopack] Reduce native React Compiler work: #96820
  • Keep the dev validation worker alive across HMR updates: #96988
  • docs: rename repo to repository for consistency: #87849
  • Fix Nav Inspector request loop on repeat captures: #97050
  • Fix typo in Data Access Layer section: #87202
  • docs: runtime prefetching -> optimizing prefetching: #96934
  • [CC] Track APIs that cause incompatible static/app shells: #97040
  • Fix client component loading span timing: #96455
  • Trace development route compilation: #96454
  • Prefix 'use cache' debug logs with the full directive: #97037
  • Revert "[turbopack] Enable CJS tree shaking by default (#96779)": #97018
  • Revert "[turbopack] Follow re-exports for side-effect free async modules": #97009
  • [fragment-scroll] Rename ScrollAndMaybeFocusHandler to ScrollHandler: #96828
  • Trace development route preparation: #96453
  • test: cleanup Turbopack snapshot config: #97013
  • Remove unused htmlLimitedBots from renderOpts: #96701
  • fix(turbopack): point at the glob that matched a file with no module type: #96561
Credits

Huge thanks to @unstubbable, @koenpunt, @marcoshernanz, @gnoff, @mayur9210, @Jashnavi25, @jarrensj, @acdlite, @akselipalmer, @icyJoseph, @lubieowoce, @DavidIlie, @eps1lon, @mischnic, and @sokra for helping!

View originalPermalink
How v16.3.1-canary.11 went

v16.3.1-canary.10

Pre-release
Fixed 1
  • Treat constants with values referencing other values as unsafe in turbopack

From Next.js

Misc Changes
  • [turbopack] Treat constants with values referencing other values as unsafe: #96190
Credits

Huge thanks to @sampoder for helping!

View originalPermalink
How v16.3.1-canary.10 went

v16.3.1-canary.9

Pre-release
Changed 2
  • Remove the turbopack-build-events trace span and use next build instead
  • Follow re-exports for side-effect free async modules in turbopack
Fixed 1
  • Fix a potential deadlock in turbopack scope_and_block

From Next.js

Misc Changes
  • [turbopack] Fix a potential deadlock in scope_and_block: #95695
  • Remove the turbopack-build-events trace span, use next build instead: #96746
  • docs: add export const dynamic = 'force-static' to Route Handlers example on Static Exports: #96964
  • [turbopack] Follow re-exports for side-effect free async modules: #95993
Credits

Huge thanks to @lukesandberg, @m-kawafuji, and @sampoder for helping!

View originalPermalink
How v16.3.1-canary.9 went

v16.3.1-canary.8

Pre-release
Added 2
  • Allow DiskWatcher to use a mocked DiskFileSystem in Turbopack
  • Support experimental.serverMinification and expand experimental.turbopackMinify in Turbopack
Changed 5
  • Improve how DiskWatcher is configured and fix polling watcher bugs in Turbopack
  • Enable the shared runtime by default in Turbopack
  • Enable CJS tree shaking by default in Turbopack
  • Upgrade to swc 75
  • Make NextConfigComplete typing more accurate
Fixed 2
  • Flush pending revalidations for forwarded action error responses
  • Handle Server Actions on dynamic PPR fallback routes

From Next.js

Misc Changes
  • Flush pending revalidations for forwarded action error responses: #96945
  • Handle Server Actions on dynamic PPR fallback routes: #96932
  • Turbopack: Improve how DiskWatcher is configured and fix polling watcher bugs: #96440
  • Turbopack: Allow DiskWatcher to use a mocked DiskFileSystem, add a small unit test: #96353
  • [turbopack] Add e2e test that uses component chunks + workers: #96556
  • [turbopack] Support experimental.serverMinification & expand experimental.turbopackMinify: #96578
  • Add a turbopackChunking documentation page for pages router: #96698
  • [turbopack] Don't run Webpack tests on Turbopack-only changes: #96656
  • [turbopack] Enable the shared runtime by default: #96778
  • [turbopack] Enable CJS tree shaking by default: #96779
  • [ci] Default deploy e2e tests to the repo next version: #96895
  • refactor: clean up places that needlessly list all RenderStages: #96907
  • Fix the documented invocation for generating tests non-interactively: #96896
  • Make NextConfigComplete typing more accurate: #96700
  • Upgrade to swc 75: #96702
  • docs: link View Transitions skill on skills.sh and clarify the example prompt: #96863
  • [ci] Reset the turbopack deploy test project in the weekly cron: #96822
  • docs: add authentication with Cache Components guide and iron-session example: #95802
Credits

Huge thanks to @ztanner, @bgw, @sampoder, @eps1lon, @lubieowoce, @unstubbable, @mischnic, @aurorascharff, and @icyJoseph for helping!

View originalPermalink
How v16.3.1-canary.8 went

v16.3.1-canary.7

Pre-release
Added 1
  • Support type: 'text' in rules and error on binding imports of non-ESM modules
Changed 1
  • Show compiler plugin warning in more situations
Fixed 2
  • Name the module in the non-ESM-placeable error and stop duplicating the importer in traces
  • Fix missing styled-jsx styles in Pages Router SSR on adapter builds

From Next.js

Core Changes
  • Show compiler plugin warning in more situations: #75682
Misc Changes
  • ci: stop publishing @vercel/devlow-bench: #96887
  • fix(turbopack): name the module in the non-ESM-placeable error, and stop duplicating the importer in traces: #96560
  • fix(turbopack): support type: 'text' in rules, and error on binding imports of non-ESM modules: #96558
  • Fix missing styled-jsx styles in Pages Router SSR on adapter builds: #96632
  • Lint devlow-bench with the root eslint config: #96871
  • Remove turbopack/packages and relocate devlow to packages/: #96860
Credits

Huge thanks to @mischnic, @wbinnssmith, @sokra, and @Janpot for helping!

View originalPermalink
How v16.3.1-canary.7 went

v16.3.1-canary.5

Pre-release
Changed 6
  • Refactor server from CacheNodeSeedData to TransportData
  • Unify full and partial navigation response types
  • Unify RouteTree and CacheNodeSeedData on the client
  • Consolidate Promise.withResolvers polyfills
  • Update redirected links to current targets in docs
  • Bump @swc/helpers
Fixed 3
  • Fix use cache over- and under-invalidation in dev
  • Fix which pages the dev server announces and when
  • Prevent exception on old webkit with deployment-id
Removed 1
  • Remove config.experimental.appNewScrollHandler

From Next.js

Misc Changes
  • Refactor server from CacheNodeSeedData -> TransportData: #96679
  • Unify full/partial navigation response types: #96439
  • Unify RouteTree and CacheNodeSeedData on the client: #96406
  • Consolidate Promise.withResolvers polyfills: #96772
  • [ci] Open automated update pull requests with nextjs-bot: #96683
  • Require Cache Components for Instant Navigation testing: #96745
  • Fix use cache over- and under-invalidation in dev: #96235
  • Fix which pages the dev server announces, and when: #96250
  • docs: update redirected links to current targets: #96723
  • Fix(deployment-id): prevent exception on old webkit: #94604
  • [fragment-scroll] Remove config.experimental.appNewScrollHandler: #95602
  • Bump @swc/helpers: #96720
  • [turbopack] Enable reexport-unknown execution test: #96774
Credits

Huge thanks to @acdlite, @wbinnssmith, @eps1lon, @ztanner, @gaearon, @molebox, @kyamaz99, @mischnic, and @sampoder for helping!

View originalPermalink
How v16.3.1-canary.5 went

v16.3.1-canary.4

Pre-release
Changed 14
  • Upgrade React from 7dfc7ccd-20260803 to 11eddecd-20260805
  • Reuse completed cache entries for the rest of a request
  • Discard only cache entries that predate a tag revalidation
  • Derive foreground cache revalidation from the consumer
  • Separate App Route render and prerender pipelines
  • Separate App Page render and prerender pipelines
Fixed 3
  • Fix race when navigating Back before hydration
  • Preserve image response after optimization in next/image
  • Fix missing await in css-chunking test
Removed 3
  • Remove WorkStore execution mode
  • Remove cache revalidation execution mode reads
  • Remove App Page execution mode reads

From Next.js

Misc Changes
  • [Bench] Fixes for pure Fizz bench: #96771
  • Derive foreground cache revalidation from the consumer: #96731
  • [turbopack] Raise registration calls in hoisted modules to the top: #96697
  • Fix race when navigating Back before hydration: #96252
  • docs: present each Skill as steps in the AI agents guide: #96751
  • Reuse completed cache entries for the rest of a request: #96727
  • Discard only cache entries that predate a tag revalidation: #96726
  • Upgrade React from 7dfc7ccd-20260803 to 11eddecd-20260805: #96735
  • Remove WorkStore execution mode: #96674
  • Remove cache revalidation execution mode reads: #96670
  • Separate App Route render and prerender pipelines: #96662
  • Remove App Page execution mode reads: #96660
  • test: fix missing await in css-chunking test: #96725
  • fix(next/image): preserve image response after optimization: #96681
  • docs (Skills): stop assuming app/ at the root and port 3000: #96696
  • Implement next/font BeforeResolvePlugins as ImportMappingReplacement: #95808
  • Use Tailwind Turbopack loader in create-next-app: #96606
  • docs: instant navigation quick start with an adoption prompt: #96663
  • Separate App Page render and prerender pipelines: #96659
  • Move App Router execution intent to entrypoints: #96640
  • Pass explicit render capabilities through App Render: #96576
  • Pass explicit prefetch hint policy through App Render: #96572
  • Replace WorkStore isStaticGeneration with executionMode: #96570
  • docs: document ! exclusion and src/ prefix for --debug-build-paths: #96703
  • Change loadManifest to return undefined with handleMissing: #96530
Credits

Huge thanks to @gaearon, @ztanner, @sampoder, @aurorascharff, @unstubbable, @lubieowoce, @lukesandberg, @mischnic, @timneutkens, and @icyJoseph for helping!

View originalPermalink
How v16.3.1-canary.4 went

v16.3.1-canary.3

Pre-release
Fixed 1
  • Fix Turbopack worker chunk loading with asset prefix

From Next.js

Misc Changes
  • Fix Turbopack worker chunk loading with asset prefix: #96636
  • [react-sync] Open pull requests as the bot that authors the commits: #96682
Credits

Huge thanks to @timneutkens and @eps1lon for helping!

View originalPermalink
How v16.3.1-canary.3 went

v16.3.1-canary.2

Pre-release
Changed 2
  • Upgrade React from cbb046ab-20260731 to 7dfc7ccd-20260803
  • Collapse nested promises in the turbopack analyzer
Fixed 3
  • Strip leading BOM before parsing CSS in turbopack
  • Terminate failed plugin worker threads in turbopack
  • Fix HTML-limited bot matching in prerender bypass rules

From Next.js

Misc Changes
  • [turbopack] Add test for sideEffects with optimizePackageImports: #96549
  • [turbopack] Strip leading BOM before parsing CSS: #96678
  • Upgrade React from cbb046ab-20260731 to 7dfc7ccd-20260803: #96550
  • docs: use relative doc links in instant-navigation error pages: #96672
  • Turbopack: terminate failed plugin worker threads: #96592
  • [turbopack] Collapse nested promises in the analyzer: #96601
  • Fix HTML-limited bot matching in prerender bypass rules: #96584
  • [ci] Fix create_release_branch for new repo permissions: #96641
  • test: skip action module instance deploy test: #96629
  • docs: quote the dynamicParams build error in a blockquote: #96633
Credits

Huge thanks to @sampoder, @lukesandberg, @vercel-release-bot, @icyJoseph, @marcoshernanz, @ztanner, and @mischnic for helping!

View originalPermalink
How v16.3.1-canary.2 went

v16.3.1-canary.1

Pre-release
Changed 3
  • Preserve per-segment prefetching after dynamic navigation
  • Rename static generation stream option to waitForAllReady
  • Add turbopack_ecmascript and turbopack_wasm's embeded FS to internal_assets_conditions
Fixed 3
  • Turbopack: don't strip async-module runtime from shared runtime chunks
  • Turbopack: drop dead writes to exports
  • Turbopack: ignore writes to exports after a module.exports = {} writes
Removed 1
  • Remove obsolete static generation plumbing

From Next.js

Misc Changes
  • docs: correction to dynamicParams migration: #96624
  • docs: proxy event argument: #96435
  • docs: remove experimental note from runtime prefetching: #96615
  • Turbopack: don't strip async-module runtime from shared runtime chunks: #96599
  • [turbopack] Add turbopack_ecmascript and turbopack_wasm's embeded FS to internal_assets_conditions: #96600
  • Preserve per-segment prefetching after dynamic navigation: #96583
  • Rename static generation stream option to waitForAllReady: #96564
  • Remove obsolete static generation plumbing: #96563
  • [turbopack] Drop dead writes to exports: #96381
  • [turbopack] Ignore writes to exports after a module.exports = {} writes: #96380
Credits

Huge thanks to @icyJoseph, @lukesandberg, @sampoder, and @ztanner for helping!

View originalPermalink
How v16.3.1-canary.1 went

v16.3.1-canary.0

Pre-release
Fixed 1
  • Fix catch-all index page being served for every other slug

From Next.js

Misc Changes
  • Fix catch-all index page being served for every other slug: #96553
Credits

Huge thanks to @acdlite for helping!

View originalPermalink
How v16.3.1-canary.0 went

v16.3.0

Added 6
  • Add importModule() support to webpack loaders in Turbopack
  • Add per-slot error attribution for instant validation using slot markers and config depth preference
  • Add module count field to module graph tracing spans
  • Add --persistent-caching flag for filesystem-backed cache in turbopack-cli
  • Add next internal post-build CLI command for Turbopack database compaction
  • Add useOffline flag with offline retry behavior
Changed 7
  • Normalize encoded dynamic placeholders in app routes
  • Update tokio from 1.43.0 to 1.47.3
  • Enable server HMR for app route handlers in Turbopack
  • Skip loadBindings() Lightning CSS check during next start
  • Rename /_next/webpack-hmr to /_next/hmr
  • Handle encoded params further
  • Switch from base40 to base38 hash encoding in Turbopack
Fixed 6
  • Fix invalid HTML response for route-level RSC requests in deployment adapter
  • Restore Content-Length and ETag for /_next/data/ JSON responses in pages router
  • Fix missing route in otel spans without base-server
  • Fix layout segment optimization by moving app-page imports to server-utility transition
  • Fix server actions in standalone mode with cacheComponents
  • Fix adapter outputs for dynamic metadata routes
Security 1
  • Update vendored lodash to 4.17.23 to fix CVE-2025-13465

From Next.js

Core Changes
  • Update vendored lodash to 4.17.23 to fix CVE-2025-13465: #91558
  • Fix invalid HTML response for route-level RSC requests in deployment adapter: #91541
  • Normalize encoded dynamic placeholders in app routes: #91603
  • Fix(pages-router): restore Content-Length and ETag for /_next/data/ JSON responses: #90304
  • Update tokio from 1.43.0 to 1.47.3: #90945
  • [turbopack] Simplify snapshotting logic: #91178
  • Turbopack: enable server HMR for app route handlers: #91466
  • turbo-tasks-backend: batch find_and_schedule_dirty using for_each_task_meta: #91497
  • [turbopack] Use bail! instead of panic! for duplicate module ident error: #91636
  • Skip loadBindings() Lightning CSS check during next start: #91538
  • turbo-tasks-backend: batch schedule dirty tasks in aggregation_update: #91461
  • Turbopack: Add importModule() support to webpack loaders: #89630
  • turbo-persistence: fix mmap page alignment and improve error context in MetaFile::open_internal: #91640
  • turbopack-css: demote recoverable CSS parse warnings to Warning severity: #91524
  • feat(node-streams): add config flag, define-env, and env precedence test: #90427
  • Rename /_next/webpack-hmr to /_next/hmr: #91415
  • Add per-slot error attribution for instant validation using slot markers and config depth preference: #91610
  • Handle encoded params further: #91627
  • [turbopack] Respect {eval:true} in worker_threads constructors: #91666
  • Fix missing route in otel spans without base-server: #91665
  • [turbopack] Optimize compaction cpu usage: #91468
  • Fix layout segment optimization: move app-page imports to server-utility transition: #91701
  • Fix server actions in standalone mode with cacheComponents: #91711
  • turbo-persistence: remove Unmergeable mmap advice: #91713
  • turbopack: move "compact database" tracing span to backend layer: #91693
  • Turbopack: lazy require metadata and handle TLA: #91705
  • Fix adapter outputs for dynamic metadata routes: #91680
  • Turbopack: fix webpack loader runner layer: #91727
  • [turbopack] Remove incorrect debug_assert in try_read_task_cell: #91699
  • Add module count field to module graph tracing spans: #91697
  • turbopack-cli: add --persistent-caching flag for filesystem-backed cache: #91657
  • Turbopack: pull in updated vercel/nft tests: #91651
  • [turbopack] Improve regressed build speed on cross-compiled MUSL: #91477
  • [Segment Bundling] [Scaffolding] Ensure inlining hint correctness: #91320
  • [Segment Bundling] [Scaffolding] Track which segments can be omitted from prefetch: #91438
  • Avoid deprecated TS node10 moduleResolution defaults: #91847
  • [turbopack] Rebuild the docker build scripts: #91799
  • Fix TS6 baseUrl deprecation for extended tsconfig: #91855
  • Add next internal post-build CLI command for Turbopack database compaction: #91336
  • Turbopack: Define Effect as a trait instead of a closure: #89080
  • Turbopack: Implement TraceRawVcs and NonLocalValue correctly for Effects: #89133
  • turbo-tasks-backend: improve print_cache_item_size instrumentation: #91742
  • Turbopack: switch from base40 to base38 hash encoding (remove ~ and . from charset): #91832
  • Use charCodeAt for normalizePathTrailingSlash: #91380
  • Turbopack: Only patch lockfile when bindings fails to load: #91379
  • [create-next-app] Skip interactive prompts when CLI flags are provided: #91840
  • [devtools] Make instant navs panel draggable: #91914
  • [Segment Bundling] Bundle static prefetches based on size: #91439
  • turbo-tasks-backend: assert non-transient task_ids in track_modification: #91924
  • fix(turbopack): preserve resolveExtensions priority in read_matches fast path: #91856
  • turbopack: Remove Vc::resolve(), migrate all callsites to Vc::to_resolved(): #91725
  • turbo-tasks: add hashed cell mode for hash-based change detection without cell data: #91576
  • [cna] Upgrade to Biome 2.4 with Tailwind support: #86065
  • [devtools] Show AggregateError.errors in the error overlay: #91835
  • Narrow the opengraph-image function return type: #91893
  • [experiment] Add useOffline flag with offline retry behavior: #92011
  • adapters: remove unused suffix code: #91997
  • [experiment] Add useOffline hook to expose offline state to userland: #92012
  • [turbopack] Don't use turborepo to build the docker image: #92029
  • Use RcStr directly in napi(object) structs instead of converting to String: #92014
  • Rename SingleModuleReference::asset to SingleModuleReference::module: #92028
  • Revert "turbo-tasks: add hashed cell mode for hash-based change detection without cell data": #92103
  • [ftl] Include cause of route types: #92056
  • fix: handle file:// URLs from import.meta.resolve in cache handler path (fixes #73796): #90370
  • Turbopack: exclude metadata routes from server HMR: #92034
  • next.config.js: Accept an option for serverFastRefresh: #91968
  • TURBOPACK: support parse windows absolute path with single slash: #92076
  • Enable varyParams tracking for Cached Navigations: #92113
  • telemetry: set turboFlag correctly: #92149
  • Instant Validation: Allow unconfigured slots to render optionally: #92126
  • Turbopack: statically evaluate path.sep: #92150
  • Turbopack: use same hash for immutable-static-hashes.json: #92157
  • [turbopack] replace regex with indexof: #92023
  • Turbopack: createRequire(new URL("...", import.meta.url)): #92153
  • Add PPR evals and fix env loading for agent-eval 0.9.5: #92063
  • Turbopack: support targeting even older browsers: #91563
  • Add rust-fingerprint task and SCCACHE passthrough env: #92167
  • Improve error message for deprecated experimental.dynamicIO config: #92081
  • [turbopack] Fix CSS HMR on Safari: #92123
  • simplify session dependent tasks and add TTL support: #91729
  • disable bmi2 in qfilter: #92177
  • Improve revalidateTag JSDoc to include guidance about required second parameter: #92176
  • fix: pin 19 actions to commit SHA, extract 7 expressions to env vars: #92016
  • partial fallbacks: adapter support for intermediate shells: #91902
  • Turbopack: trace fs.readdir calls: #92148
  • feat: add NEXT_HASH_SALT env var for content-hash filename salting: #91871
  • Fix DashMap read-write self-deadlock in task_cache causing hangs: #92210
  • [turbopack] use a single query parameter for cache busting: #92214
  • Generate a CLI warning if using Rosetta 2 on Apple Silicon: #92220
  • remove the loop from StaticSortedFile::lookup: #91688
  • Add telemetry for adapterPath config usage: #92228
  • Node.js streams: First pass: #90500
  • fix: preserve HTTP access fallbacks during prerender recovery: #92231
  • Remove unnecessary ALS re-exports from entry-base.ts: #91527
  • Allow multi-level .localhost subdomains in dev origin check: #92262
  • turbo-tasks-backend: stability fixes for task cancellation and error handling: #92254
  • Add MCP get_compilation_issues tool and NAPI method: #92062
  • Add view transitions eval (agent-043): #92260
  • [turbopack] optimize RcStr parsing: #91773
  • Ensure app-page reports stale ISR revalidation errors via onRequestError: #92282
  • Move streamToUint8Array back to node-web-streams-helper.ts: #92263
  • Revert "simplify session dependent tasks and add TTL support (#91729)": #92320
  • fix: add @deprecated annotation to experimental.useCache: #92316
  • Improve existing dev server error message to suggest using it: #92317
  • Restart the next dev server if .next is deleted: #92135
  • Update Rust toolchain to nightly-2026-04-02: #92288
  • Turbopack: Remove FileSystemPath::value_to_string in favor of ValueToStringRef::to_string_ref: #92284
  • [turbopack] use zero copy qfilter deserialization: #90574
  • feat: add experimental.swcEnvOptions for SWC preset-env configuration: #92272
  • Turbopack: Dedupe our two filesystempath extension/extension_ref functions: #92048
  • turbo-tasks: replace async resolve fns with custom Future types (ResolveRawVcFuture, ResolveVcFuture, ToResolvedVcFuture): #91554
  • next-core: deduplicate output assets and detect content conflicts on emit: #92292
  • Handle edge runtime in places that import node:stream: #92354
  • Fix fallback route params case in app-page handler: #91737
  • use sorted inserts to improve builder performance: #91553
  • Allow for parsing app route strings with and without slot names.: #92327
  • fix(server-hmr): metadata routes overwrite page runtime HMR handler: #92273
  • turbo-persistence: optimize file syncing: #90542
  • Turbopack: Remove turbo_tasks::apply_effects, use Effects::apply instead: #91858
  • Turbopack: Add a check for node version before allowing workerThreads: #91614
  • turbo-persistence: skip BlockCache for uncompressed (mmap-backed) blocks: #92390
  • Include more context in macOS Rosetta 2 warning message: #92436
  • change the process name of builds: #92411
  • turbo-persistence: pin referenced BlockCache entries to prevent eviction: #92361
  • 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
  • Fix sst inspect tool to respect CURRENT and stale sst files: #92414
  • Optimize how we track data for persistence: #89370
  • [turbopack] add family name to many spans: #92415
  • Route Handlers: Fix devRequestTimingInternalsEnd and Turbopack server HMR: #92271
  • next-routing: middleware matching and app request URL normalization: #91859
  • turbo-persistence: Use AtomicBool for is_empty() to avoid lock contention: #92481
  • fix: mention params and searchParams in blocking-route error messages: #92360
  • CPU prof: Write profiles to .next-profiles instead of .next/cpu-profiles: #92078
  • Turbopack: Write trace file to .next-profiles: #92189
  • feat: generate root params types: #91019
  • fix: resolve function configs in unstable_getResponseFromNextConfig: #92501
  • Node.js streams: Fork points: #92252
  • Turbopack: Add --internal-trace cli flag: #92190
  • Fix minimumReleaseAgeExclude for React and friends: #92535
  • Add experimental unstable_io() API behind experimental.unstableIO flag: #92521
  • Update React from 74568e86-20260328 to 404b38c7-20260408: #92536
  • 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
  • turbo-tasks-backend: prevent duplicate task restores with restoring bits: #92389
  • Add next internal upload-trace: #92191
  • Request logging: Fix generate-params time being included in next.js time: #91386
  • fix: scope "Pages Router only" comment to default export in next/error: #92566
  • Turbopack Build: Remove dev fouc from production bundle: #80935
  • Turbopack: Improve unable to resolve next error: #91394
  • fix(hmr): reconnect WebSocket after sleep/wake: #91416
  • Handle target option in React Compiler for Pages + React 18: #91500
  • Replace wasmer with wasmtime for SWC plugin WASM engine: #91533
  • turbopack: fix incremental build when module factories are restored from persistent cache: #92569
  • [turbopack] Rust dependency caching via sccache: #91873
  • trace: detect rage restarts and deleted .next dirs: #92489
  • [turbopack] fix a debug_assert failure: #92581
  • Don't swallow strings thrown in Server Components: #92592
  • Fix NextFontIssue IssueStage: CodeGen → Resolve: #92588
  • Node.js streams: Add forkpoint for CacheComponents: #92444
  • Resolve compilerOptions.paths in tsconfigs without compilerOptions.baseUrl: #92277
  • Turbopack: extract inline base64 decode helper to shared @turbopack/base64 module: #92549
  • Add codemod command to middleware deprecation warning: #92532
  • turbopack: move CSS module composes validation from code generation to resolving: #92582
  • Drop turbo_tasks::function from ValueDebug trait items: #92593
  • [partial fallbacks]: enable by default: #92627
  • Turbopack: fix filesystem watcher config not applying follow_symlinks(false): #92631
  • Turbopack: cut number of client references in half: #92607
  • Remove a ton of turbo task functions from Issue trait items: #92623
  • feat(turbopack): add LocalPathOrProjectPath PostCSS config resolution: #91338
  • feat(turbopack): change DiskFileSystem root to Vc for portable cache: #92603
  • Turbopack: remove unused ChunkableModules struct: #92606
  • Fix segment explorer file pill accessibility: #92608
  • Disable sccache temporarily: #92657
  • Delete some dead turbo task functions: #92596
  • Node.js streams: Add forkpoint for error recovery: #92457
  • turbo-tasks: Drop output_dependent on immutable task completion: #92683
  • Turbopack: properly remove unused TS enums with scope hoisting: #88205
  • fix(server-actions): skip type-only ExportNamed in pre-pass to prevent phantom registerServerReference: #92494
  • Turbopack: Add import.meta.glob support (Vite compat): #92640
  • turbo-tasks: Fix recomputation loop by allowing cell cleanup on error during recomputation: #92725
  • TURBOPACK: support crsossOriginLoading: #92070
  • Compiler: Support boolean and number primtives in next.config defines: #92731
  • Fix prefetch hints not being loaded during revalidation: #92625
  • Exclude trace files from directory deletion in builds: #92486
  • Switch segment prefetch cache miss response from 204 to 404: #92751
  • Ensure x-nextjs-data header is only set during resolve: #92752
  • feat(trace-server): add query CLI and MCP API to turbopack-trace-server: #92030
  • Improve error stacks for dynamic API usage in "use cache": #92736
  • Node.js streams: Add forkpoint for continueDynamicHTMLResume: #92471
  • Node.js streams: Add forkpoint for generateDynamicFlightRenderResult: #92474
  • Node.js streams: Add forkpoint for generateStagedDynamicFlightRenderResult: #92509
  • Add unstable_prefetch route segment config and decouple runtime prefetching from unstable_instant: #92754
  • feat(turbo-tasks-backend): gate prepare_tasks_with_callback trace span behind feature flag: #92779
  • Update next versions of internal apps: #92666
  • turbo-persistence: stop background persisting after unrecoverable failure: #92106
  • Stop using deprecated downlevelIteration: #92652
  • Disable build caches for production/staging/force-preview deploys: #92792
  • Fix turbo cache flag: use --force: #92796
  • Fix devlow-bench: tsconfig rootDir mismatch with package.json bin: #92800
  • Scope Safari ?ts= cache-buster to CSS/font assets only (Pages Router): #92580
  • Enable wasm plugins on windows arm: #92544
  • prefetchInlining: fix build crash on notFound() pages: #92806
  • turbopack: gate ValueDebugFormat and ValueDebug behind debug_assertions: #92628
  • Add TurboMalloc::thread_park() to flush and collect on thread park: #92804
  • Stop using deprecated baseUrl: #92653
  • Turbopack: Use FrozenMap for module export information: #92802
  • Turbopack: remove webpack chunk detection: #92773
  • Turbopack: refactor ESM codegen generation: #92777
  • Fix monorepo @next/swc binary postinstall: #92813
  • webpack: fix swcPlugins with relative paths: #92770
  • Turbopack: shorter error for ChunkGroupInfo::get_index_of: #92814
  • Turbopack: properly set NODE_ENV for SWC plugins: #92579
  • Node.js streams: Add forkpoint for logMessagesAndSendErrorsToBrowser: #92510
  • Node.js streams: Add forkpoint for createCombinedPayloadStream: #92511
  • Node.js streams: Add forkpoint for renderWithRestartOnCacheMissInValidation: #92512
  • Node.js streams: Add forkpoint for prerenderToStream: #92513
  • Turbopack: shorter error message for ModuleBatchesGraph::get_entry_index: #92828
  • Turbopack: refactor export analysis: #92781
  • fix(trace-server): default MCP port to --port + 1 to avoid conflicts: #92831
  • Revert "Node.js streams: Add forkpoint for prerenderToStream": #92845
  • Turbopack: remove StarImportAnalyzer: #92830
  • Turbopack: analyzer improvement followups: #92834
  • Turbopack: move assignment_scopes computation into ImportMap: #92835
  • Warn for non-deterministic "use cache" args during final prerender: #92820
  • Turbopack: Use lld again on ARM64 glibc Linux: #92860
  • turbopack: cache TransformPlugin in narrow-scoped turbo-tasks functions: #92842
  • Allow overriding outputHashSalt in modifyConfig: #92856
  • Support type cast expressions in page static info extractor: #92837
  • turbo-tasks: add info_span for blocking waits during task restore: #92878
  • Fix dev mode hydration failure when page is served from HTTP cache: #92892
  • [devtools] Preserve full code frames in browser overlay: #92621
  • Enable prefetchInlining by default: #92863
  • Turbopack: Use an async lock in the filesystem watcher: #92906
  • Replace deprecated moduleResolution: "node": #92654
  • turbo-tasks: Reduce allocations on cache hits: #92756
  • fix(next/image): ensure images.maximumResponseBody applies to local images too: #92920
  • rename MagicAny: #92918
  • turbopack: reduce EffectStateStorage memory by storing u128 content hashes: #92902
  • turbo-trace-server: reduce allocation overhead when loading large trace files: #92896
  • Turbopack: optimize SelfTimeTree performance, memory usage, and fix range query boundaries: #92931
  • remove flag guarding unstable_io: #92923
  • Support more prefetch configuration options: #92859
  • Improve deduping of concurrent 'use cache' invocations: #91830
  • [partial fallbacks]: include prefetch requests in shell upgrade handling: #92894
  • Redesign blocking route dev overlay and build errors: #92638
  • Switch to cargo-binstall and pre-built sccache binaries: #92911
  • Remove prefetch from instant config: #92761
  • Improve "make root node" trace attributes: #92941
  • Use existing commitId for tarball URL in stats action: #92899
  • Use OIDC for CodSpeed: #93059
  • Restore dev-mode cache-fill timeout for 'use cache': #93055
  • Make 'use cache' fill timeout configurable: #93070
  • Strengthen _rsc cache-busting param: #92755
  • turbo-tasks: drop once_cell, const-init TRAIT_METHOD, ctor WORKER_TASKS: #93090
  • Patch setHeader for direct route handlers: #93101
  • [turbopack] Persistent last_successful_parse: #92852
  • [turbopack] Unify Cell Storage: #92974
  • fix(use-cache): remove awaiting revalidation: #92636
  • [turbopack] Fix max_level_hint to return most verbose per-target level: #93128
  • feat(turbopack): add NEXT_TURBOPACK_TRACING_PATH to control trace output location: #93084
  • Turbopack: move import_usage computation into ImportMap: #92891
  • Turbopack: unify ModuleGraph constructors: #93203
  • Turbopack: move get_inner_asset into ecmascript module: #93191
  • [turbopack] drop TransientState: #92853
  • instant(): Block out-of-band client fetches: #93099
  • [next/image] Stop using deprecated url.parse: #93208
  • Suspend dynamic route params in dev instant shell: #93108
  • Recognize super(...) messages in Error subclass constructors: #93182
  • [turbopack-trace-server] Performance improvements for span event handling: #93179
  • Preserve __NEXT_ERROR_CODE across the /_error page handoff: #93183
  • Reduce allocations in the next_debug_instant_stack transform: #93222
  • Apply sourcemaps by default during prerender in next build: #93280
  • Turbopack: compute exports without full analysis: #92823
  • Turbopack: cheaper check in map_next_dynamic: #93283
  • Fix route handler SWR blocking on Node runtime: #93189
  • [turbo-tasks-backend] Single-item optimization for lost follower operations: #93200
  • Fix export * as X from './self' in scope-hoisted modules: #93192
  • Turbopack: only compute module ids for included modules: #93276
  • Forward invalid dynamic usage errors on client-side navigations: #93184
  • HMR: debounce status indicator transitions to prevent flicker during bursts of changes: #93229
  • Turbopack: iter_reachable_modules: #93315
  • Turbopack: add failing test for cross-module side-effect inference: #93323
  • Turbopack: also add edge count to trace: #93314
  • Turbopack: pull in updated vercel/nft tests: #93321
  • [turbopack-trace-server] optimize loading: #93264
  • turbo-tasks: precompute trait-impl vtables at compile time: #93092
  • Honor the route-level expire value with blocking revalidation: #93211
  • Turbopack: add experimental.turbopackWorkerAssetPrefix to keep Workers same-origin when assetPrefix is a CDN: #93271
  • Report OS memory pressure in TurboMalloc and trace samples: #93333
  • Speed up native postinstall script: #93312
  • Turbopack: remove unused module references: #93335
  • Turbopack: remove ModuleResolveResultItem::OutputAsset: #93349
  • Turbopack: delete unused turbo-static crate: #93324
  • fix a snapshot encoding error that could happen under concurrent mutation and snapshotting: #92658
  • Enable server HMR for metadata routes (manifest.ts, robots.ts, etc.): #93110
  • [next/image] Only fire onError once: #93209
  • fix: handling of falsey values in error boundaries: #93134
  • Update upload trace url: #93350
  • enable validateRSCRequestHeaders by default: #93367
  • Deprecate edge runtime: #93369
  • Update 05-server-and-client-components.mdx: #93374
  • Only log partytown setup error once: #93378
  • Remove leftover Turbopack manifests: #93398
  • trace-server: shrink_to_fit LazySortedVec after sorting: #93361
  • Revert "Revert "Node.js streams: Add forkpoint for prerenderToStream"": #93376
  • feat(metadata): support non-standard directives in robots.ts via other: #93206
  • [turbo-trace-server] optimize loading even more: #93332
  • Fix streaming in draft mode for cache components: #93417
  • Drop once_cell from all direct crate deps: #93095
  • Replace Lazy static lookups with phf::Map: #93096
  • Include deployment id in cacheHandlers keys: #93453
  • fix(next/image): Improve error message for private IP (SSRF) rejections: #91686
  • turbo-tasks-backend: fix snapshot coordination races + extract SnapshotCoordinator: #93416
  • Fix dev mode reload and error on back navigation between Next.js pages: #93486
  • Fix double-encoding of URL pathname parts in client param parsing: #93491
  • Don't suppress usage of deprecated TypeScript compilerOptions: #93377
  • Turbopack: fix import_usage for functions behind member expressions: #93504
  • [turbopack] shrink the size of futures: #93474
  • [turbopack] Simplify local task tracking: #93478
  • [turbopack] correct a fencepost error in our inline string descision: #93524
  • Turbopack: make rcstr! macro expansion const: #93516
  • Turbopack: lazy aggregation optimize via persistent pending flag: #93454
  • Detect 'use cache' module-scope deadlocks early in dev: #93500
  • Turbopack: really fix MAX_INLINE_LEN: #93531
  • Bundle the 'use cache' deadlock probe worker: #93538
  • Support configuring a default instant validation level : #93301
  • Turbopack: simplify asset ident constructors: #93213
  • Disable instant validations in draft mode: #93472
  • Drop ReferencedAsset::from_resolve_result as a turbotask: #93297
  • Turbopack: Cache effect errors, replace the write_lock Mutex with a lazily created Notify instance: #93476
  • Order loader tree imports by tree depth: #93537
  • Turbopack: more strict vergen setup: #93541
  • [devtools] Force ANSI colors on overlay code frames regardless of TTY: #93550
  • turbo-rcstr: replace rcstr! macro_rules with proc macro: #93551
  • Turbopack: Fix middleware matcher suffix: #93590
  • Turbopack: Match proxy matchers with webpack implementation: #93594
  • Track searchParams access through a Proxy to catch missing-key reads: #93549
  • Turbopack: Change DynEffect::dyn_value to DynEffect::value_hash, a simple u128: #93552
  • Cherry-pick ghsa commits to canary: #93614
  • Hold cacheSignal across unstable_cache foreground revalidation: #93617
  • Encode non-ASCII characters in cache tags at construction: #93601
  • Stabilize unstable_io: #93621
  • Use Next.js version as Turbopack persistent cache versioning key: #93605
  • Trace-server: Fix bottom up, and reduce allocations in turbopack-trace-server bottom-up grouping: #93460
  • feat(turbopack): add chunkLoadingGlobal config option: #93488
  • turbopack: reschedule stale tasks with correct invalidation priority: #92897
  • fix(devtools): render nested error messages with HotlinkedText: #93620
  • Fix: Improved rewrite detection during optimistic routing: #93619
  • Fix "type: module" in project dir when using standalone or adapters: #93612
  • Instant Insights: favor reported errors over missing slots: #93709
  • Remove ineffective turbo-tasks: #91341
  • Remove redundant instant navigation prefetch header: #93713
  • Instant Insights: Favor reporting errors from all potential navigations over reporting a failed attempt to validate when a slot is missing: #93714
  • Proof of concept: task eviction after snapshot for turbo-tasks-backend: #91790
  • [turbopack] fix feature usage telemetry: #93100
  • Turbopack: don't generate next-server.js.nft.json with adapters: #93684
  • Add an info panel for the existing "Cache disabled" indicator: #93756
  • Extend instant error overlay to metadata, viewport, and sync IO errors: #93287
  • Turbopack: expose hashes of source files to adapters: #93539
  • bfcacheId: Opt out of state preservation: #93633
  • Honor Suspense-above-body opt-in for dynamic generateViewport: #93759
  • Turbopack: fix lock-order inversion between Storage::map and Storage::snapshots: #93788
  • [turbopack] Enforce root attribute for strongly consistent reads and collectibles: #93114
  • Add next internal static-routes-info CLI command: #93399
  • Craigandrews/ensure isr lru is written if requests collapsed: #93766
  • Fix Turbopack worker_threads URL resolution: #93432
  • Patch playwright-core to resolve _finishedPromise on requestFailed: #93802
  • Fix catch-all router.query corruption with basePath + rewrites: #93294
  • fix: GNU xargs warns about incompatible --replace/--max-args: #93821
  • fix: renumber non-sequential errors in errors.json: #93824
  • simplify session dependent tasks (#91729): #93227
  • Surface invalid dynamic usage errors via Flight in dev: #93706
  • Show inner "use cache" as cause of nested-dynamic cache error: #93707
  • fetch: respect HTTP Cache-Control headers with TTL-based invalidation (#91729): #93228
  • [CC] fix: cachedNavigations missing asyncApiPromises in resumes: #93827
  • Fix server action forwarding loop with middleware rewrites: #93792
  • Instant Insights: When unable to complete validation provide a filename for the unvalidated boundary: #93770
  • Fix Date.now() cause shadowing in sync IO error overlay: #93857
  • Instant Insights: only report non-validatable if dev render is error free: #93858
  • Remove partialFallbacks config flag: #93859
  • Fix warning in new apps caused by incorrect image dimensions: #93826
  • Trace middleware/proxy source files in webpack NFT pipeline: #93871
  • Redesign dev overlay: cleaner shell + instant fix-card guidance: #93755
  • turbo-tasks: prioritize recomputed tasks with Recomputation priority: #93876
  • [Turbopack] Add graph-based CSS chunking algorithm behind experimental.cssChunking: "graph": #93606
  • turbopack: emit assets before duplicate check in emit_assets: #93875
  • Pass projectDir to adapter modifyConfig: #93916
  • Distinguish in-navigation errors in the instant error overlay: #93843
  • Eval next.config export functions in the try catch: #93884
  • Rename TaskExecutionReason::Initial to Root: #93922
  • Use node streams for server inserted HTML: #93934
  • Add nextConfig.instrumentationClientInject: #93785
  • Remove vercel approvers: #93921
  • [otel] honor traceparent for verbose mode spans: #93874
  • Fix cross-param leak with prefetch={true} and cachedNavigations: #93940
  • Enable rootParams by default: #93863
  • devlow: add run sampling snapshots and comparison reports: #93833
  • Allow inspecting prerender worker again: #93947
  • make rcstrs on the heap/static slightly smaller: #93805
  • Add MCP compile_route tool: #93337
  • [turbopack-trace-server] Add memory samples to the mcp tool results: #93338
  • Stop pinning compiled chunk source on EcmascriptBuildNodeChunkVersion. : #93807
  • [turbopack] Add trace metadata about the persist size: #93339
  • Turbopack: fix subpath imports pointing to external packages: #93308
  • Turbopack: fix error reporting with crashing webpack loaders: #93926
  • Polish instant fix cards and validation messages: #93894
  • Add deployable tarballs to pack-next: #93963
  • fix(devtools): detect VS Code renamed macOS binary in launch-editor: #93971
  • turbo-tasks: task-storage memory wins: #93720
  • Turbopack: respect the module-sync export condition: #93970
  • devlow-bench: percentile-based comparison and run retries: #93950
  • Prerender HTTP access fallbacks with Cache Components semantics: #93988
  • Add experimental.appShells feature flag: #93997
  • Make --debug-build-paths work with src/ directory projects: #94016
  • Revert "Prerender HTTP access fallbacks with Cache Components semantics": #94018
  • Respond to App Shell prefetches on the server: #93998
  • [turbopack] Disable ctor under RA: #94022
  • Turbopack: don't crash the dev server when node_modules/next is briefly unresolvable: #93877
  • Include PPR routes in dynamicRoutes regardless of revalidate time: #94025
  • Enable experimental.varyParams by default: #94010
  • Enable experimental.optimisticRouting by default: #94011
  • Enable experimental.cachedNavigations by default with cacheComponents: #94012
  • Revert "Include PPR routes in dynamicRoutes regardless of revalidate time": #94032
  • Prerender static metadata under dynamic segments to canonical pathname: #93873
  • Instant navs devtools revamp: #94027
  • Add Chromium-only Playwright image publisher: #94051
  • Replace next-ppr-optimizer with next-cache-components-optimizer: #94035
  • Fix errors.json merge driver to handle gaps in error codes: #93829
  • Turbopack: make available_modules an OperationVc and simplify merged module bookkeeping: #94055
  • Improve notFound recovery in error pathway: #94037
  • Turbopack: Fix unsound IntoIterator for ReadRef: #94122
  • Fix Firefox refresh loop on initial load of streaming pages in dev mode: #94128
  • Prefetch App Shells on the client: #93999
  • ServerActionsGraph: pass ModuleGraphLayer as OperationVc: #94141
  • Bugfix: Incorrect search params stored in cache: #94144
  • Remove extra word: #94160
  • Fix default regex for require.context in Turbopack analyzer: #94162
  • Fix short circuit evaluation of AND / OR in the Turbopack analyzer for string & nullish-related methods: #94159
  • Turbopack: fix instrumentationClientInject with type:module: #94184
  • Align issue triage guidance with automated behavior: #94189
  • [CC] Streaming prerender: #94044
  • [CC] Avoid unnecessary conversions to a stream: #94192
  • Propagate adapter preferred regions: #94123
  • Consolidate Resume Data Caches and partially revert #88556: #94194
  • Fix 'use cache' bail-out under unstable_instant = false: #94198
  • Turbopack: use module graph for NFT: #92901
  • Turbopack's analyzer: always treat promises as truth-y and non-nullish: #94186
  • Update shortcircuit_if_known to eval_shortcircuit(): #94163
  • Remove dead code from JsValue::Binary in is_truthy: #94165
  • Produce valid file URLs for import.meta.url on Windows in Turbopack: #94179
  • [turbopack] Store TaskDirtyCause in Dirtyness and pass to NativeFunction::span: #94057
  • Turbopack: cleanup ModuleHotReferenceAssetReference: #94206
  • Add Errors/Insights tab split to the instant error overlay: #94073
  • Replace VcStorage with real TurboTasks in tests/benches : #93955
  • Redesign the unrendered-segment instant validation overlay: #93879
  • turbopack tracing: add chunk_name to get HMR events span: #94061
  • Turbopack: reduce hmr chunk list subscriptions: #94062
  • [turbopack] Separate JsValue into it's own folder in the analyzer: #94208
  • feat(image-optimization): add experimental flag imgOptOperationCache: #94246
  • Exclude static metadata and viewport from error recovery prerender when cache-components is enabled: #94134
  • [turbopack] Shrink ReadRawVcFuture from 80 to 64 bytes: #94201
  • [turbopack] Move WellKnownObjectKind & WellKnownFunctionKind into well_known/kinds.rs in the analyzer: #94209
  • [turbopack] Move require.context-related code into a seperate file in the analyzer: #94210
  • Turbopack analyzer: analyze ternaries + promises in string & nullish methods: #94187
  • [turbopack] Break up graph.rs in the analyzer into smaller files: #94211
  • [turbopack] Add explain() methods to WellKnownObjectKind and WellKnownFunctionKind: #94217
  • [turbopack] Handle negative numbers as constants in the analyzer: #94218
  • [turbopack] Use ast_path.kinds() instead of mapping over ast_path in the analyzer: #94221
  • [CLI] Exit non-zero with a clear message when next typegen fails: #94241
  • Switch TotalOrderF64 to f64 in ConstantNumber to correctly handle NaN === NaN and 0 === -0 inside the Turbopack analyzer: #94172
  • Use serde_json::Number in CompileTimeDefineValue and remove TotalOrderF64: #94177
  • Update ctor from 0.10 to 1.0.6: #94045
  • Include --port in next internal query-trace startup hint and help example: #93961
  • Turbopack: refactor NFT to add Endpoint.traced_files: #94224
  • Turbopack: show codeframe when tracing too much: #94207
  • fix(instrumentation): await instrumentation in RouteModule.prepare: #94306
  • [turbopack] Function pointers are copy: #94273
  • DiskFileSystem: run write effects on a spawned task: #94140
  • Disable default-case ESLint rule for type-checked TypeScript files: #94316
  • Handle a purged browser cache on back navigation: #94317
  • Persist debug channel via IndexedDB without blocking hydration: #94243
  • Fix debug channel not closing on the client with Node streams: #94268
  • Avoid bundling HMR refresh reducer in production: #94305
  • Remove the instantNavigationDevToolsToggle flag: #94322
  • skip render dev overlay ux under private flag: #94346
  • Turbopack: fix bundle-analyzer for NFT change: #93363
  • Devirtualize the backend api inside of turbo_tasks and turbo-tasks-backend: #94007
  • Delay Node Fizz piping until after render task: #94347
  • Enable Node streams by default: #94311
  • Turbopack: support turbopackIgnore on more traced calls: #94361
  • [turbopack] Treat assignments to module.exports as side-effect free: #94293
  • instant: enable navigation validation by default: #94312
  • Turbopack: Move turbo-tasks/src/raw_vc.rs to turbo-tasks/src/vc/raw.rs: #94239
  • Turbopack: fix pages index normalization for --debug-build-paths: #94341
  • Deprecate undocumented custom server methods: #94348
  • Trace cacheHandler and cacheHandlers when using adapters: #94197
  • fix: build hangs if sync IO aborts before root chunk is flushed: #94365
  • DiskFileSystem: store Effect full_path as Arc: #94332
  • [CC] add shell stages: #94438
  • [turbopack] Add BumpVec (vector implementation that takes a Bump): #94296
  • Ensure aborting has the same inputs as render: #94436
  • [App Shells] App shells in runtime prefetches: #93801
  • [turbopack] Optimize TaskInput implementations: #94202
  • make TaskInput::is_resolved inlinable everywhere: #94213
  • [App Shells] staged shell rendering in cached navs: #94441
  • [App Shells] staged shell rendering during build: #94442
  • Keep the dev React debug channel on Node streams end to end: #94433
  • Revert "Keep the dev React debug channel on Node streams end to end": #94459
  • [turbopack] Only ship top-level async support in the runtime when needed: #94376
  • Allow unstable_retry from TS plugin check in Next.js Error APIs: #94460
  • [turbopack] Treat local const assignments as side-effect free: #94294
  • [turbopack] Remove worker helpers from the default runtime: #94372
  • Extract App Shell from static prefetches: #94095
  • Turbopack: refactor ServerActionManifestAsset to be lazy: #94377
  • Update vendored lodash to 4.18.1: #94473
  • Turbopack: Perform issue filtering without turbo-task functions: #93885
  • Keep Instant DevTools locked when opening error overlay: #94357
  • fix(deps): bump @vercel/nft@1.10.2: #93979
  • Simplify turbo-tasks-backend: collapse single-impl traits and remove redundant Arc layers: #93983
  • Turbopack: refactor to use get_ecma_transform_rule: #94485
  • Turbopack: fixup cache handler tracing: #94477
  • [turbopack] Remove turbotask functions from trait ResolveOrigin: #94324
  • Turbopack: remove EcmascriptParsable::parse_original: #94465
  • Turbopack: Add an experimental option for eviction: #94439
  • Specialize client hook prerender abort reasons: #94494
  • enable eviction on canary: #94451
  • Remove turbopackMemoryLimit it is dead: #94483
  • [turbopack] Enable Effects to be evicted: #94173
  • [turbopack] standardize chunk entry names for webpack and postcss loaders: #94256
  • Add global config to enable Partial Prefetching: #94448
  • Fix: Subtree hints not propagating correctly: #94489
  • Partial Prefetching: Default to App Shell only: #94510
  • Turbopack: refactor into get_next_client_transforms_rules: #94487
  • [cna] Use allowBuilds instead of ignoredBuiltDependencies when using PNPM 11+: #94544
  • Turbopack: content hash polyfill sourcemap file: #94548
  • Remove experimental.useNodeStreams flag as it's enabled: #93938
  • Remove dead cacheComponents web streams path: #93944
  • fix(dev-overlay): Tidy up issues/insight menu and tab overlay: #94549
  • [turbopack] Remove WebAssembly helpers from the default runtime: #94373
  • enable eviction by default: #94452
  • Rename prefetch option force-runtime to allow-runtime: #94568
  • [turbopack] Use an arena for JSValues: #94297
  • Stabilize export const prefetch: #94571
  • Fix node:stream leak in webpack edge bundles: #94585
  • Stream Cache Components dev render instead of restarting on cache miss: #94457
  • Fix Navigation Inspector Continue Rendering with loading.tsx: #94355
  • [turbopack] add an extension to trace files: #94587
  • Make router-act ignore App Shell prefetch requests: #94580
  • Enable experimental.appShells by default with cacheComponents: #94516
  • [turbopack] Lazily allocate the BlockCaches: #94562
  • Stabilize catchError and retry by removing unstable_ prefix: #94610
  • Revert "Stabilize catchError and retry by removing unstable_ prefix": #94617
  • Stabilize unstable_instant: #94578
  • Reapply "Stabilize catchError and retry by removing unstable_ prefix": #94623
  • [turbopack] Enable turbopackFileSystemCacheForBuild by default in non-stable releases: #94616
  • Add a cold cache dev indicator: #94611
  • instant: build fix-card Copy AI prompt dynamically from title + link: #94637
  • Stage short-lived 'use cache' entries correctly in dev: #94645
  • Call register_assignment_scope() in visit_export_default_expr() and visit_export_default_decl(): #94581
  • fix: handle shell errors when resuming Node streams: #94668
  • [turbopack] Rename variables in path_join and add tests: #94625
  • Warn on prefetch={true} navigation without Partial Prefetching (dev): #94672
  • Serve stale 'use cache' entries in the dev server until they expire: #94662
  • Re-fetch dynamic content on navigation with partialPrefetching enabled: #94655
  • Add Owner Stack to "prefetch={true} navigation without Partial Prefetching" warning: #94683
  • [tubopack] migrate rcstr! to use scattered collect: #94498
  • Strip internal dev request-id headers from userland headers(): #94703
  • Persist 'use cache: private' entries in dev: #94694
  • [App Shells] refactor instant-validation to make adding new stages easier: #94711
  • migrate turbo-tasks to scattered collect: #94503
  • [CC] refactor staged rendering codepaths in params/searchParams: #94718
  • [App Shells] Track whether shell prefetch used session data: #94484
  • Treat empty resume bodies as dynamic render requests: #94729
  • [codemod] Write pnpm overrides to pnpm-workspace.yaml on pnpm v11+: #94690
  • [CC] Exclude caches with low stale from static prerenders: #94678
  • [CC] Rename shellStage to streamReleaseStage: #94749
  • [turbopack] Drop data while serializing in next build: #94561
  • [turbopack] Optimize cell_dependency representation: #94717
  • [turbopack] Use final_read_hint in top level turbo tasks: #94712
  • Allow root params in App Shell (client)
  • fix: this in edge sandbox setTimeout/setInterval: #94754
  • Avoid a premature Suspense fallback flash in the streaming dev render: #94783
  • Format submillisecond durations as milliseconds: #94813
  • Move warnOnce imports into statements guarded by process.env.NODE_ENV === 'development': #94781
  • Expand signature rewriting to allow returning ResolvedVc from turbo task functions: #94772
  • Move errorOnce imports into statements guarded by process.env.NODE_ENV === 'development': #94782
  • Turbopack: add experimental React compiler support: #94573
  • pass --locked to cargo binstall: #94834
  • [turbopack] Allocate Effects in an arena: #94614
  • [turbo-tasks] Shrink RawVc to 8 bytes and CellId to 4 bytes: #94792
  • dev-overlay: polish error header layout and instant fix-card chip: #94790
  • Make cacheMaxMemorySize: 0 and custom cache handlers fast in dev: #94784
  • Fix remaining OTEL issues in adapter: #94817
  • Turbopack: improve NFT warning message: #94854
  • Add experimental.useExperimentalReact to opt into React's experimental channel: #94861
  • Turbopack: improve issue printing colors: #94858
  • [turbopack] Update algebra in chunking algorithm: #94873
  • [CC] Fix accumulator flushing logic: #94857
  • trace-server: render read progress in place on a terminal: #94879
  • Turbopack: Add an OrdResolvedVc wrapper type: #94875
  • Turbopack: don't run NFT for output:export or Edge: #94862
  • react-compiler: don't emit diagnostics as issues: #94874
  • Turbopack: fix tracing of sharp@0.35: #94845
  • Support vary params rewinding: #94809
  • [App Shells] Allow root params in app shells: #94738
  • Rename experimental.useExperimentalReact to blockingSSR: #94869
  • Fix non-RSC router prefetch handling: #94553
  • Log partialPrefetching during startup: #94822
  • Avoid re-logging server-originated errors forwarded from the browser: #94917
  • Scope the Cold cache indicator in dev to shell cache misses: #94911
  • fix(dev-overlay): correct open-in-editor path when using a src directory: #94775
  • Fix repoRoot for adapters: #94478
  • Fix dev overlay hydration error ordering: #94555
  • [turbopack] Retry chunk loading on failure: #94918
  • [turbopack] Sort modules in chunks to reduce duplicates: #94961
  • router instrumentation: refactor client hook dispatch (1/7): #94755
  • [otel] Add more verbose-mode OTEL spans for App Router: #94894
  • Enforce route segment configs on metadata routes under Cache Components: #94962
  • typegen: default to Turbopack: #94952
  • router instrumentation: add transition start context (2/7): #94766
  • fix: after(callback) called after response end: #94974
  • fix: request APIs in promises passed to after() in actions/handlers: #94964
  • Remove embedded Claude Code plugin marketplace: #94877
  • [otel] Correctly set error code attributes for App API routes: #94979
  • Statically prerender metadata image routes under Cache Components: #94957
  • codemod: cache-components-instant-false + next-cache-components-adoption skill: #94941
  • Remove legacy PPR codepaths: #94955
  • Add a global opt-in for the runtime stage of Cached Navigations: #95064
  • [turbopack] Rename the edge runtime to the self-contained runtime: #94726
  • [turbopack] Sort modules in files by path not ID: #95065
  • Turbopack: Fix log box test on react 18: #95078
  • Turbopack: Avoid clone when sorting by module file path: #95079
  • Fix false-positive export const dynamic in Cache Components detection: #95083
  • Serve ISR fallback shells in response to prefetch requests: #94534
  • Insights: drop irrelevant fix cards from instant errors: #94926
  • Navigation inspector UI updates: #94959
  • Turbopack: Delete dead AttachedFileSystem type: #94960
  • Opt Partial Prefetching routes into the runtime stage of Cached Navs: #95097
  • Fix #95015 by pulling a fix to scattered-collect: #95098
  • Release the instant navs lock without clearing the whole cookie jar: #94947
  • Compute dev fallback params from the most-specific prerendered route: #95066
  • Consider merging chunks when overlap == 1: #95102
  • [turbopack] Add support for single-entry chunks: #94727
  • Turbopack: add TURBOPACK_DEBUG_CSS_CHUNKING env var: #95080
  • Keep the resolved cache life for cacheMaxMemorySize: 0 caches in dev: #95100
  • Avoid mutating req.headers when stripping internal headers: #95116
  • Revert "Remove legacy PPR codepaths": #95113
  • dev-overlay: wire Link prefetch={true} Partial Prefetching warning into Insights: #94798
  • Add missing switch case: #95127
  • Revert "Add missing switch case": #95129
  • Fix Navigation Inspector styles in dark mode: #95126
  • Fix local fonts in statically prerendered ImageResponse metadata route: #95121
  • Surface an error for blocking routes under the Navigation Inspector: #95139
  • Suppress prefetch={true} warning when route opts out via instant = false: #95099
  • [turbopack] Create ServiceWorkerChunkingContextOptions in next-core: #94920
  • instant(): Only render shell, unless prefetch prop is set: #95150
  • [turbopack] Create ServiceWorkerEntryModule and service_worker_chunk_filename: #94921
  • [turbopack] Discover ServiceWorkerEntryModules in next-api and compile + serve those service workers: #94922
  • [PP] Reveal after ShellRuntime when simulating a Shell Prefetch in dev: #95149
  • Replicate production prefetch shells for instant navigations in dev: #95067
  • [next-dev-loop] Fix some papercuts: #95153
  • Gate the dev Cold cache badge behind an experimental flag: #95169
  • [next-dev-loop] Fix cookies: #95177
  • Revert "[turbopack] Use final_read_hint in top level turbo tasks (#94712)": #95178
  • [dev overlay]: restructure Copy-as-prompt body into a step-by-step checklist: #95186
  • Hard-navigate to app routes shadowed by a pages dynamic route: #95185
  • next-dev-loop: require agent-browser >= 0.31.1: #95209
  • fix: preserve middleware rewrite query in Pages API routes: #94905
  • Don't track modifications to transient data stored in tasks: #95133
  • Record size metrics to our compaction and persistence spans: #94977
  • [turbopack] Support undoable modifications for many field types on TaskStorage: #95180
  • Turbopack: make hash_xxh3_hash128 return u128: #95232
  • Improve typing of decodeReply: #95263
  • fix: preserve repeated search params in client page segment cache keys: #94863
  • fix(turbopack): dedupe filename/exportedName in server-reference-manifest worker entries: #95242
  • Avoid bundling client-nodemodules used by unstable_rethrow in client-browser modules: #95196
  • Turbopack: replace cssChunking graph moduleFactorCost with weightDistribution: #95088
  • Fix: Update the URL when a client navigation redirects to a rewritten route: #95207
  • Enhance ESLint rule no-location-assign-relative-destination: #93057
  • [turbopack] Add an experimental chunkingHeuristics to next.config.js: #95019
  • [turbopack] Thread chunkingHeuristics through to chunk groups: #95020
  • [turbopack] Set chunking_heuristics on each ChunkGroupInfo: #95021
  • [turbopack] Use experimental chunking heuristics: #95026
  • [turbopack] Discover service workers in the Turbopack analyzer: #94923
  • Turbopack: This bool could've been an enum: #95288
  • log config evaluation time: #94811
  • Log content-free diagnostics when a postponed state fails to parse: #95216
  • Turbopack: constant evaluate x in y: #95286
  • Surface empty generateStaticParams as a redbox with a real stack: #95269
  • Render a code frame for build errors thrown collecting page data: #95270
  • fix: params/searchParams in client page crashing dev instant validation: #95289
  • Turbopack: compute code hash per use cache function: #94234
  • Fix workers on thread to not crash with napi-rs: #95281
  • codemod: non-interactive upgrade for agents and CI: #95312
  • [PP] Validate Shell prefetches (except gSP): #95151
  • [PP] Instant validation - error for unguarded static params: #94595
  • codemod: bump eslint alongside eslint-config-next: #95314
  • Rename Copy as prompt to Copy prompt, convert FixOption to FixCard: #95309
  • Fix Navigation Inspector in Safari: #95329
  • Fix early OTel proxy tracers in Cache Components prerenders: #95317
  • Re-query deploy-test build logs until id markers appear: #95243
  • Rename DYNAMIC_EXPIRE and DYNAMIC_STALE to describe what they gate: #95361
  • fix(turbopack): allow #/ prefixed subpath import specifiers: #94461
  • Remove 'silence this warning' from instant validation fix output: #95187
  • Make instant() resilient to a leaked navigation-testing cookie: #95375
  • Await reused in-flight prefetch entries under Instant Navigation lock: #95301
  • Cache short-expire 'use cache' values across dev reloads: #95362
  • Fix metadata title dropped on soft navigation with Cache Components: #95315
  • Prefetch links nearest the top of the document first: #95393
  • fix: handle prototype-colliding segment names in segment explorer trie: #95403
  • Clear a resurrected instant cookie on unlock so a hard reload recovers: #95398
  • Recover from blocking routes under Instant Navigation lock when deployed: #95227
  • fix(config): correctly validate cacheHandlers names: #95358
  • Fix history push getting treated like replace when followed by refresh: #95392
  • Skip saving expire: 0 values in the default cache handler in prod: #95363
  • Fix false-positive nested-cache error for a short default profile: #95373
  • Fix navigation getting reverted when a Server Action is in flight: #95391
  • Ignore-list internal frames whose source maps chain to original sources: #95448
  • fix: work around SWC compress bug: #95457
  • Avoid unnecessary rendering for validation in dev: #95394
  • Add serverComponentsHmrCancellation experimental flag: #95462
  • Also rewrite requires in page templates with Webpack: #95446
  • Fix instrumentation hook awaiting for middleware with adapters: #95357
  • otel: Use correct parent span for Node.js middleware: #95306
  • [turbopack] Add E2E tests for service workers: #94924
  • trace-viewer: Support string span ids in nextjs trace backend: #95515
  • evals: fix false-negative regex checks with the agentic LLM judge: #95440
  • fix(dev-overlay): increase fix card grid row gap to clear floating Copy prompt button: #95526
  • [fragment-scroll] Enable new scroll handler by default: #95378
  • Abort superseded Server Components HMR requests on the client: #95463
  • turbo-persistence: skip directory fsync on Windows: #95497
  • Disable supportsImmutableAssets with config.output: #95521
  • Turbopack: add all keys to dynamic exports before sealing the object: #93334
  • Propagate maxDuration to edge adapter outputs: #95118
  • Run instrumentation for Node.js Middleware without Adapter: #95547
  • Fix/next info experimental analyze with graph css chunking: #95542
  • Cancel a superseded Server Components HMR refresh's server-side work: #95486
  • Turbopack: add more context to persistence file errors: #95318
  • [turbopack] Rename rscEndpoint to rscHmrEndpoint: #95538
  • [PP] Surface URL data during prefetching as an Instant insight with rule page: #95365
  • fix: log "Partial Prefetching enabled" during next build: #95593
  • [turbopack] Don't persist if there is little work to do: #95137
  • align dev and build output: #94916
  • [turbopack] Don't evict when there is little memory to save: #95213
  • Consistently gate navigation-testing-lock API on flag: #95582
  • Turbopack: enable import with {type: 'text'} by default: #95606
  • fix(create-next-app): pin both axes on Tailwind template logos to silence aspect-ratio warning: #95609
  • [turbopack] print Turbopack warnings after SSG: #95430
  • fix(create-next-app): render filenames in Geist Mono so the preloaded font is used: #95471
  • Normalize and validate expire and revalidate values to handle Infinity and surface mistakes early: #95493
  • Make the agent-rules block verifiable and self-upgrading: #95467
  • Convert agent-041's blocking-data check to the agentic LLM judge: #95630
  • Reduce the size of OperationVc from 8 bytes to 4: #95614
  • [turbopack] Output service workers to /_next/static/: #95554
  • [turbopack] Compile service workers registered from pages router pages: #95583
  • [turbopack] Simplify service worker e2e tests: #95672
  • Keep the request body a plain Readable after middleware so Readable.toWeb() doesn't hang: #95607
  • [PPF] Sync IO is only allowed in the dynamic stage: #95384
  • Fix support for custom-media-queries in LightningCSS: #95689
  • Turbopack tests: remove assertions that duplicate webpack results: #95688
  • request insights: record local framework spans (1/5): #93974
  • request insights: derive request history and fetch data (2/5): #93975
  • request insights: expose dev snapshots to tools and HMR (3/5): #93976
  • Fix duplicate static files in adapter: #95681
  • Fix Pages router 404 runtime rendering with Adapter: #95264
  • request insights: add agent diagnosis access (4/5): #93977
  • Fork navigation-testing-lock module: #95611
  • Turbopack: order CSS modules by chunk-group co-occurrence in linearize: #95579
  • Fix termination handling: #95692
  • [turbopack] Switch make_production_chunks to use floats: #95749
  • Improve the NFT error message and ignore comment handling: #95144
  • request insights: add DevTools request panel (5/5): #93978
  • [turbopack] Optimize the implementation of AutoMap/AutoSet : #95694
  • telemetry: add agentName to anonymous metadata: #95586
  • Respect NEXT_HASH_SALT for server side assetsHashes: #95738
  • Support metadata routes in --debug-build-paths: #95788
  • Only track pending imports for real promises: #95789
  • Fix cache warming and static params for metadata images with top-level await: #95790
  • Preserve init errors from async route modules: #95799
  • Fix Request Insights subscription initialization: #95794
  • Add more realistic bench fixtures: #95807
  • [Bench] Extend bench app to have realistic client chunk counts: #95814
  • Replay same-document traversals that happen before hydration: #95682
  • [turbopack] Tell agents not to mention next.config.js options: #95825
  • Exclude stale under 5 minutes from app shells: #95833
  • [turbopack] Generate component chunks for each merged group to increase cache hits: #95261
  • Turbopack: trace externals imported only by server actions: #95824
  • [turbopack] Create a shared asset with browser runtime code: #94586
  • [turbopack] Create a chunk_group_bootstrap_params() function: #94631
  • [turbopack] Add inline_chunk_group_bootstrap to BrowserChunkingContext and chunk_group_bootstrap_params to ChunkGroupResult: #94661
  • [turbopack] Add registerEntry() to handle inline bootstrapping: #94664
  • [turbopack] Add chunk_group_bootstrap_params and the chunk-loading global to the build manifest: #94663
  • [turbopack] Inline the chunk group bootstrap in Next.js to drop the per-route runtime: #94666
  • [turbopack] Only ship pages-router routes in the client chunk-group bootstrap manifest: #94671
  • Revert "Replay same-document traversals that happen before hydration": #95853
  • Fix Request Insights span collection: #95818
  • Unify appShells flag with Partial Prefetching: #95415
  • Fix repeated navigations while the Instant Navigation lock is held: #95864
  • fix(agent-rules): pad managed AGENTS.md block with blank lines: #95892
  • [turbopack] Don't SSR on pages only navigated to through a soft nav: #95539
  • [turbopack] Clean up server_chunking_context: #95908
  • Fix Rust doctest failures: #95909
  • [instant] Let dev-server requests bypass the fetch lock: #95761
  • Move immutable static assets config option out of experimental: #95351
  • Move outputHashSalt out of experimental: #95840
  • fix(cms-contentful): await draftMode() and use Promise<> params type: #95631
  • Turbopack: Simplify parent directory creation retry loop logic: #95835
  • [turbopack] Drop unused exports from a CJS module: #95716
  • [turbopack] Skip redundant top-level root updates: #95903
  • cna: use LayoutProps helper in TS layout templates: #95675
  • [turbopack] Rename turbopackTreeShaking to turbopackModuleFragments: #95978
  • Fix instant validation blocking navigations: #95939
  • Prevent unhandled rejections when a "use cache" cache handler errors: #95985
  • Insights: use a single Learn more link in console errors: #95967
  • Preserve basePath in redirect destinations: #95608
  • fix(next/image): improve performance of detectContentType() : #96006
  • Validate server reference IDs during manifest lookup: #96007
  • fix(incremental-cache): byte-exact fetch cache key for binary bodies: #96008
  • fix(fetch-cache): key fetch(Request, init) by the effective request: #96009
  • Ensure exotic rewrite param values are properly encoded: #96010
  • Set correct origin for internal redirects in custom server: #96011
  • Enforce serverActions.bodySizeLimit for Server Actions in Edge runtime: #96012
  • Improve performance of validating MPA form submissions: #96013
  • Fix Turbopack middleware matcher with i18n single locale: #96014
  • [turbopack] Tree-shake CJS exports that use the Object.defineProperty syntax: #95994
  • Turbopack: Use Arc<PathBuf> for keys in turbo-task-fs's per-path MutexMap: #95951
  • Revert "[turbopack] Don't SSR on pages only navigated to through a soft nav (#95539)": #96028
  • Turbopack: Fix missing canonicalization of paths and always use verbatim paths internally for Windows: #95668
  • Turbopack: Remove chunk group id from value of chunk groups map: #95142
  • Fix basePath fallback parameter parsing: #95966
  • Emit the static paths HMR update after updating the cache: #96019
  • Add a dedicated HMR message for static params changes: #96020
  • Fix stale dev 'use cache' for cookieless requests and route handlers: #96022
  • fix: cache miss in App Shell for cached pages with gSP: #95665
  • Turbopack: stop copying sourcesContent into every serialized source map: #95934
  • [turbopack] Fix deployment skew protection for component chunks: #96079
  • Gate partialFallback behavior behind partialPrefetching flag: #96074
  • [Cache Components] Exclude dynamic params from prerenders when no generateStaticParams values is provided: #95872
  • Turbopack: Use swc_core::ecma::utils::prop_name_eq for a couple of the next-custom-transforms: #96035
  • Turbopack: Use Arc and Box to make InvalidatorMap slightly more efficient: #95987
  • Turbopack: Split up turbo-tasks-fs/src/lib.rs into smaller modules: #96030
  • [Bench] Add client-trace attribution pass and document metrics to render-pipeline: #95828
  • Rewrite edge server source map sources in Rust, drop JS fallback: #95980
  • fix(next/font/google): bound Google Fonts fetch timeout on Turbopack: #95981
  • Restore partial fallback shell upgrade coverage: #96096
  • Remove inert experimental.viewTransition flag: #96098
  • Turbopack: Refactor watcher event handling and batching logic: #96087
  • Turbopack: Very minor improvements for watcher loop: #96103
  • [turbopack] Track re-exports in import_usage inside of compute_import_usage: #95989
  • [RSC HMR] Fix a flurry of refetches when a editing component imported from many routes: #96102
  • Return plain text 404 for non-document requests to unknown paths: #95930
  • [turbopack] Track usage of modules imported with require(): #95717
  • [turbopack] Drop dead require() calls: #95718
  • [turbopack] Import Webpack's tests for tree-shaking: #95811
  • [ts-plugin] Preserve TypeScript quick info metadata: #95863
  • Optimize app page entry analysis: #96058
  • Include additional prerender metadata about build-time routes: #96080
  • Keep VaryPath monomorphic by making isRootParam required: #96122
  • Make reifyRouteTree object literals match the canonical RouteTree key order: #96162
  • Keep optimistic-route param handling monomorphic: #96169
  • [sourcemaps] Use file: sourcemaps for Turbopack to improve dev performance: #95946
  • Avoid quadratic HMR queue shifts: #96137
  • Optimize implicit cache tag derivation: #96120
  • Forward dev invalid dynamic usage errors from the render, not validation: #96148
  • [refactor] Model dev validation render outputs as a discriminated union: #96149
  • Add the experimental.devValidationWorker config flag: #96150
  • [refactor] Prepare dev validation for running on a worker thread: #96151
  • Run Cache Components dev validation on a worker thread: #96153
  • fix: release compression stream when client disconnects mid-response: #96173
  • [sourcemaps] Reuse source map payloads and consumers across stack frames: #96198
  • Pass fallback params to the dev validation worker as maps: #96210
  • Retry the source map lookup with a plain path: #96215
  • Read chunk source maps from disk in the dev validation worker: #96218
  • Run dev validation in process when using Webpack: #96219
  • Fix dev overlay symbolication for project paths needing percent-encoding: #96221
  • fix(sandbox): release one-shot timeout ids after they run: #96161
  • Turbopack: support import.meta.glob caseSensitive option: #96226
  • Add shell offset to static segment prefetches: #95963
  • [turbopack] Fix de-opt in getChunkRelativeUrl(): #96183
  • [turbopack] Tree-shake module.exports = {...} (CJS): #95996
  • Add Instant Insights request timing: #95958
  • Track whether runtime data is accessed during prefetch: #95964
  • Update vendored @mswjs/interceptors to 0.41.9: #96059
  • Replace vendored http-proxy with httpxy: #96060
  • Turbopack: Store watcher batch state with bitflags instead of 4 different sets: #96114
  • Turbopack: Only extend the watcher's batch window for unfiltered events: #96186
  • Serve cached misses from the filesystem route cache: #96230
  • Use a safe clock for Request Insights bookkeeping: #96274
  • Block prefetch task until sufficient response is received: #96017
  • Attempt static prefetch before resorting to runtime: #96095
  • Unify allow-runtime with Partial Prefetching: #96106
  • Add option to control dev memory threshold restarts: #96144
  • feat(turbopack): support import.meta.env: #96225
  • fix(next/image): improve test coverage for unsupported image types: #96301
  • Add local Request Insights span tracing: #96275
  • Add Instant Insights pipeline spans: #95961
  • Persist Request Insights display settings: #96277
  • [turbopack] Treat Object.defineProperty(exports, …, { value: … }) as side-effect free: #96273
  • Fix Turbopack worker URL context lookup: #96307
  • Return 200 for client-handled Server Action redirects: #96310
  • Revert "[turbopack] Track re-exports in import_usage inside of compute_import_usage": #96311
  • Improve root detection to handle worktrees, more workspaces & stray lockfiles: #96159
  • Turbopack: aggregate server HMR into one subscription: #94948
  • Turbopack: extract chunk list version/update into turbopack-ecmascript: #95661
  • Turbopack HMR: extract deferring build messages and use it in server hmr: #95795
  • Turbopack server hmr: avoid complete clear on graph changes: #95546
  • [turbopack] Remove loader calls for dropped dynamic imports: #96284
  • Revert "Revert "[turbopack] Track re-exports in import_usage inside of compute_import_usage"": #96315
  • Restore comments dropped during a refactor: #96324
  • [turbopack] Tree shake w/ bar['foo'] syntax for star imports: #96319
  • Cache immutable current task IDs outside the task-state lock: #96180
  • Gate partial fallback shell upgrades behind partialPrefetching for next start: #96297
  • Make retry stop when the time it was given is up: #96354
  • Share Ecmascript HMR chunk versioning, diffing, and merging between browser and node: #96325
  • Ensure unique resolved headers() value between render passes: #96085
  • Fix PPR rendering for configured HTML bots: #96364
  • [fragment-scroll] Stop blurring on navigations: #96113
  • [Instant] Point to first blocking await in validation: #96343
  • Skip reader task locking for immutable Turbo Tasks reads: #96179
  • Fix empty Fragment scroll ownership: #96342
  • fix(create-next-app): make AGENTS.md blue: #95432
  • fix: respect htmlLimitedBots in cache components without buffering the full response: #96367
  • Remove obsolete shouldWaitOnAllReady render option: #96401
  • Update Rust toolchain to nightly-2026-07-29: #96365
  • [turbopack] Keep track of components of the remainder chunk: #96409
  • [turbopack] Respect sideEffects in a package.json file with optimizePackageImports: #96383
  • Fix isHeadPartial when hydrating from a static fallback shell: #96400
  • [turbopack] add experimental.turbopackChunking config: #96398
  • Update @types/react and @types/react-dom to latest: #96419
  • Fix adapter outputs for not-found routes when used with cache components: #96390
  • Consolidate unhandled rejection logging into a single listener: #95999
  • Enable turbopackFileSystemCacheForBuild by default: #96395
  • [turbopack] Fix component chunks for workers: #96432
  • Fix hybrid Pages/App Router not-found rendering with adapters: #96392
  • Warn that experimental.useCache is deprecated: #96448
  • Enable Turbopack build filesystem cache by default: #96493
  • [Cache] Make caches error if called after prerender aborts: #96426
  • Fix App Router scroll padding visibility: #96308
  • Enable TypeScript CLI by default: #96497
  • fix: double fragment on navigation: #93132
  • Remove implicit Partial Prefetching opt-in from instant: #96539
Documentation Changes
  • docs: fix broken Activity Patterns demo link in preserving UI state guide: #91698
  • docs: post release amends: #91715
  • docs: use ErrorInfo type consistently in catchError docs: #91744
  • docs: add catchError benefits over userspace error boundaries: #91745
  • docs: platform portability and infrastructure documentation: #91237
  • docs: add verified adapters section: #91849
  • docs: document CSS decimal precision difference between Turbopack and webpack: #91909
  • [Docs] Rewrite agent rules to match bundled doc wording: #91995
  • docs: opengraph-image papercuts: #92018
  • Update revalidateTag examples to use the new two-argument signature: #92065
  • docs: clarify that use cache requires async functions: #92101
  • Move expanded adapters docs to API reference: #92115
  • docs: add middleware bypass note to CDN caching guide: #92132
  • docs: document revalidateTag's required second argument in upgrade guide: #92134
  • docs: local images referenced by remote source: #92178
  • docs: clarify id, filePath, and pathname in STATIC_FILE adapter output: #92227
  • Docs/adapters review: #92223
  • docs: vt demo guide: #92249
  • docs: Ask AI agents to self-identify themselves in PR descriptions: #92235
  • docs: add deploy tests documentation to contributing guide: #92388
  • docs: clarify that proxy/middleware matches static assets by default: #92441
  • docs: clarify serverless runtime behavior for use cache: #92232
  • docs: add note on React canary version to View transitions guide: #92315
  • docs: note PPR default in cacheComponents reference: #92378
  • 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
  • docs: add note on installing server-only in data security guide: #92445
  • fix: replace docs/canary links with stable docs paths in error messages: #92528
  • docs: update details about unstable_retry() behavior: #91827
  • docs: link updateTag from cacheTag reference: #92379
  • Docs: Instant docs updates: #92515
  • docs: native db drivers with sync queries: #92572
  • docs: add Link transitionTypes version history: #92624
  • docs(cli): clarify that --debug-build-paths requires route group folders in paths: #92618
  • docs: fix broken bun.sh Nextjs documentation link: #92698
  • docs: add migration note for experimental cache flags to cacheComponents: #92318
  • docs: draftMode alignment: #92794
  • docs: restructure instant nav guide for clarity: #92684
  • docs: add documentation for no-typos ESLint rule: #92809
  • docs: amends to preserving-ui-state guide: #92270
  • docs: link Activity guide from Cache Components migration guide: #92571
  • docs: add guide for displaying dates without hydration flash: #92786
  • chore: remote apps/docs: #93041
  • Docs: add signed commit guidance: #93155
  • Turbopack: import.meta.glob docs + edge case support: #92729
  • docs: remove broken error-handling overlay screenshot: #93279
  • docs: clarify rendering flow in Server/Client interleaving example: #93381
  • docs: clarify proxy runtime history: #93467
  • Update unstable_prefetch and unstable_instant docs to reflect current API shape: #93514
  • docs: remove unreachable forms and mutations: #93509
  • docs: broken link from usePathname compat call out: #93528
  • docs: escape literal triple-backticks in contribution guide: #93584
  • docs: clarify cacheTag limit - it is per call: #93768
  • docs: devIndicators with usage example: #93784
  • docs: less aggressive AI agent hint for an experimental API: #93811
  • docs: fix typos and links: #92541
  • docs: less aggressive AI agent hint for an experimental API: #93814
  • docs: update agent test guidance: #93924
  • docs: instrumentationClientInject: #93913
  • docs: vocabulary-bridge rule for api-ref and guide skills: #94127
  • docs: rework dynamic segments intro section: #94126
  • docs: add next/root-params API reference: #93764
  • docs: ISR w/ Cache Components - experimental.partialFallbacks: #93299
  • docs: transpilePackages usage: #93602
  • docs: move isr cacheHandler callout to next steps: #94167
  • docs: fix code examples in getting-started guides: #93273
  • [feat] updated the documentation for deployment to point to new next.js Docker official guide.: #94185
  • docs: correct custom server optimization guidance: #94229
  • docs: bodySizeLimit measures raw HTTP body: #94137
  • docs: accuracy and pappercuts: #94299
  • doc: clarify rewrites execution order: #93765
  • docs: update draftMode guide: #94155
  • docs: cached functions from the client: #94301
  • docs: add GitHub SSH authentication guidance: #94360
  • docs: document Cache Components behavior for navigation hooks: #94387
  • instant: prompts on all fix cards, [group]-tagged CLI bullets, new docs slugs: #94017
  • docs: fix typos in testing.md: #94446
  • docs: fix typos in contribution guide: #94375
  • docs: correct wording and casing in turbopack tracing guide: #94469
  • docs: typos and errors outside docs, error, examples folders: #94472
  • docs: clarify next-env.d.ts regeneration: #94232
  • docs: add updateTag example to cacheTag page: #94508
  • docs: clarify use cache persistence across deploys: #93554
  • docs: fix onRequestError error type example: #94518
  • docs: move insight error pages from vercel/front to canary: #94564
  • [Docs] Remove unstable_instant agent hints; insights validate by default: #94577
  • docs: fix 'time zone' spelling in FOUC guide: #93244
  • docs: add pnpm installation step to module-not-found error page: #93773
  • instant: polish client-hook overlay wording, cards, and docs links: #94496
  • docs: root-params highligth fixes: #94620
  • docs: remove unstable_disableValidation recommendations: #94608
  • doc: instant navs runtime story: #93204
  • docs: next/root-params references on i18n guide: #94629
  • docs: expand the Cache Components migration guide: #94649
  • docs: document non-streamed bot rendering and Cache Components: #94605
  • docs: Route Handlers to be supported later on: #94705
  • [agents-md] Index bundled docs instead of downloading into .next-docs: #94719
  • docs: add prefetchInlining config reference: #94650
  • docs: tighten Partial Prefetching API references and adoption guide: #94818
  • docs: server actions guide: #93553
  • docs: fix capitalization of Server and Client Components: #94891
  • docs: Fix broken link to Node.js Debugging Guide: #93958
  • docs: fix broken Node.js inspector URL in debugging guide: #94934
  • docs: clarify sequential data fetching example: #94930
  • docs: GtK, caching with fetch is opt-in - extended to any method or header included: #94899
  • docs: fix typo in slot-missing-default.mdx: #94531
  • docs: Cache components requires Node.js runtime: #94897
  • docs(authentication): add Auth and streaming, fix code fences and imports: #95056
  • docs: add Interactive Apps guide: #94020
  • docs(caching): clarify generateStaticParams prebuild and recommend max for CMS: #95081
  • docs(cache-components): clarify allow-runtime, sync-IO and instant=false, CLS fallback: #94997
  • Docs/partial prefetching: #94855
  • docs(root-params): generateStaticParams section and CC requirement: #95073
  • docs: server actions guide x-refs: #95143
  • docs: clarify /_not-found failures and attribute reads under Cache Components: #95163
  • docs: expand io reference: #95147
  • docs: update instant navs guide: #95173
  • docs: fix preview message typo: #95050
  • docs(insights): restructure error pages and link to preview docs: #95193
  • docs(errors): reorder blocking-prerender-dynamic fixes to Stream, Cache, Block: #95198
  • Add docs for experimental.turbopackRustReactCompiler: #95280
  • docs: remove unnecessary async from rewrites/headers/redirects examples: #95148
  • docs: Activity bfcacheId and :has caveats: #95275
  • Instant Navs guide: Highlights fixes and Client Component Page option: #95313
  • docs: recommend explicit cacheLife and clarify overriding built-in cache profiles: #95311
  • docs: Update FormEvent to SubmitEvent in form handling example (deprecated in React 19.2.10+): #95453
  • docs: remove incorrect statement that force-cache is the default for …: #95235
  • docs: updates to Cache Components Caching: #95452
  • docs: Fix testing-adapters variable name: #95575
  • docs: update MCP guides for the thin next-devtools-mcp: #94859
  • docs(opengraph-image): load assets at module scope to keep route static under Cache Components: #95246
  • [docs] Update progressive web apps documentation for new service worker syntax: #95431
  • [docs] Update "Handling a Custom Service Worker" in the CRA migration docs: #95434
  • docs: Immutable static assets: #95348
  • docs: note default error/not-found UI follows OS color scheme, not app theme: #95673
  • docs: add incremental adoption path to Cache Components migration guide: #95325
  • docs: add Building guide: #94999
  • docs: runtime prefetching update: #95564
  • docs: useSearchParams example stray link: #95759
  • docs: Improve immutable static docs: #95752
  • docs: revalidateTag with expire zero, for route handlers: #95760
  • docs: add route-side URL data audit to the Partial Prefetching adoption guide: #95389
  • docs: cssChunking graph option: #95693
  • docs: remove experimental @next/routing note: #94903
  • docs: add 'Set up your editor' to the installation guide: #95928
  • docs: clarify layout.js nesting behavior in route groups: #95720
  • docs: note the :has() scaling limit in the Interactive apps guide: #95925
  • Include examples of static export tools & GitHub Pages template: #95929
  • docs: fix unstable_cache syntax error: #96002
  • docs: add upgrade section to installation and expand AI agents guide: #95861
  • docs: attribute App Shell prefetch to Partial Prefetching: #96003
  • docs: view transitions guide — skill section, source-audit fixes, flag-removal docs: #96097
  • docs(view-transitions): fix the skill install command: #96142
  • docs: reframe prefetching around automatic vs. controllable behavior: #95896
  • docs: navigation interrupts after streaming has started (notFound, forbidden, unauthorized): #95851
  • docs: expand and modernize the Single-Page Applications guide: #95860
  • docs(ai-agents): restructure as steps and close 16.2/16.3 coverage gaps: #96247
  • docs: document query-only href resolution and fix with-vercel-blob : #96280
  • doc: typegen for typedRoutes: #96296
  • docs: clarify instrumentation-client polyfill loading and hydration timing: #95988
  • docs(interactive-apps): update prefetching for unified runtime prefetching: #96302
  • docs: add guide and references for experimental.useOffline: #93218
  • docs: remove PPR adapter page from Pages Router: #96316
  • docs: Parallel routes, conditional rendering and auth: #96351
  • docs(preventing-flash): cover reconciling state : #96146
  • docs: modernize Next 16 upgrade AI guidance: #96314
  • Update PWA guide with enhanced offline support details and example links for serwist: #96360
  • docs: document the App Shell stale time threshold for cached content: #96312
  • [turbopack] Introduce documentation on experimental.turbopackChunking: #96437
  • docs: ISR with Cache Components and Partial Prefetching: #96526
  • docs: clarify first-party Skills workflows: #96495
  • docs: cover direct visits and client navigations in the instant() e2e example: #95803
Example Changes
  • chore(examples): remove with-styletron example: #81842
  • ci: remove deploy examples workflow from build-and-deploy: #92324
  • example: remove with-supertokens: #93212
  • [examples] migrate cloudinary to vercel-blob: #93762
  • examples/with-ably: update to App Router + Ably v2: #94600
  • fix: error handling and loading states in with-apollo-and-redux example: #91457
  • fix: remove deprecated url.parse() from custom-server example: #96105
Misc Changes
  • Add .claude/skills symlink: #91616
  • Update tokio from 1.43.0 to 1.47.3: #90945
  • Restructure pr-status-triage skill: merge command into skill files: #91514
  • [test] Unflake "infinite streaming fetch" test: #91645
  • [test] Unflake deterministic build - changing deployment id test: #91646
  • Skip CI for agent/editor config directory changes: #91622
  • refactor: extract build infra and alias changes: #90422
  • ci: add node-stream test coverage workflow: #89861
  • Update Rspack production test manifest: #91635
  • [test] Increase retry timeouts for two flaky app-action tests: #91647
  • Revert "ci: add node-stream test coverage workflow (#89861)"
  • [test] Fix flaky url-hash tests: #91649
  • Add instant validation tests for parallel slot config attribution: #91656
  • [test] Unflake rendering indicator test & skip building indicator tests: #91650
  • [test] Fix edge-async-local-storage deploy test timeout & race condition: #91643
  • Update Rspack development test manifest: #91695
  • [test] Unflake use-node-streams-env-precedence test: #91733
  • Update Rspack production test manifest: #91694
  • [test] Unflake app prefetch test: #91734
  • Upgrade React from 3f0b9e61-20260317 to 8b2e903a-20260320: #91731
  • [ci] Allow "rerun failed jobs" to work up until 5 days: #91825
  • ci: upload adapter deploy test results: #91846
  • test: scope css data-url typing to fixture: #91877
  • ci: only upload adapter results for canary runs: #91881
  • Perf: Skip turning Set into Array: #91383
  • Perf: Move chunkloading instrumentation to separate function: #91382
  • Perf: Use headers object directly in checkIsOnDemandRevalidate: #91381
  • [test] Deflake instant-navs-devtools: #91912
  • test(typed-routes): fix flaky tests by increasing retry timeout: #91923
  • test(app-basepath): increase waitForElementByCss timeout for hard-nav test: #91920
  • test(interoperability): increase waitForElementByCss timeout for cross-router navigations: #91918
  • Upgrade React from 8b2e903a-20260320 to 3cb2c420-20260324: #91905
  • Upgrade React from 3cb2c420-20260324 to 9627b5a1-20260327: #92015
  • Upgrade React from 9627b5a1-20260327 to 74568e86-20260328: #92109
  • ci: relax adapter results upload gate: #92127
  • [test] Skip unstable_dynamicStaleTime tests due to flakiness: #92162
  • [test] Skip flaky segment-cache-refresh suite: #92163
  • Add PPR evals and fix env loading for agent-eval 0.9.5: #92063
  • Update Rspack development test manifest: #92142
  • [test] Skip flaky cached-navigations tests: #92199
  • [test] Skip flaky prefetch-layout-sharing suite: #92198
  • Add internal header security guideline to AGENTS.md: #92128
  • Update Rspack production test manifest: #92143
  • [test] Deflake allowed-dev-origins: #92211
  • Reapply "ci: add node-stream test coverage workflow (#89861)": #91664
  • Fix pr-status.js: retry on API errors and report timed-out jobs: #92205
  • Add view transitions eval (agent-043): #92260
  • ci: fix stats action: #92325
  • ci: remove deploy examples workflow from build-and-deploy: #92324
  • Update Rust toolchain to nightly-2026-04-02: #92288
  • fix: add AGENTS.md at package root for agent discovery: #92376
  • [tests]: remove unnecessary skipDeployment flags: #92423
  • chore: Upgrade to pnpm 10.x: #92283
  • Bump turborepo from 2.8.11 to 2.9.4: #92425
  • [test] Skip flaky client-cache.parallel-routes in production and deploy: #92195
  • scripts/pr-status: add reply-and-resolve-thread command: #92450
  • [test] Regenerate checked-in tsconfig.json files: #92455
  • Adding more system info to the 'initialize project' trace: #92427
  • CI: Update and cleanup next-stats-action, force using pnpm 10.33.0: #92475
  • CI: Remove unused dependencies from next-stats-action dockerfile: #92485
  • Upgrade swc_core 57 -> 58, swc_sourcemap 9 -> 10, swc_plugin_runner 24 -> 25: #91532
  • perf: use whole_app_module_graph for get_compilation_issues MCP tool: #92473
  • Update Rspack development test manifest: #92502
  • Update Rspack production test manifest: #92503
  • CI: Use pnpm lockfile for next-stats-action: #92488
  • Bundle skills/ directory into next/dist/skills: #92493
  • CI: Use minimumReleaseAge in pnpm workspace files: #92480
  • 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
  • Perf: Add fast path to isAbsoluteUrl: #91389
  • Perf: Don't require watchpack in production: #91387
  • [test] Stop using deprecated target: "es5" TypeScript compiler option: #92458
  • Perf: Use charCodeAt in removeTrailingSlash: #91384
  • Perf: Cache regex in shouldServeStreamingMetadata: #91388
  • [test] Ensure incomplete minimum release age isn't propagated to fixture installs: #92568
  • test: skip .next and other build artifacts in writeFiles filter: #92578
  • CI: Another attempt to fix pnpm versions for next-stats-action on canary: #92550
  • test: reduce writeToDisk memory test iterations to fix CI timeout: #92586
  • Refactor effects system: dedup/conflict detection, simplified Effect trait: #92300
  • fix(ci): improve Docker image cache streaming throughput and arch-awareness: #92617
  • CI: Download and run self-contained datadog-ci instead of using pnpm dlx or npx: #92546
  • Bump swc to 63.1.1: #92604
  • chore(turbopack): upgrade qfiler to v0.3.0-alpha.4: #92558
  • refactor: write pages router export files directly to server/pages/: #90018
  • fix(ci): improve Docker image caching and native build skip optimization: #92633
  • Perf: Only instrument clientComponentLoadTimes when used: #91385
  • Update font data: #92704
  • [test] Stop using baseUrl: #92469
  • bench: improve render pipeline benchmark reliability: #92715
  • bench: add A/B branch comparison workflow to BENCHMARKING.md: #92721
  • test: use Turborepo pack task for test isolation: #92575
  • chore: Bump reqwest to 0.13.2: #92713
  • Upgrade React from 404b38c7-20260408 to fef12a01-20260413: #92728
  • Revert "refactor: write pages router export files directly to server/pages/": #92733
  • Re-enable sccache: #92746
  • chore: Use from_raw_parts for ResolvedVc::deref_vec and ResolvedVc::deref_slice: #92749
  • Pin upload-artifact to v7.0.1 and download-artifact to v8.0.1: #92757
  • Fix swc wasm test on canary: #92738
  • Bump TypeScript to 6.0: #91257
  • test: Add tests for client reference side effects: #92774
  • refactor: remove ClientFileLogger, consolidate file logging into handleLog: #92329
  • pr-status: Show all participants in review thread overview: #92730
  • Perf: Fast path for trace() when opentelemetry is not enabled: #92678
  • Share native binaries via GitHub artifacts: #92758
  • [ci] Skip sccache on Windows runners: #92847
  • Update Rspack production test manifest: #92674
  • Update Rspack development test manifest: #92673
  • [ci]: add workflow to bump canary after backport: #92801
  • [ci] Skip Playwright system deps install on subsequent self-hosted runs: #92893
  • CI: Remove dead yarn support from next-stats-action: #92587
  • [ci] Cache passing test results so CI retries skip them: #92832
  • fix accidental test duplication: #92922
  • Refactor trace server sort to SortMode enum (execution order / value / name): #92873
  • Perf: Simplify static metadata handling: #92630
  • [ci]: fix backport sync script: #92942
  • Fix flake in rewrites-manual-href-as test: #92948
  • CI: Track SWC native binary size in PR stats comment: #92938
  • chore: Prune list of users in labeler json: #92984
  • [test] Deflake shallow-routing: #93006
  • New ESLint rule: no-location-assign-relative-destination: #92900
  • Upgrade React from fef12a01-20260413 to da9325b5-20260417: #92945
  • [ci]: remove unused workflow: #93064
  • [ci]: remove publish token in favor of OIDC: #93065
  • Update Rspack development test manifest: #92959
  • [ci] Temporary disable of sccache: #93074
  • Auto-generate AGENTS.md / CLAUDE.md in next dev: #92910
  • [ci]: add environment to publishRelease flow: #93093
  • Adopt pnpm catalogs for devDependencies: #93071
  • rage-restart followup: #92591
  • Collapse pnpm test scripts into a single helper invocation: #93097
  • [tests]: fix cache-components.test.ts type error: #93113
  • [ci]: cleanup labeler: #93135
  • [ci]: switch to GitHub runners: #93164
  • [ci]: pin rust-musl-cross: #93176
  • [rust-deps] Update serde: #93196
  • [rust-deps] Update tracing: #93194
  • [ci] replace next-labeler-webhook with in-repo GitHub Action: #93080
  • [ci] Fix auto-label workflow: #93215
  • [test] Remove dead symlink: #93217
  • [ci] Populate GITHUB_TOKEN for auto-labeler: #93219
  • [ci]: move stats & CI status comment to workflow: #93220
  • [ci] Upload preview builds directly to Vercel Blob: #93207
  • [ci]: fix permissions on comment workflow: #93225
  • Revert "Adopt pnpm catalogs for devDependencies": #93226
  • [ci] Handle namespaced packages in preview builds: #93241
  • [ci] Create test summary comment if job immediately passes: #93236
  • [ci] Automatically start React sync when new react@experimental is available: #93235
  • [rust-deps] Update bytes, crc32fast, memchr, pin-project-lite, quote, rand, regex, ringmap, roaring: #93197
  • [ci]: app-based release workflow: #93245
  • [ci]: trigger signed release commit via API: #93285
  • [ci]: fix release script to not strip newlines: #93302
  • [ci]: Use macOS arm runner for intel builds: #93330
  • ci: Fix caching of test-cargo-unit: #93327
  • [rust-deps] Update tokio: #93195
  • [test] Suppress build when preparing next for cache hits: #93355
  • [test] Fix broken terminal output: #93357
  • chore: bump postcss to 8.5.10: #93288
  • fix a snapshot encoding error that could happen under concurrent mutation and snapshotting: #92658
  • Only log partytown setup error once: #93378
  • [test] Stop building fresh packages for every test: #93380
  • [test] Preserve Playwright traces on every failure: #93366
  • [ci] Add support for private preview builds: #93375
  • Fix deploy tests crashing under AI coding assistants: #93394
  • [ci]: remove PR creation from deploy test workflow: #93400
  • Upgrade to swc 65: #93325
  • Upgrade React from da9325b5-20260417 to f4e0d4ed-20260429: #93457
  • Bump @vercel/ncc: #93459
  • [test] Ensure target page is compiled before navigation in instant-navs-devtools: #93365
  • [ci] Allow configuring the base URL for preview builds: #93464
  • [ci] Move Turbopack, Rspack and font data workflows off of RELEASE_BOT_GITHUB_TOKEN: #93455
  • [ci] Migrate React sync off of RELEASE_BOT_GITHUB_TOKEN: #93456
  • [ci] Create unique preview build versions for canary previews: #93490
  • [ci] Ensure pnpm store cache is only filled when pnpm install runs: #93508
  • [ci] Remove unused setup-nextjs-build.yml workflow: #93512
  • Refactor: Decouple request store creation from req / res: #93499
  • [ci] Clarify new preview build flow: #93540
  • Upgrade React from f4e0d4ed-20260429 to dd453071-20260506: #93547
  • perf(ecmascript): shrink JsValue 64→32 bytes: #93106
  • [test] Pin package manager versions used: #93592
  • [ci] Ensure graphite_ci_optimizer fails open even if github fails to fetch the action: #93615
  • Cherry-pick ghsa commits to canary: #93614
  • [ci] Also pin first-party GH actions: #93609
  • CI speed improvements: #93411
  • Proof of concept: task eviction after snapshot for turbo-tasks-backend: #91790
  • Convert test/integration to isolated tests: #93247
  • Repo: Add gh stack skill: #93705
  • Fix React 18 tests: #93763
  • Convert tests using createNext -> nextTestSetup: #93767
  • Revert "[test] Skip flaky cached-navigations tests": #93798
  • Upgrade React from dd453071-20260506 to d5736f09-20260507: #93702
  • Mark .agents/skills as internal so external npx skills add hides them: #93856
  • Convert more tests from createNext -> nextTestSetup: #93799
  • [test] split og-api test suite into default and standalone variants: #93915
  • Add create PR skill: #93937
  • Enable mimalloc in benchmarks: #93388
  • Fix Yarn berry tests: #93962
  • Polish instant fix cards and validation messages: #93894
  • Add backport PR skill: #93973
  • use the action cache for passing tests: #93954
  • @vercel/devlow-bench: 0.3.5 → 0.4.0: #93951
  • [test] Prerendering HTTP access fallback pages with Cache Components: #93987
  • [ci] Add an TURBO_TASKS_AVAILABLE_PARALLELISM environment variable that overrides std::thread::available_parallelism callsites: #93995
  • ci: run Linux Playwright jobs in prebuilt Microsoft container: #93794
  • Upgrade rustc to nightly-2026-05-15: #94021
  • Update font data: #94006
  • [ci] Set TURBO_TASKS_AVAILABLE_PARALLELISM to 4 in most e2e tests: #93996
  • Add next-dev-loop and next-ppr-optimizer skills: #93943
  • test: migrate webdriver callers to next.browser: #93941
  • Fix pr-status job pagination: #94049
  • [Skills] Mark backport-pr and create-pr as internal: #94076
  • [Skills] next-dev-loop: persist login state across loops: #94105
  • chore: release @next/rspack-core 1.0.3: #94116
  • Revert "Revert "refactor: write pages router export files directly to server/pages/"": #93409
  • [ci] Skip installing native binaries when fetching test timings: #93593
  • [ci] Reserve comments for stats and tests: #93240
  • [ci] Fix the playwright-chromium Dockerfile: #94064
  • Upgrade React from d5736f09-20260507 to 75b0945b-20260526: #94131
  • [ci] Add an AGENTS.md for GitHub Actions: #94056
  • [ci] Resize tiny jobs in integration_tests_reusable.yml to use smaller machines: #93886
  • [ci] Explicitly disable package-manager-cache for uses of actions/setup-node: #93953
  • Upgrade ast-grep: #94150
  • [Skills] next-cache-components-optimizer: clarify private-cache scope rule: #94113
  • [ci] Increase TEST_CONCURRENCY from 8 to 12: #94138
  • Upgrade React from 75b0945b-20260526 to c0cd4d5d-20260527: #94161
  • [ci] Give the build cache in cache in build_and_deploy a more obvious name, not just a hash and run number: #93957
  • [ci] Rename GRAPHITE_TOKEN to GRAPHITE_CI_OPTIMIZER_TOKEN: #94166
  • [ci] Use Turbopack in non-webpack-specific e2e test jobs: #94005
  • [test] Add test for static metadata files and generateStaticParams: #93465
  • test: skip flaky instant-nav-panel tests: #94196
  • test: fix next-after-app-static: #94195
  • [ci] Update all actions/* dependencies: #94174
  • Replace VcStorage with real TurboTasks in tests/benches : #93955
  • [cd] Stop fetching all tags when searching parent tag: #94302
  • chore: lint-language output only warnings and errors: #94261
  • Disable default-case ESLint rule for type-checked TypeScript files: #94316
  • refactor: use named arguments for StagedRenderingController: #94345
  • Devirtualize the backend api inside of turbo_tasks and turbo-tasks-backend: #94007
  • [tests] Use snapshots in debug-build-paths: #94352
  • Upgrade React from c0cd4d5d-20260527 to f0dfee38-20260529: #94245
  • refactor: make stage advancing logic more generic: #94349
  • refactor: make early/late checks stricter: #94358
  • refactor: remove delayUntilRuntimeStage: #94350
  • refactor: indicate which stage is the last stage in staged prerenders: #94430
  • test: pin material-ui link fixture dependencies: #94354
  • Reland the debug channel on native Node streams, fixed for React 18: #94462
  • chore: reword cacheComponents jsDoc to lead with partial prerendering: #94474
  • Upgrade React from f0dfee38-20260529 to 43bcbf80-20260603: #94440
  • Revert "ci: run Linux Playwright jobs in prebuilt Microsoft container (#93794)": #94366
  • fix(deps): bump @vercel/nft@1.10.2: #93979
  • [ci] Switch release-next-rspack to a more explicit environment name: #94480
  • [ci] Set persist-credentials: false for all GH actions: #94214
  • Revert "[ci] Increase TEST_CONCURRENCY from 8 to 12 (#94138)": #94517
  • [ci] Disable on-call notification if manual deploy e2e tests failed: #94554
  • Reduce new test concurrency to five: #94552
  • disallow reads from .next-profiles: #94570
  • [ci] Remove dead playwright docker image creation logic: #94576
  • [cd] Ensure release can be triggered on old branches: #94596
  • [ci] Reduce usage of turborepo cache in build_and_deploy.yml: #94319
  • [ci] Download fnm directly from GitHub releases and validate checksum: #94579
  • [ci] Always upload canary tarballs from the canary branch: #94557
  • refactor: process streaming prerenders more efficiently: #94764
  • [ci] Allow "rerun failed jobs" to work up until 5 days for e2e deploy tests: #94812
  • Fix stale next data API test URL: #94815
  • Instruct agents to keep and commit the generated agent-rules block: #94725
  • Add a message to AGENTS.md about super:: imports.: #94733
  • chore: upgrade next-rspack to rspack 2.0: #92222
  • [ci] Use node-version-file when we already have a repository checkout and reduce hardcoded references to node versions: #94780
  • rust react compiler: detect and build for react 18: #94836
  • [test] Unflake metadata static routes cache test: #94796
  • [test] Recover from a leftover build process on test retry: #94797
  • Properly set response-based OTEL attributes with adapters: #94603
  • Upgrade React from 43bcbf80-20260603 to d9158919-20260615: #94826
  • [ci] Clean up references to self-hosted runners: #94827
  • Upgrade React from d9158919-20260615 to ad78e251-20260616: #94867
  • switch our test benchmark runs to release-with-assertions: #94538
  • [ci] Remove playwright stamp file logic: #94876
  • [cd] More robust publish pipeline: #94622
  • [cd] Continue release train if @next/swc-wasm-* fails to publish: #94912
  • Let LLMs create less noisy and more focused PR descriptions: #94896
  • [ci] Only install chromium-headless-shell and not chromium: #94882
  • Fix Instant Navs DevTools capture bugs and re-enable its test suite: #94866
  • [test] Enable metadata-streaming-config for Cache Components: #94936
  • Upgrade React from ad78e251-20260616 to b1786c31-20260618: #94951
  • [ci] Update playwright to 1.61.0: #94871
  • [cd] reduce size of npm metadata on publish: #94953
  • Upgrade to swc 70: #94814
  • [test] Fix failing determinism test using adapter: #95051
  • [scripts] Write pnpm overrides for pnpm projects in pack/patch helpers: #94747
  • Upgrade React from b1786c31-20260618 to 247fbb45-20260622: #95063
  • skill(next-dev-loop): fix --session flag, agent-browser bootstrap, --headed daemon note: #95005
  • skill(next-cache-components-adoption): tune skill to mention app router requirement: #95069
  • [skills] Mark insight-error-page and next-rspack as internal: #95070
  • skill(next-cache-components-adoption): clarify prereqs: #95082
  • [cd] publish on release tags instead of branch push: #95085
  • [ci] Make preview tarballs available while new Canaries are being published: #95112
  • [cd] add ad-hoc preview release cut from canary: #95086
  • [test] Reorder hmr-intercept-routes test to avoid a reload/refresh race: #95134
  • [ci] Make automatic native binding install opt-in: #95114
  • Restore canary version 16.3.0-canary.66 after v16.3.0-preview.4 preview release
  • skill(cc-adoption): recommend next-dev-loop and add build-only path: #95122
  • [cd] Allow forcing a release without new commits: #95136
  • test: Remove unnecessary dynamic timestamp from instant-validation root layouts: #95105
  • Restore canary version 16.3.0-canary.67 after v16.3.0-preview.5 preview release
  • Bump Rust toolchain: #95205
  • next-dev-loop: require agent-browser >= 0.31.1: #95209
  • [ci] skip Datadog git metadata upload on junit upload: #95210
  • Return APP_PAGE instead of PAGES for production Instant Navigation tests: #95184
  • [ci] Display correct test commands when Cache Component test fail: #95267
  • skills(cc-adoption): tighten requires, sequencing, terminology: #95225
  • Upgrade React from 247fbb45-20260622 to 68631c04-20260626: #95211
  • Enhance ESLint rule no-location-assign-relative-destination: #93057
  • test: fork select tests on partialPrefetching: #95279
  • [ci] update relay-compiler to 21.0.1: #95217
  • Increase the code frame width used when logging to a file.: #95283
  • [test] Give webpack server-action-period-hash tests a larger timeout: #95303
  • [test] Recover from a leftover build process on test retry in build(): #95304
  • [test] Unskip more Turbopack NFT unit tests: #95297
  • [test] Make build-output-prerender error ordering deterministic: #95308
  • [test] Retry the .next deletion to fix an ENOTEMPTY flake: #95307
  • [ci] Migrate build_and_test and pull_request_stats to use arm64 runners: #94870
  • [ci] Add support for auth based preview build registries: #95204
  • Upgrade React from 68631c04-20260626 to 92f4fda3-20260629: #95282
  • [ci] Move some test suites back to x86-64 runners to reduce pressure on our currently-limited pool of arm runners: #95332
  • refactor: split out validateStaticShell: #95106
  • Revert "[ci] Move some test suites back to x86-64 runners to reduce pressure on our currently-limited pool of arm runners (#95332)": #95336
  • [ci] Add optimize-ci, changes, and fetch-test-timings jobs to the needs list for the tests-pass job: #95339
  • [ci] Migrate some CI jobs back to x86-64, build both arm and x86-64 native binaries, include both os and architecture in native artifact names: #95341
  • test: Improve immutable static asset tests: #95349
  • gitignore .next-profiles: #95256
  • Re-query deploy-test build logs until id markers appear: #95243
  • Upgrade React from 92f4fda3-20260629 to ec0fca31-20260701: #95368
  • [ci] Migrate Turbopack build_and_test jobs back to arm64, leave webpack jobs as x86-64: #95374
  • [ci] Avoid running full CI mid-stack for GH-native stacks, same as we do for Graphite: #95218
  • [test] Park the blocking-fallback segment on a withheld param: #95300
  • [test] Enable deploy tests for the Instant Navigation Testing API suite: #95236
  • [cd] Replace the release package with our own GitHub release creation: #95352
  • Make Instant Navigation Testing full-page loads work when deployed: #95222
  • [ci] Actually migrate Turbopack jobs back to ARM: #95386
  • Upgrade React from ec0fca31-20260701 to 3508aee6-20260702: #95410
  • [ci] Disable mid-stack PR optimization for native PR stacks: #95427
  • Collect modules with browser variants statically: #95200
  • Split typeof-window server requires into .browser variants: #95201
  • Type resolved cacheLife profiles, dropping runtime asserts: #95428
  • Update font data: #95441
  • [test] Unflake cache-components-dev-streaming test suite: #95466
  • evals: fix false-negative regex checks with the agentic LLM judge: #95440
  • Upgrade React from 3508aee6-20260702 to 23def8fd-20260706: #95532
  • [ci] Add stats comment with partial stats: #95401
  • [skills] Update gh-stack skill: #95541

View originalPermalink
How v16.3.0 went

v16.3.0-canary.107

Pre-release
Changed 1
  • Enable Turbopack build filesystem cache by default

From Next.js

Misc Changes
  • Enable Turbopack build filesystem cache by default: #96493
Credits

Huge thanks to @timneutkens for helping!

View originalPermalink
How v16.3.0-canary.107 went

v16.3.0-canary.106

Pre-release
Fixed 1
  • Fix hybrid Pages/App Router not-found rendering with adapters
Deprecated 1
  • Warn that experimental.useCache is deprecated

From Next.js

Misc Changes
  • Warn that experimental.useCache is deprecated: #96448
  • Fix hybrid Pages/App Router not-found rendering with adapters: #96392
Credits

Huge thanks to @unstubbable and @ztanner for helping!

View originalPermalink
How v16.3.0-canary.106 went

v16.3.0-canary.105

Pre-release
Added 1
  • Add experimental.turbopackChunking config
Changed 3
  • Upgrade React from 0f42eac2-20260730 to cbb046ab-20260731
  • Enable turbopackFileSystemCacheForBuild by default
  • Update @types/react and @types/react-dom to latest
Fixed 4
  • Fix component chunks for workers
  • Fix adapter outputs for not-found routes when used with cache components
  • Fix isHeadPartial when hydrating from a static fallback shell
  • Consolidate unhandled rejection logging into a single listener

From Next.js

Misc Changes
  • test: stabilize after() deploy revalidation checks: #96428
  • Add automated code review workflow: #96359
  • [turbopack] Introduce documentation on experimental.turbopackChunking: #96437
  • [react-sync] Enable auto-merge on PRs: #96442
  • [ci] Run new/changed deploy tests asap: #96438
  • Upgrade React from 0f42eac2-20260730 to cbb046ab-20260731: #96434
  • [turbopack] Fix component chunks for workers: #96432
  • Enable turbopackFileSystemCacheForBuild by default: #96395
  • Consolidate unhandled rejection logging into a single listener: #95999
  • Fix adapter outputs for not-found routes when used with cache components: #96390
  • Update @types/react and @types/react-dom to latest: #96419
  • docs: document the App Shell stale time threshold for cached content: #96312
  • [turbopack] add experimental.turbopackChunking config: #96398
  • Fix isHeadPartial when hydrating from a static fallback shell: #96400
Credits

Huge thanks to @ztanner, @marcoshernanz, @sampoder, @eps1lon, @vercel-release-bot, @sokra, @icyJoseph, and @acdlite for helping!

View originalPermalink
How v16.3.0-canary.105 went

v16.3.0-canary.104

Pre-release
Changed 6
  • Respect sideEffects in a package.json file with optimizePackageImports in turbopack
  • Keep track of components of the remainder chunk in turbopack
  • Update Rust toolchain to nightly-2026-07-29
  • Upgrade React from 6cb4322d-20260729 to 0f42eac2-20260730
  • Skip reader task locking for immutable Turbo Tasks reads
  • Upgrade React from 96fcba90-20260728 to 1724e9ce-20260729
Fixed 3
  • Respect htmlLimitedBots in cache components without buffering the full response
  • Make AGENTS.md blue in create-next-app
  • Fix empty Fragment scroll ownership
Removed 1
  • Remove obsolete shouldWaitOnAllReady render option

From Next.js

Misc Changes
  • [turbopack] Respect sideEffects in a package.json file with optimizePackageImports: #96383
  • [turbopack] Keep track of components of the remainder chunk: #96409
  • Update Rust toolchain to nightly-2026-07-29: #96365
  • Remove obsolete shouldWaitOnAllReady render option: #96401
  • Upgrade React from 6cb4322d-20260729 to 0f42eac2-20260730: #96402
  • fix: respect htmlLimitedBots in cache components without buffering the full response: #96367
  • test: expand Cache Components metadata streaming coverage: #96366
  • fix(create-next-app): make AGENTS.md blue: #95432
  • [bench skill] Bench Edge builds of React too: #96234
  • Upgrade React from 1724e9ce-20260729 to 6cb4322d-20260729: #96389
  • Fix empty Fragment scroll ownership: #96342
  • Skip reader task locking for immutable Turbo Tasks reads: #96179
  • Upgrade React from 96fcba90-20260728 to 1724e9ce-20260729: #96355
  • test: reproduce empty parallel route scroll regression: #96323
  • [ci] Match the test job summary style to the PR test report comment: #95882
  • [Instant] Point to first blocking await in validation: #96343
Credits

Huge thanks to @sampoder, @wbinnssmith, @ztanner, @vercel-release-bot, @styfle, @gaearon, @DavidIlie, @marcoshernanz, @eps1lon, and @lubieowoce for helping!

View originalPermalink
How v16.3.0-canary.104 went

v16.3.0-canary.103

Pre-release
Added 1
  • Add cache copying support for worktrees
Changed 7
  • Update PWA guide with enhanced offline support details and example links for serwist
  • Bump postcss to 8.5.23
  • Share Ecmascript HMR chunk versioning, diffing, and merging between browser and node
  • Gate partial fallback shell upgrades behind partialPrefetching for next start
  • Cache immutable current task IDs outside the task-state lock
  • Restore comments dropped during a refactor
  • Bump @types/node to 20.17.7 to fix findSourceMap type
Fixed 4
  • Stop blurring on navigations in fragment-scroll
  • Fix PPR rendering for configured HTML bots
  • Ensure unique resolved headers() value between render passes
  • Make retry stop when the time it was given is up

From Next.js

Misc Changes
  • Update PWA guide with enhanced offline support details and example links for serwist: #96360
  • [fragment-scroll] Stop blurring on navigations: #96113
  • Fix PPR rendering for configured HTML bots: #96364
  • Bump postcss to 8.5.23: #96107
  • Ensure unique resolved headers() value between render passes: #96085
  • Share Ecmascript HMR chunk versioning, diffing, and merging between browser and node: #96325
  • Make retry stop when the time it was given is up: #96354
  • Gate partial fallback shell upgrades behind partialPrefetching for next start: #96297
  • docs: modernize Next 16 upgrade AI guidance: #96314
  • Cache immutable current task IDs outside the task-state lock: #96180
  • Added cache copying support for worktrees: #95646
  • docs(preventing-flash): cover reconciling state : #96146
  • docs: Parallel routes, conditional rendering and auth: #96351
  • [turbopack] Tree shake w/ bar['foo'] syntax for star imports: #96319
  • Update skills for Partial Prefetching: #96299
  • Restore comments dropped during a refactor: #96324
  • docs: remove PPR adapter page from Pages Router: #96316
  • [ci] Background some steps in build_reusable to reduce setup overhead, remove unneeded lld installation: #96195
  • Bump @types/node to 20.17.7 to fix findSourceMap type: #96321
Credits

Huge thanks to @adhamfayrouzamf, @icyJoseph, @ztanner, @eps1lon, @wbinnssmith, @gaearon, @acdlite, @aurorascharff, @marcoshernanz, @jimmyhmiller, @sampoder, and @bgw for helping!

View originalPermalink
How v16.3.0-canary.103 went

v16.3.0-canary.102

Pre-release
Added 1
  • Add guide and references for experimental.useOffline
Changed 2
  • Track re-exports in import_usage inside of compute_import_usage for turbopack
  • Remove loader calls for dropped dynamic imports in turbopack

From Next.js

Misc Changes
  • Revert "Revert "[turbopack] Track re-exports in import_usage inside of compute_import_usage"": #96315
  • [turbopack] Remove loader calls for dropped dynamic imports: #96284
  • docs: add guide and references for experimental.useOffline: #93218
Credits

Huge thanks to @sampoder and @icyJoseph for helping!

View originalPermalink
How v16.3.0-canary.102 went

v16.3.0-canary.101

Pre-release
Changed 4
  • Avoid complete clear on graph changes in Turbopack server HMR
  • Extract deferring build messages and use it in server HMR for Turbopack
  • Extract chunk list version and update into turbopack-ecmascript
  • Aggregate server HMR into one subscription in Turbopack

From Next.js

Misc Changes
  • Turbopack server hmr: avoid complete clear on graph changes: #95546
  • Turbopack HMR: extract deferring build messages and use it in server hmr: #95795
  • Turbopack: extract chunk list version/update into turbopack-ecmascript: #95661
  • Turbopack: aggregate server HMR into one subscription: #94948
Credits

Huge thanks to @wbinnssmith for helping!

View originalPermalink
How v16.3.0-canary.101 went

v16.3.0-canary.100

Pre-release
Added 4
  • Add Instant Insights pipeline spans
  • Add local Request Insights span tracing
  • Support import.meta.env in Turbopack
  • Add option to control dev memory threshold restarts
Changed 7
  • Improve root detection to handle worktrees, more workspaces and stray lockfiles
  • Upgrade React from 756fdd47-20260727 to 96fcba90-20260728
  • Treat Object.defineProperty(exports, …, { value: … }) as side-effect free in Turbopack
  • Persist Request Insights display settings
  • Isolate local Request Insights spans from OpenTelemetry
  • Unify allow-runtime with Partial Prefetching
  • Attempt static prefetch before resorting to runtime
Fixed 2
  • Return 200 for client-handled Server Action redirects
  • Fix Turbopack worker URL context lookup

From Next.js

Misc Changes
  • Improve root detection to handle worktrees, more workspaces & stray lockfiles: #96159
  • Revert "[turbopack] Track re-exports in import_usage inside of compute_import_usage": #96311
  • Return 200 for client-handled Server Action redirects: #96310
  • docs(interactive-apps): update prefetching for unified runtime prefetching: #96302
  • docs: clarify instrumentation-client polyfill loading and hydration timing: #95988
  • [cd] Send Slack notification if publish fails: #96304
  • [ci] Install Node.js from the official tarball in the native-builder image: #96298
  • Upgrade React from 756fdd47-20260727 to 96fcba90-20260728: #96306
  • Fix Turbopack worker URL context lookup: #96307
  • [turbopack] Treat Object.defineProperty(exports, …, { value: … }) as side-effect free: #96273
  • Classify Instant Insights as internal in Request Insights: #96147
  • Persist Request Insights display settings: #96277
  • Add Instant Insights pipeline spans: #95961
  • Isolate local Request Insights spans from OpenTelemetry: #96276
  • Add local Request Insights span tracing: #96275
  • fix(next/image): improve test coverage for unsupported image types: #96301
  • doc: typegen for typedRoutes: #96296
  • feat(turbopack): support import.meta.env: #96225
  • Add option to control dev memory threshold restarts: #96144
  • Restore canary version 16.3.0-canary.99 after v16.3.0-preview.10 preview release
  • Unify allow-runtime with Partial Prefetching: #96106
  • Attempt static prefetch before resorting to runtime: #96095
Credits

Huge thanks to @sampoder, @ztanner, @aurorascharff, @icyJoseph, @eps1lon, @vercel-release-bot, @DavidIlie, @timneutkens, @styfle, and @acdlite for helping!

View originalPermalink
How v16.3.0-canary.100 went

v16.3.0-preview.10

Pre-release
Added 2
  • Add Instant Insights request timing
  • Add the experimental.devValidationWorker config flag
Changed 13
  • Unify allow-runtime with Partial Prefetching
  • Attempt static prefetch before resorting to runtime
  • Use a safe clock for Request Insights bookkeeping
  • Count key length in remaining byte-budgeted LRUs
  • Serve cached misses from the filesystem route cache
  • Count URL key length in the filesystem route cache LRU
Fixed 5
  • Block prefetch task until sufficient response is received
  • Fix de-opt in getChunkRelativeUrl in Turbopack
  • Release one-shot timeout ids after they run in sandbox
  • Fix dev overlay symbolication for project paths needing percent-encoding
  • Release compression stream when client disconnects mid-response

From Next.js

Misc Changes
  • Unify allow-runtime with Partial Prefetching: #96106
  • Attempt static prefetch before resorting to runtime: #96095
  • Block prefetch task until sufficient response is received: #96017
  • Use a safe clock for Request Insights bookkeeping: #96274
  • Count key length in remaining byte-budgeted LRUs: #96231
  • Serve cached misses from the filesystem route cache: #96230
  • Count URL key length in the filesystem route cache LRU: #96229
  • Turbopack: Only extend the watcher's batch window for unfiltered events: #96186
  • Turbopack: Store watcher batch state with bitflags instead of 4 different sets: #96114
  • docs: document query-only href resolution and fix with-vercel-blob : #96280
  • Micro-optimization for string format: #95774
  • Upgrade React from 28cd4bb0-20260723 to 756fdd47-20260727: #96270
  • [test] Unflake more tests: #96081
  • [test] Run the navigation e2e suite under cacheComponents: #95877
  • [test] Run more test suites under cacheComponents flag, again: #96196
  • [test] Unflake a prefetch-related race: #96222
  • docs(ai-agents): restructure as steps and close 16.2/16.3 coverage gaps: #96247
  • Replace vendored http-proxy with httpxy: #96060
  • Update vendored @mswjs/interceptors to 0.41.9: #96059
  • Track whether runtime data is accessed during prefetch: #95964
  • Add Instant Insights request timing: #95958
  • [turbopack] Tree-shake module.exports = {...} (CJS): #95996
  • [turbopack] Fix de-opt in getChunkRelativeUrl(): #96183
  • Add shell offset to static segment prefetches: #95963
  • Turbopack: support import.meta.glob caseSensitive option: #96226
  • fix(sandbox): release one-shot timeout ids after they run: #96161
  • Fix dev overlay symbolication for project paths needing percent-encoding: #96221
  • [internal] Add a skill for benching changes in a sandbox: #95943
  • Run dev validation in process when using Webpack: #96219
  • Read chunk source maps from disk in the dev validation worker: #96218
  • Retry the source map lookup with a plain path: #96215
  • Pass fallback params to the dev validation worker as maps: #96210
  • [sourcemaps] Reuse source map payloads and consumers across stack frames: #96198
  • fix: release compression stream when client disconnects mid-response: #96173
  • Run Cache Components dev validation on a worker thread: #96153
  • Add a benchmark for dev Cache Components validation on a worker thread: #96152
  • [test] Unflake the enabled-features-trace test suite: #96175
  • [refactor] Prepare dev validation for running on a worker thread: #96151
  • Add the experimental.devValidationWorker config flag: #96150
  • [refactor] Model dev validation render outputs as a discriminated union: #96149
  • Forward dev invalid dynamic usage errors from the render, not validation: #96148
  • Optimize implicit cache tag derivation: #96120
  • Avoid quadratic HMR queue shifts: #96137
  • [sourcemaps] Use file: sourcemaps for Turbopack to improve dev performance: #95946
  • Give RouteCacheEntry a single hidden class across its lifecycle: #96164
  • Keep optimistic-route param handling monomorphic: #96169
  • Store RouteTree slots in a Map to keep slot access monomorphic: #96168
  • Make reifyRouteTree object literals match the canonical RouteTree key order: #96162
  • Keep VaryPath monomorphic by making isRootParam required: #96122
  • docs: expand and modernize the Single-Page Applications guide: #95860
  • docs: navigation interrupts after streaming has started (notFound, forbidden, unauthorized): #95851
  • docs: reframe prefetching around automatic vs. controllable behavior: #95896
  • docs(view-transitions): fix the skill install command: #96142
  • Include additional prerender metadata about build-time routes: #96080
  • Optimize app page entry analysis: #96058
  • [ts-plugin] Preserve TypeScript quick info metadata: #95863
  • [turbopack] Import Webpack's tests for tree-shaking: #95811
  • [turbopack] Drop dead require() calls: #95718
  • [turbopack] Track usage of modules imported with require(): #95717
  • Return plain text 404 for non-document requests to unknown paths: #95930
  • [RSC HMR] Fix a flurry of refetches when a editing component imported from many routes: #96102
  • [turbopack] Track re-exports in import_usage inside of compute_import_usage: #95989
  • Turbopack: Very minor improvements for watcher loop: #96103
  • Turbopack: Refactor watcher event handling and batching logic: #96087
  • fix: remove deprecated url.parse() from custom-server example: #96105
  • Upgrade React from 711c445b-20260722 to 28cd4bb0-20260723: #96100
  • Throw for empty or incomplete generateStaticParams results with output: export: #95969
  • Throw when generateStaticParams returns invalid values: #95968
  • Remove inert experimental.viewTransition flag: #96098
  • Restore partial fallback shell upgrade coverage: #96096
  • fix(next/font/google): bound Google Fonts fetch timeout on Turbopack: #95981
  • Rewrite edge server source map sources in Rust, drop JS fallback: #95980
  • docs: view transitions guide — skill section, source-audit fixes, flag-removal docs: #96097
  • Restore canary version 16.3.0-canary.94 after v16.3.0-preview.9 preview release
Credits

Huge thanks to @acdlite, @DavidIlie, @gaearon, @bgw, @icyJoseph, @jimmyhmiller, @vercel-release-bot, @aurorascharff, @eps1lon, @timneutkens, @sampoder, @petehunt, @unstubbable, @marcoshernanz, @gnoff, @devjiwonchoi, @wasim-builds, and @lukesandberg for helping!

View originalPermalink
How v16.3.0-preview.10 went

v16.3.0-canary.97

Pre-release
Added 1
  • Add the experimental.devValidationWorker config flag
Changed 10
  • Run dev validation in process when using Webpack
  • Read chunk source maps from disk in the dev validation worker
  • Retry the source map lookup with a plain path
  • Pass fallback params to the dev validation worker as maps
  • Reuse source map payloads and consumers across stack frames
  • Run Cache Components dev validation on a worker thread
Fixed 4
  • Release one-shot timeout ids after they run
  • Fix dev overlay symbolication for project paths needing percent-encoding
  • Release compression stream when client disconnects mid-response
  • Unflake the enabled-features-trace test suite

From Next.js

Misc Changes
  • fix(sandbox): release one-shot timeout ids after they run: #96161
  • Fix dev overlay symbolication for project paths needing percent-encoding: #96221
  • [internal] Add a skill for benching changes in a sandbox: #95943
  • Run dev validation in process when using Webpack: #96219
  • Read chunk source maps from disk in the dev validation worker: #96218
  • Retry the source map lookup with a plain path: #96215
  • Pass fallback params to the dev validation worker as maps: #96210
  • [sourcemaps] Reuse source map payloads and consumers across stack frames: #96198
  • fix: release compression stream when client disconnects mid-response: #96173
  • Run Cache Components dev validation on a worker thread: #96153
  • Add a benchmark for dev Cache Components validation on a worker thread: #96152
  • [test] Unflake the enabled-features-trace test suite: #96175
  • [refactor] Prepare dev validation for running on a worker thread: #96151
  • Add the experimental.devValidationWorker config flag: #96150
  • [refactor] Model dev validation render outputs as a discriminated union: #96149
  • Forward dev invalid dynamic usage errors from the render, not validation: #96148
  • Optimize implicit cache tag derivation: #96120
  • Avoid quadratic HMR queue shifts: #96137
Credits

Huge thanks to @petehunt, @gaearon, @unstubbable, and @marcoshernanz for helping!

View originalPermalink
How v16.3.0-canary.97 went

v16.3.0-canary.96

Pre-release
Changed 17
  • Use file: sourcemaps for Turbopack to improve dev performance
  • Give RouteCacheEntry a single hidden class across its lifecycle
  • Keep optimistic-route param handling monomorphic
  • Store RouteTree slots in a Map to keep slot access monomorphic
  • Make reifyRouteTree object literals match the canonical RouteTree key order
  • Keep VaryPath monomorphic by making isRootParam required
Fixed 2
  • Fix the skill install command in view-transitions documentation
  • Fix a flurry of refetches when editing a component imported from many routes in RSC HMR

From Next.js

Misc Changes
  • [sourcemaps] Use file: sourcemaps for Turbopack to improve dev performance: #95946
  • Give RouteCacheEntry a single hidden class across its lifecycle: #96164
  • Keep optimistic-route param handling monomorphic: #96169
  • Store RouteTree slots in a Map to keep slot access monomorphic: #96168
  • Make reifyRouteTree object literals match the canonical RouteTree key order: #96162
  • Keep VaryPath monomorphic by making isRootParam required: #96122
  • docs: expand and modernize the Single-Page Applications guide: #95860
  • docs: navigation interrupts after streaming has started (notFound, forbidden, unauthorized): #95851
  • docs: reframe prefetching around automatic vs. controllable behavior: #95896
  • docs(view-transitions): fix the skill install command: #96142
  • Include additional prerender metadata about build-time routes: #96080
  • Optimize app page entry analysis: #96058
  • [ts-plugin] Preserve TypeScript quick info metadata: #95863
  • [turbopack] Import Webpack's tests for tree-shaking: #95811
  • [turbopack] Drop dead require() calls: #95718
  • [turbopack] Track usage of modules imported with require(): #95717
  • Return plain text 404 for non-document requests to unknown paths: #95930
  • [RSC HMR] Fix a flurry of refetches when a editing component imported from many routes: #96102
  • [turbopack] Track re-exports in import_usage inside of compute_import_usage: #95989
Credits

Huge thanks to @gaearon, @acdlite, @aurorascharff, @gnoff, @timneutkens, @devjiwonchoi, and @sampoder for helping!

View originalPermalink
How v16.3.0-canary.96 went

v16.3.0-canary.95

Pre-release
Changed 2
  • Rewrite edge server source map sources in Rust, drop JS fallback
  • Upgrade React from 711c445b-20260722 to 28cd4bb0-20260723
Fixed 4
  • Remove deprecated url.parse() from custom-server example
  • Throw for empty or incomplete generateStaticParams results with output: export
  • Throw when generateStaticParams returns invalid values
  • Bound Google Fonts fetch timeout on Turbopack
Removed 1
  • Remove inert experimental.viewTransition flag

From Next.js

Misc Changes
  • Turbopack: Very minor improvements for watcher loop: #96103
  • Turbopack: Refactor watcher event handling and batching logic: #96087
  • fix: remove deprecated url.parse() from custom-server example: #96105
  • Upgrade React from 711c445b-20260722 to 28cd4bb0-20260723: #96100
  • Throw for empty or incomplete generateStaticParams results with output: export: #95969
  • Throw when generateStaticParams returns invalid values: #95968
  • Remove inert experimental.viewTransition flag: #96098
  • Restore partial fallback shell upgrade coverage: #96096
  • fix(next/font/google): bound Google Fonts fetch timeout on Turbopack: #95981
  • Rewrite edge server source map sources in Rust, drop JS fallback: #95980
  • docs: view transitions guide — skill section, source-audit fixes, flag-removal docs: #96097
  • Restore canary version 16.3.0-canary.94 after v16.3.0-preview.9 preview release
  • [Bench] Add client-trace attribution pass and document metrics to render-pipeline: #95828
  • Turbopack: Split up turbo-tasks-fs/src/lib.rs into smaller modules: #96030
  • Turbopack: Use Arc and Box to make InvalidatorMap slightly more efficient: #95987
  • Turbopack: Use swc_core::ecma::utils::prop_name_eq for a couple of the next-custom-transforms: #96035
Credits

Huge thanks to @bgw, @wasim-builds, @vercel-release-bot, @devjiwonchoi, @aurorascharff, @lukesandberg, and @gaearon for helping!

View originalPermalink
How v16.3.0-canary.95 went

v16.3.0-preview.9

Pre-release
Changed 3
  • Upgrade React from 81e442ea-20260721 to 711c445b-20260722
  • Gate partialFallback behavior behind partialPrefetching flag
  • Exclude dynamic params from prerenders when no generateStaticParams values is provided
Fixed 4
  • Fix cache miss in App Shell for cached pages with gSP
  • Fix stale dev 'use cache' for cookieless requests and route handlers
  • Fix basePath fallback parameter parsing
  • Fix deployment skew protection for component chunks

From Next.js

Misc Changes
  • [Bench] Add client-trace attribution pass and document metrics to render-pipeline: #95828
  • Turbopack: Split up turbo-tasks-fs/src/lib.rs into smaller modules: #96030
  • Turbopack: Use Arc and Box to make InvalidatorMap slightly more efficient: #95987
  • Turbopack: Use swc_core::ecma::utils::prop_name_eq for a couple of the next-custom-transforms: #96035
  • [Cache Components] Exclude dynamic params from prerenders when no generateStaticParams values is provided: #95872
  • Gate partialFallback behavior behind partialPrefetching flag: #96074
  • [turbopack] Fix deployment skew protection for component chunks: #96079
  • Turbopack: stop copying sourcesContent into every serialized source map: #95934
  • Upgrade React from 81e442ea-20260721 to 711c445b-20260722: #96066
  • fix: cache miss in App Shell for cached pages with gSP: #95665
  • skill(cc-adoption): add dev-only validation sweep reference: #96057
  • Refine Cache Components and Partial Prefetching adoption skills: #95817
  • [test] Move the dev-only use cache test suite to test/development: #96023
  • Fix stale dev 'use cache' for cookieless requests and route handlers: #96022
  • [test] Add failing tests for stale route handler and page cached data: #96021
  • Add a dedicated HMR message for static params changes: #96020
  • Emit the static paths HMR update after updating the cache: #96019
  • [test] Add source-mapping coverage of React's fake stack frame scripts in use cache: #95945
  • Fix basePath fallback parameter parsing: #95966
  • Restore canary version 16.3.0-canary.93 after v16.3.0-preview.8 preview release
Credits

Huge thanks to @gaearon, @bgw, @gnoff, @acdlite, @sampoder, @vercel-release-bot, @lubieowoce, @aurorascharff, @unstubbable, and @timneutkens for helping!

View originalPermalink
How v16.3.0-preview.9 went

v16.3.0-canary.94

Pre-release
Added 1
  • Add a dedicated HMR message for static params changes
Changed 7
  • Exclude dynamic params from prerenders when no generateStaticParams values is provided
  • Gate partialFallback behavior behind partialFallback flag
  • Stop copying sourcesContent into every serialized source map in Turbopack
  • Upgrade React from 81e442ea-20260721 to 711c445b-20260722
  • Emit the static paths HMR update after updating the cache
  • Always consult npm_config_user_agent first
  • Rewrite next-cache-components-optimizer around a test-driven instant() loop
Fixed 4
  • Fix deployment skew protection for component chunks in Turbopack
  • Fix cache miss in App Shell for cached pages with gSP
  • Fix stale dev use cache for cookieless requests and route handlers
  • Fix basePath fallback parameter parsing

From Next.js

Misc Changes
  • [Cache Components] Exclude dynamic params from prerenders when no generateStaticParams values is provided: #95872
  • Gate partialFallback behavior behind partialPrefetching flag: #96074
  • [turbopack] Fix deployment skew protection for component chunks: #96079
  • Turbopack: stop copying sourcesContent into every serialized source map: #95934
  • Upgrade React from 81e442ea-20260721 to 711c445b-20260722: #96066
  • fix: cache miss in App Shell for cached pages with gSP: #95665
  • skill(cc-adoption): add dev-only validation sweep reference: #96057
  • Refine Cache Components and Partial Prefetching adoption skills: #95817
  • [test] Move the dev-only use cache test suite to test/development: #96023
  • Fix stale dev 'use cache' for cookieless requests and route handlers: #96022
  • [test] Add failing tests for stale route handler and page cached data: #96021
  • Add a dedicated HMR message for static params changes: #96020
  • Emit the static paths HMR update after updating the cache: #96019
  • [test] Add source-mapping coverage of React's fake stack frame scripts in use cache: #95945
  • Fix basePath fallback parameter parsing: #95966
  • Restore canary version 16.3.0-canary.93 after v16.3.0-preview.8 preview release
  • Always consult npm_config_user_agent first: #95879
  • Rewrite next-cache-components-optimizer around a test-driven instant() loop: #94721
Credits

Huge thanks to @gnoff, @acdlite, @sampoder, @gaearon, @vercel-release-bot, @lubieowoce, @aurorascharff, @unstubbable, @timneutkens, @eps1lon, and @gaojude for helping!

View originalPermalink
How v16.3.0-canary.94 went

v16.3.0-preview.8

Pre-release
Changed 6
  • Always consult npm_config_user_agent first
  • Rewrite next-cache-components-optimizer around a test-driven instant() loop
  • Remove chunk group id from value of chunk groups map in Turbopack
  • Use Arc<PathBuf> for keys in turbo-task-fs's per-path MutexMap
  • Bump sharp to 0.35.3
  • Tree-shake CJS exports that use the Object.defineProperty syntax in turbopack
Fixed 1
  • Fix missing canonicalization of paths and always use verbatim paths internally for Windows in Turbopack

From Next.js

Misc Changes
  • Always consult npm_config_user_agent first: #95879
  • Rewrite next-cache-components-optimizer around a test-driven instant() loop: #94721
  • docs: attribute App Shell prefetch to Partial Prefetching: #96003
  • Turbopack: Remove chunk group id from value of chunk groups map: #95142
  • [ci] Enforce minimumReleaseAge in e2e tests that install external dependencies: #95628
  • Turbopack: Fix missing canonicalization of paths and always use verbatim paths internally for Windows: #95668
  • Revert "[turbopack] Don't SSR on pages only navigated to through a soft nav (#95539)": #96028
  • Turbopack: Use Arc<PathBuf> for keys in turbo-task-fs's per-path MutexMap: #95951
  • chore(deps): bump sharp@0.35.3: #95507
  • [turbopack] Tree-shake CJS exports that use the Object.defineProperty syntax: #95994
  • Restore canary version 16.3.0-canary.92 after v16.3.0-preview.7 preview release
Credits

Huge thanks to @eps1lon, @gaojude, @icyJoseph, @bgw, @sampoder, and @styfle for helping!

View originalPermalink
How v16.3.0-preview.8 went

v16.3.0-canary.93

Pre-release
Changed 3
  • Turbopack: Remove chunk group id from value of chunk groups map
  • Turbopack: Use Arc<PathBuf> for keys in turbo-task-fs's per-path MutexMap
  • Bump sharp to 0.35.3
Fixed 2
  • Turbopack: Fix missing canonicalization of paths and always use verbatim paths internally for Windows
  • Turbopack: Tree-shake CJS exports that use the Object.defineProperty syntax

From Next.js

Misc Changes
  • docs: attribute App Shell prefetch to Partial Prefetching: #96003
  • Turbopack: Remove chunk group id from value of chunk groups map: #95142
  • [ci] Enforce minimumReleaseAge in e2e tests that install external dependencies: #95628
  • Turbopack: Fix missing canonicalization of paths and always use verbatim paths internally for Windows: #95668
  • Revert "[turbopack] Don't SSR on pages only navigated to through a soft nav (#95539)": #96028
  • Turbopack: Use Arc<PathBuf> for keys in turbo-task-fs's per-path MutexMap: #95951
  • chore(deps): bump sharp@0.35.3: #95507
  • [turbopack] Tree-shake CJS exports that use the Object.defineProperty syntax: #95994
  • Restore canary version 16.3.0-canary.92 after v16.3.0-preview.7 preview release
Credits

Huge thanks to @icyJoseph, @bgw, @sampoder, and @styfle for helping!

View originalPermalink
How v16.3.0-canary.93 went

v16.3.0-preview.7

Pre-release
Changed 17
  • Improve performance of validating MPA form submissions
  • Enforce serverActions.bodySizeLimit for Server Actions in Edge runtime
  • Improve performance of detectContentType() in next/image
  • Rename turbopackTreeShaking to turbopackModuleFragments
  • Move outputHashSalt out of experimental
  • Move immutable static assets config option out of experimental
Fixed 21
  • Error handling and loading states in with-apollo-and-redux example
  • Turbopack middleware matcher with i18n single locale
  • Set correct origin for internal redirects in custom server
  • Ensure exotic rewrite param values are properly encoded
  • Fetch cache key by the effective request
  • Byte-exact fetch cache key for binary bodies

From Next.js

Example Changes
  • fix: error handling and loading states in with-apollo-and-redux example: #91457
Misc Changes
  • Upgrade React from 172742b4-20260716 to 81e442ea-20260721: #96016
  • Fix Turbopack middleware matcher with i18n single locale: #96014
  • Improve performance of validating MPA form submissions: #96013
  • Enforce serverActions.bodySizeLimit for Server Actions in Edge runtime: #96012
  • Set correct origin for internal redirects in custom server: #96011
  • Ensure exotic rewrite param values are properly encoded: #96010
  • fix(fetch-cache): key fetch(Request, init) by the effective request: #96009
  • fix(incremental-cache): byte-exact fetch cache key for binary bodies: #96008
  • Validate server reference IDs during manifest lookup: #96007
  • fix(next/image): improve performance of detectContentType() : #96006
  • Preserve basePath in redirect destinations: #95608
  • [ci] Skip passed-tests cache steps for jobs that never run tests: #96001
  • docs: add upgrade section to installation and expand AI agents guide: #95861
  • docs: fix unstable_cache syntax error: #96002
  • Insights: use a single Learn more link in console errors: #95967
  • Refine development validation signal handling: #95998
  • Include examples of static export tools & GitHub Pages template: #95929
  • docs: note the :has() scaling limit in the Interactive apps guide: #95925
  • Prevent unhandled rejections when a "use cache" cache handler errors: #95985
  • [test] Add coverage for throwing custom "use cache" cache handler: #95984
  • docs: clarify layout.js nesting behavior in route groups: #95720
  • Fix instant validation blocking navigations: #95939
  • [ci] Share a single browser instance across all test suites in a single job: #95589
  • [turbopack] Rename turbopackTreeShaking to turbopackModuleFragments: #95978
  • cna: use LayoutProps helper in TS layout templates: #95675
  • [turbopack] Skip redundant top-level root updates: #95903
  • [turbopack] Drop unused exports from a CJS module: #95716
  • Turbopack: Simplify parent directory creation retry loop logic: #95835
  • Run Rust doctests in CI: #95911
  • docs: add 'Set up your editor' to the installation guide: #95928
  • fix(cms-contentful): await draftMode() and use Promise<> params type: #95631
  • Move outputHashSalt out of experimental: #95840
  • Move immutable static assets config option out of experimental: #95351
  • [instant] Let dev-server requests bypass the fetch lock: #95761
  • Upgrade React from 7023f501-20260714 to 172742b4-20260716: #95901
  • Fix Rust doctest failures: #95909
  • [turbopack] Clean up server_chunking_context: #95908
  • [turbopack] Don't SSR on pages only navigated to through a soft nav: #95539
  • Package skills/ as a Claude Code plugin: #95907
  • [ci] Avoid apt-get in the next-stats-action Docker image: #95847
  • Back/forward set the Nav Inspector back to pending: #95865
  • fix(agent-rules): pad managed AGENTS.md block with blank lines: #95892
  • Revert "Run more test suites under cacheComponents flag": #95884
  • Fix repeated navigations while the Instant Navigation lock is held: #95864
  • Run more test suites under cacheComponents flag: #95878
  • Unify appShells flag with Partial Prefetching: #95415
  • Fix Request Insights span collection: #95818
  • Revert "Replay same-document traversals that happen before hydration": #95853
  • [ci] Allow running all deploy tests with builds from a private registry: #95784
  • [turbopack] Only ship pages-router routes in the client chunk-group bootstrap manifest: #94671
  • [turbopack] Inline the chunk group bootstrap in Next.js to drop the per-route runtime: #94666
  • [turbopack] Add chunk_group_bootstrap_params and the chunk-loading global to the build manifest: #94663
  • [turbopack] Add registerEntry() to handle inline bootstrapping: #94664
  • [turbopack] Add inline_chunk_group_bootstrap to BrowserChunkingContext and chunk_group_bootstrap_params to ChunkGroupResult: #94661
  • [turbopack] Create a chunk_group_bootstrap_params() function: #94631
  • [turbopack] Create a shared asset with browser runtime code: #94586
  • Turbopack: trace externals imported only by server actions: #95824
  • [turbopack] Generate component chunks for each merged group to increase cache hits: #95261
  • Exclude stale under 5 minutes from app shells: #95833
  • docs: remove experimental @next/routing note: #94903
  • [turbopack] Tell agents not to mention next.config.js options: #95825
  • chore: Remove stale build warning: #95813
  • Replay same-document traversals that happen before hydration: #95682
  • docs: cssChunking graph option: #95693
  • [Bench] Extend bench app to have realistic client chunk counts: #95814
  • Add more realistic bench fixtures: #95807
  • Fix Request Insights subscription initialization: #95794
  • Model async userland loading in app routes as a state machine: #95791
  • Preserve init errors from async route modules: #95799
  • Fix cache warming and static params for metadata images with top-level await: #95790
  • Only track pending imports for real promises: #95789
  • Support metadata routes in --debug-build-paths: #95788
  • Respect NEXT_HASH_SALT for server side assetsHashes: #95738
  • telemetry: add agentName to anonymous metadata: #95586
  • [turbopack] Optimize the implementation of AutoMap/AutoSet : #95694
  • Better support the CLI spinner when running the TSC CLI: #95753
  • Upgrade React from 5123b063-20260708 to 7023f501-20260714: #95782
  • docs: add route-side URL data audit to the Partial Prefetching adoption guide: #95389
  • docs: revalidateTag with expire zero, for route handlers: #95760
  • request insights: add DevTools request panel (5/5): #93978
  • docs: Improve immutable static docs: #95752
  • Add React sync development skill: #95620
  • docs: useSearchParams example stray link: #95759
  • Improve the NFT error message and ignore comment handling: #95144
  • Upgrade to swc 73: #95731
  • [turbopack] Switch make_production_chunks to use floats: #95749
  • Fix termination handling: #95692
  • Restore canary version 16.3.0-canary.84 after v16.3.0-preview.6 preview release
Credits

Huge thanks to @vercel-release-bot, @eps1lon, @ZaforAbdullah, @gaojude, @aurorascharff, @icyJoseph, @timneutkens, @WildChargerTV, @ankurdotio, @bgw, @sampoder, @marcoshernanz, @manoraj, @mischnic, @acdlite, @gaearon, @gnoff, @andrewimm, @lukesandberg, and @feedthejim for helping!

View originalPermalink
How v16.3.0-preview.7 went

v16.3.0-canary.92

Pre-release
Added 1
  • Include examples of static export tools and GitHub Pages template
Changed 8
  • Upgrade React from 172742b4-20260716 to 81e442ea-20260721
  • Improve performance of validating MPA form submissions
  • Enforce serverActions.bodySizeLimit for Server Actions in Edge runtime
  • Improve performance of detectContentType() in next/image
  • Use a single Learn more link in console errors for Insights
  • Refine development validation signal handling
  • Rename turbopackTreeShaking to turbopackModuleFragments
  • Use LayoutProps helper in TypeScript layout templates
Fixed 11
  • Error handling and loading states in with-apollo-and-redux example
  • Turbopack middleware matcher with i18n single locale
  • Set correct origin for internal redirects in custom server
  • Ensure exotic rewrite param values are properly encoded
  • Key fetch(Request, init) by the effective request in fetch-cache
  • Byte-exact fetch cache key for binary bodies in incremental-cache

From Next.js

Example Changes
  • fix: error handling and loading states in with-apollo-and-redux example: #91457
Misc Changes
  • Upgrade React from 172742b4-20260716 to 81e442ea-20260721: #96016
  • Fix Turbopack middleware matcher with i18n single locale: #96014
  • Improve performance of validating MPA form submissions: #96013
  • Enforce serverActions.bodySizeLimit for Server Actions in Edge runtime: #96012
  • Set correct origin for internal redirects in custom server: #96011
  • Ensure exotic rewrite param values are properly encoded: #96010
  • fix(fetch-cache): key fetch(Request, init) by the effective request: #96009
  • fix(incremental-cache): byte-exact fetch cache key for binary bodies: #96008
  • Validate server reference IDs during manifest lookup: #96007
  • fix(next/image): improve performance of detectContentType() : #96006
  • Preserve basePath in redirect destinations: #95608
  • [ci] Skip passed-tests cache steps for jobs that never run tests: #96001
  • docs: add upgrade section to installation and expand AI agents guide: #95861
  • docs: fix unstable_cache syntax error: #96002
  • Insights: use a single Learn more link in console errors: #95967
  • Refine development validation signal handling: #95998
  • Include examples of static export tools & GitHub Pages template: #95929
  • docs: note the :has() scaling limit in the Interactive apps guide: #95925
  • Prevent unhandled rejections when a "use cache" cache handler errors: #95985
  • [test] Add coverage for throwing custom "use cache" cache handler: #95984
  • docs: clarify layout.js nesting behavior in route groups: #95720
  • Fix instant validation blocking navigations: #95939
  • [ci] Share a single browser instance across all test suites in a single job: #95589
  • [turbopack] Rename turbopackTreeShaking to turbopackModuleFragments: #95978
  • cna: use LayoutProps helper in TS layout templates: #95675
Credits

Huge thanks to @vercel-release-bot, @eps1lon, @ZaforAbdullah, @gaojude, @aurorascharff, @icyJoseph, @timneutkens, @WildChargerTV, @ankurdotio, @bgw, and @sampoder for helping!

View originalPermalink
How v16.3.0-canary.92 went

v16.2.11

Security 9
  • Fixed Denial of Service in App Router using Server Actions
  • Fixed Middleware / Proxy bypass in App Router applications using Turbopack and single locale
  • Fixed Server-Side Request Forgery in rewrites via attacker-controlled destination hostname
  • Fixed Server-Side Request Forgery in Server Actions on custom servers
  • Fixed Cache confusion of response bodies for requests with bodies
  • Fixed Cache confusion of response bodies for requests with bodies containing invalid UTF-8 byte sequences

From Next.js

View originalPermalink
How v16.2.11 went

v15.5.21

Security 9
  • Fix Denial of Service in App Router using Server Actions
  • Fix Middleware / Proxy bypass in App Router applications using Turbopack and single locale
  • Fix Server-Side Request Forgery in rewrites via attacker-controlled destination hostname
  • Fix Server-Side Request Forgery in Server Actions on custom servers
  • Fix cache confusion of response bodies for requests with bodies
  • Fix cache confusion of response bodies for requests with bodies containing invalid UTF-8 byte sequences

From Next.js

View originalPermalink
How v15.5.21 went

v16.3.0-canary.91

Pre-release
Changed 6
  • Skip redundant top-level root updates in turbopack
  • Drop unused exports from a CJS module in turbopack
  • Simplify parent directory creation retry loop logic in turbopack
  • Move outputHashSalt out of experimental
  • Move immutable static assets config option out of experimental
  • Let dev-server requests bypass the fetch lock in instant
Fixed 1
  • Await draftMode() and use Promise<> params type in cms-contentful

From Next.js

Misc Changes
  • [turbopack] Skip redundant top-level root updates: #95903
  • [turbopack] Drop unused exports from a CJS module: #95716
  • Turbopack: Simplify parent directory creation retry loop logic: #95835
  • Run Rust doctests in CI: #95911
  • docs: add 'Set up your editor' to the installation guide: #95928
  • fix(cms-contentful): await draftMode() and use Promise<> params type: #95631
  • Move outputHashSalt out of experimental: #95840
  • Move immutable static assets config option out of experimental: #95351
  • [instant] Let dev-server requests bypass the fetch lock: #95761
Credits

Huge thanks to @marcoshernanz, @sampoder, @bgw, @aurorascharff, @manoraj, @mischnic, and @eps1lon for helping!

View originalPermalink
How v16.3.0-canary.91 went
View all

Discussion

If you publish Next.js, you can claim this product by proving you administer its repository.