Releases: vercel/next.js
v16.0.1-canary.0
Misc Changes
- docs: create-next-app react-compiler and new prompts: #85213
- docs: cache components - introduction: #85196
- docs: use cache feedback: #85169
- docs: stabilize apis in docs: #85219
- docs: revalidateTag immediate expiration in Route Handlers: #85223
- Docs/use cache feedback 2: #85222
- docs: added
use cache: remote
docs: #85145 - docs: proxy runtime defaults to nodejs: #85204
- chore: cache components feedback: #85241
Credits
Huge thanks to @icyJoseph, @wyattjoh, and @devjiwonchoi for helping!
v16.0.0
Tip
Check out our Next v16 Blog Post to learn more about this release.
Core Changes
- Development: Don't import app-router / hot-reloader through next/link in application code: #83656
- Remove clientParamParsing requirement from RDC for Navigations: #83661
- Upgrade React from
6b70072c-20250909
to886b3d36-20250910
: #83650 - Turbopack: Use readFileSync / writeFileSync for manifest writing: #83694
- Upgrade React from
886b3d36-20250910
tof3a80361-20250911
: #83696 - Don't create client-side debug channel if the feature is disabled: #83699
- fix: dev should produce the correct default fallback regex to match builds/Turbopack: #83701
- [devtool] fix overlay styles are missing: #83721
- Revert "Remove clientParamParsing requirement from RDC for Navigations": #83725
- Only enable unhandledRejection filtering when opted in: #83726
- Fix index data route for adapter build-complete: #83730
- Remove leading underscore for unhandledRejection envvar: #83732
- Upgrade React from
f3a80361-20250911
to93d7aa69-20250912
: #83729 - Upgrade React from
93d7aa69-20250912
to8a8e9a7e-20250912
: #83742 - Fix reentrancy of unhandledRejection filtering: #83741
- Fix type for unhandled rejection handler process.removeListener: #83748
- [OTel] fix: Root span name should not include high cardinality URL: #75416
- Turbopack: Remove matchers.reload() call on each request: #83720
- [Breaking] Flat config as default in
@next/eslint-plugin-next
: #83763 - fix: Rspack splitChunks.chunks regex: #83670
- Revert "Turbopack: Remove matchers.reload() call on each request": #83819
- fix: unstable_cache should perform blocking revalidation during ISR revalidation: #83820
- fix(Rspack): resolve HMR unresponsiveness or unexpected full reload & update dev snapshot: #83480
- Allow
next.config.mts
for Node.js native TS resolver: #83556 - chore: Ensure Import Trace starts in a newline: #83638
- Development: Remove matchers.reload() on each request: #83829
- Upgrade React from
8a8e9a7e-20250912
to5e0c951b-20250916
: #83850 - Bump typescript 5.9.2: #83833
- Allow headers, rewrites and redirects to be defined as sync functions: #83743
- Turbopack: Optimize addedRoutes and removedRoutes calculation: #83840
- [next-config-ts] Set Node.js native TS loader fallback flag to process.env: #83832
- Development: Clarify TypescriptStatus in watcher: #83857
- Upgrade sharp dependency to version ^0.34.4: #83892
- Upgrade React from
5e0c951b-20250916
to128abcfa-20250917
: #83906 - Add native ts resolver docs link to transpile-config: #83914
- OTel: use
srcPage
for templates whennext.route
is unavailable: #83911 - Remove inline CSS sourcemaps from next-devtools: #83917
- Development: Move all TypeScript related work in watcher together: #83912
- [Cache Components] Allow sync IO inside console methods : #83843
- Upgrade React from
128abcfa-20250917
to84af9085-20250917
: #83959 - Build: Add .next/trace-build with high level trace: #83949
- Remove force writing **/*.mts to tsconfig: #83967
- feat: Isolate dev build from prod: #83961
- Remove JS size reporting from next build: #83815
- Docs/workspace setup: #83490
- Turbopack: support
import ... with {type: "bytes"}
: #83896 - fix: error overlay not closing when backdrop clicked: #83981
- Upgrade React from
84af9085-20250917
tod415fd3e-20250919
: #84003 - fix: worker logs should still support color: #84024
- Update font data: #84005
- Allow passing port to
next internal trace
: #83907 - Turbopack: error when importing Typescript in node_modules: #83990
- Turbopack: Deterministic builds (prerender-manifest, .next/package.json, ./next/postcss.js): #84081
- Turbopack: Fix babel-loader (allowing built-in or manual configuration): #82676
- [Cache Components] allow using headers() in runtime prefetches: #83838
- [Breaking] Remove deprecated
publicRuntimeConfig
andserverRuntimeConfig
: #83944 - Turbopack: mode to disable tracing: #83683
- babel-loader: Fix a few issues with config caching: #83973
- Turbopack: Merge babel-loader and react-compiler configuration logic to avoid running babel twice: #83502
- [breaking]: enable router scroll optimization by default: #84102
- Fix layout for
ssgPageRoutes
in the file tree: #84104 - Turbopack: Remove useless 'default' built-in webpack loader condition: #84111
- Fix: Client should auto reload after server restarts: #83971
- trace-build: Add missing spans: #84080
- Development: Remove TypeScript from the hot path during bootup: #84090
- Guide users to
experimental.cacheComponents
config: #84121 - Development: Only load webpack when used: #84123
- Turbopack: Skip loading webpack plugin: #84125
- Development: Only load createEnvDefinitions when used: #83935
- BREAKING CHANGE!: bump default
images.minimumCacheTTL
from 1 min to 4 hours: #84105 - Feat: Add Model Context Protocol (MCP) server to Next.js dev server: #84100
- Upgrade React from
d415fd3e-20250919
to1eca9a27-20250922
: #84093 - Turbopack: Remove the deprecated
.turbo
config object: #84109 - Flag excess properties in Next.js config with TypeScript: #84069
- docs: update Security section to direct disclosures : #84156
- ci: Enable
experimental.isolatedDevBuild
fortest-experimental-dev
: #84099 - [turbopack] Ensure React Compiler options are based dev vs prod: #84062
- Enable anonymous function naming in React Compiler: #84070
- Revert "[Breaking] Remove deprecated
publicRuntimeConfig
andserverRuntimeConfig
(#83944)": #84167 - Fix double comma in build manifest: #84131
- [turbopack] set app dir only to true when no pages entries detected: #84144
- Split code-frame into separate compiled package: #84174
- refactor: separate forward browser logs utils: #84151
- Upgrade React from
1eca9a27-20250922
toe2332183-20250924
: #84189 - [Cache Components] default to filtering unhandledRejection after abort: #84192
- fix: prevent URL mutation in router rewrites: #83963
- fix(server): fix pages router resume router matching: #84158
- Feat:
get_errors
MCP endpoint: #84161 - Add internal environment variable for enabling React Compiler: #84176
- [devtools] Disable React's default Transition indicator: #84202
- Upgrade React from
e2332183-20250924
tob0c1dc01-20250925
: #84248 - Feat:
get_page_metadata
MCP endpoint: #84211 - feat: capture logs into logging file during development: #84183
- babel-loader: Avoid calling expensive
isReactCompilerRequired
check when we must run Babel anyways: #84103 - [mcp] expose logging: #84226
- Move
config.turbopack.moduleIds
toconfig.experimental.turbopackModuleIds
: #84230 - Show invalid default export errors during prerendering: #84242
- fix: make sure caller exists in babel preset: #84154
- [mcp] allow to enable mcp server through env var: #84278
- fix(metadata): make formatDetection respect true/false properly: #83924
- Upgrade React from
b0c1dc01-20250925
todf38ac9a-20250926
: #84276 - Add a --webpack flag and default --turbopack to true: #84216
- fix: Update URL resolution logic to handle search parameters on root path /?foo=bar: #78262
- [Breaking] Remove deprecated sync access to Dynamic APIs: #84179
- Move
config.turbopack.moduleIds
toconfig.experimental.turbopackModuleIds
: #84230 - Show invalid default export errors during prerendering: #84242
- fix: make sure caller exists in babel preset: #84154
- [mcp] allow to enable mcp server through env var: #84278
- fix(metadata): make formatDetection respect true/false properly: #83924
- Upgrade React from
b0c1dc01-20250925
todf38ac9a-20250926
: #84276 - Add a --webpack flag and default --turbopack to true: #84216
- fix: Update URL resolution logic to handle search parameters on root path /?foo=bar: #78262
- [Breaking] Remove deprecated sync access to Dynamic APIs: #84179
- Turbopack: only write merged manifests when they have been changed: #84261
- Turbopack: add separate turbopackPersistentCachingForBuild/ForDev flags: #84215
- Revert "Add a --webpack flag and default --turbopack to true (#84216)": #84348
- Upgrade React from
df38ac9a-20250926
tod15d7fd7-20250929
: #84347 - Mark React Compiler integration as stable: #84220
- [cna] Add
reactCompiler
option: #82251 - Turbopack: remove canary version check for turbopackPersistentCachingForDev: #84277
- [turbopack] Add support for debug_ids: #84319
- Revert "Revert "Add a --webpack flag and default --turbopack to true (#84216)"": #84351
- [Breaking] Remove AMP codemod: #84356
- [Breaking] Remove deprecated built-in AMP: #84312
- auto-enable clientParamParsing and clientSegmentCache w/ cacheComponents: #84250
- [mcp] get server action tool: #84382
- Revert "Revert "Revert "Add a --webpack flag and default --turbopack to true (#84216)""": #84389
- Update otel test assertions and pages span_name: #84393
- [Breaking] Bump minimum TypeScript version to 5.1.0: #84384
- Upgrade React from
d15d7fd7-20250929
toef889445-20250930
: #84383 - [Breaking] Remove deprecated
unstable_rootParams
: #84373 - [metadata] remove falsy dynamicParams approach: #84405
- fix: next rspack binding NextExternalsPlugin: #84303
- Development: Skip route matching when there is an existing match: #84227
- Revert "auto-enable clientParamParsing and clientSegmentCache w/ cacheComponents": #84419
- Upgrade React from
ef889445-20250930
to548235db-20251001
: #84416 - [Breaking] Update default browserslist config: #84401
- Upgrade React from
548235db-20251001
to1bd1f01f-20251001
: #84417 - Allow
metadataBase
to be a string URL in addition toURL
instance: #84297 - Upgrade React from
1bd1f01f-20251001
to86181134-20251001
: #84427 - [mcp] logging file should be reset for each session: #84425
- Revert "Revert "Revert "Revert "Add a --webpack flag and default --turbopack to true (#84216)"""": #84394
- Optimize isMetadataRoute function: #84409...
v16.0.0-canary.19
Core Changes
- Fix: CSS asset URLs broken with
experimental.inlineCss
: #85140 - Update routes generation for build-complete: #85017
- [cache components] move experimental.cacheHandlers out of experimental: #85157
- Don't assign displayName to the internal Promises: #85178
- Assign name to hydration stream: #85179
- fix: add backwards compat for middleware β proxy field renames: #85183
- [turbopack] Implement improved deobfuscation for free calls and module identifiers.: #85060
- Improve Proxy invalid export error message: #84887
- Fix Activity boundary names: #85185
- [codemod] Install ESLint v9 if version under for next-lint-to-eslint-cli: #85182
- [upgrade] Version gate adding
--turbopack
flag: #85180 - Tweaks to blocking route error message: #85191
- Remove layout-router sticky/fixed debug warning: #85193
- [cache components] persist cache bypass UI until it's disabled: #85190
- Only allow node runtime in proxy: #85139
- logger: skip logging full element: #85194
Misc Changes
- Docs: Explain Sass tilde import difference: #85041
- Turbopack: don't fail on export type in use server: #85054
- Turbopack: speedup module merging: #85043
- docs: remove experimental_ppr route segment config: #85188
- Rename "blocking route" error docs page: #85189
- docs: upgrade from 15 to 16: #85176
Credits
Huge thanks to @timneutkens, @gaojude, @ijjk, @ztanner, @sebmarkbage, @mischnic, @icyJoseph, @acdlite, @serhalp, @lukesandberg, @devjiwonchoi, and @huozhi for helping!
v16.0.0-canary.18
Core Changes
- Fix: CSS asset URLs broken with
experimental.inlineCss
: #85140 - Update routes generation for build-complete: #85017
- [cache components] move experimental.cacheHandlers out of experimental: #85157
- Don't assign displayName to the internal Promises: #85178
- Assign name to hydration stream: #85179
- fix: add backwards compat for middleware β proxy field renames: #85183
- [turbopack] Implement improved deobfuscation for free calls and module identifiers.: #85060
- Improve Proxy invalid export error message: #84887
- Fix Activity boundary names: #85185
- [codemod] Install ESLint v9 if version under for next-lint-to-eslint-cli: #85182
- [upgrade] Version gate adding
--turbopack
flag: #85180 - Tweaks to blocking route error message: #85191
- Remove layout-router sticky/fixed debug warning: #85193
- [cache components] persist cache bypass UI until it's disabled: #85190
- Only allow node runtime in proxy: #85139
- logger: skip logging full element: #85194
Misc Changes
- Docs: Explain Sass tilde import difference: #85041
- Turbopack: don't fail on export type in use server: #85054
- Turbopack: speedup module merging: #85043
- docs: remove experimental_ppr route segment config: #85188
- Rename "blocking route" error docs page: #85189
- docs: upgrade from 15 to 16: #85176
Credits
Huge thanks to @timneutkens, @gaojude, @ijjk, @ztanner, @sebmarkbage, @mischnic, @icyJoseph, @acdlite, @serhalp, @lukesandberg, @devjiwonchoi, and @huozhi for helping!
v16.0.0-canary.17
Core Changes
- Fix subtree layout alignment for route summary in
next build
: #85137 - [codemod] Remove runtime config when running
middleware-to-proxy
: #85075 - [turbopack] Improve the multiple bundler flags messge to note that perhaps your
package.json
is the problem: #85118 - Add Learn more docs to Middleware deprecation warning: #84711
- [BF Cache]: skip lazyData fetch logic for inactive segments: #85142
- Pass
startTime
to initial RSC payload stream: #85144 - guard navigation
use
hooks for React 18: #85151 - [turbopack] Don't warn on the lightning css experimental option: #84913
- Turbopack: Remove redundant log line, increase delay for compiling log message: #85133
- Make params and searchParams new Promises: #85158
- Name "cache" streams for React DevTools: #85159
- Use cacheMaxMemorySize config in default cache handler: #85153
- Omit params to from client segments: #84883
- enable experimental.routerBfCache behind cacheComponents: #84923
- [Cache Components] Allow stale longer than expire in cacheLife: #85115
- Update Activity names given to routes: #85155
- use port zero for --inspect when forking, if used by parent: #85128
- Update blocking prerender error message: #85087
Misc Changes
- Turbopack: Disable LightningCSS MediaRangeSyntax feature: #85086
- Don't expliclitly set the
--turbopack
flag in Create Next App, it is no longer necessary: #85117 - [turbopack] Remove the canary icon from the cache components docs: #85149
- Bump swc to v45: #85143
- [test] Fix test-dev with --projects: #85167
- [test] Update snapshots: #85171
- docs: mcp: #85010
Credits
Huge thanks to @eps1lon, @devjiwonchoi, @lukesandberg, @timneutkens, @ztanner, @acdlite, @mischnic, @bgw, @sebmarkbage, @wyattjoh, @gnoff, @huozhi, and @seeplusplus for helping!
v16.0.0-canary.16
Core Changes
- Upgrade React from
58bdc0bb-20251019
tof6a48828-20251019
: #85081 - [devtools]: instrument client navigation hooks for suspense devtools: #85007
- Remove Segment from CacheNodeSeedData: #85080
- label as Prefetch/Prefetchable depending on prefetch config: #85076
- [cache components]: add 'bypass' cache indicator status: #85082
- Upgrade React from
f6a48828-20251019
to2bcbf254-20251020
: #85112 - [cache components]: guard against setCacheStatus since its conditionally defined: #85125
- warn: add deprecation warning of eslint config: #85122
- add new devtools indicator loading state: #85083
- Await initial Flight response before hydrating: #85124
- fix(experimental.lockDistDir): Acquire the lock in dev earlier: #85116
- telemetry: mcp tool call: #85120
- [Turbopack] dedupe build errors: #85062
Misc Changes
- docs: experimentalClientMaxBodySize: #85105
- Docs: Add
--debug-build-paths
next build option: #85097 - Docs: Add note on tag limits for
cacheTag
: #85106 - docs: no switcher for TS only examples: #85109
- fix: Handle non-directory files in cache folder when performing cleanup: #84930
- Turbopack: Suggest using system certs when a TLS error occurs: #85009
- [turbopack] Try to fix v8 crashes on github actions: #85114
- docs: Update to Zod v4 syntax: #84807
- Docs: Add version history for
next lint
deprecation and update error message: #85100 - Turbopack: improve module evaluation name: #84633
- [test] Current behavior of dynamic APIs integration with React DevTools: #85111
- [Cache Components] fix env labels in perf track test: #85132
Credits
Huge thanks to @ztanner, @icyJoseph, @delbaoliveira, @acdlite, @lubieowoce, @bgw, @lukesandberg, @huozhi, @makandrr, @sokra, and @eps1lon for helping!
v16.0.0-canary.15
Core Changes
- Turbopack: Remove unneeded warning for telemetry: #85039
- [cache components] stabilize cacheLife profiles: #85050
- [cache components] show when cache components is enabled in the CLI: #85047
- [cache components]: show cache components enabled in DevTools: #85048
- [Cache Components] correctly label IO promises in devtools: #84928
- Plumbing for cache indicator: #84955
- Upgrade React from
93f85932-20251016
to1324e1bb-20251016
: #84999 - enable mcp server by default: #85058
- Add comment that we expect the function passed to bind to be anonymous: #85070
- Development: Addres comments on request log PR: #84945
- Development: Implement request time for Pages Router: #85012
- [cache components] add cache components indicator to dev start: #85069
- cli: build partial entries --debug-build-paths arg: #85052
- Turbopack: Better error for sassOptions.functions as it's unsupported: #85073
Misc Changes
- add a message about Turbopack tracing: #85044
- Turbopack: Implement next/font/local declarations option: #85051
Credits
Huge thanks to @sokra, @ztanner, @timneutkens, @lubieowoce, @eps1lon, @huozhi, and @sebmarkbage for helping!
v16.0.0-canary.14
Core Changes
- Add Activity name to route layouts and pages: #85011
- Update next-lint-to-eslint-cli to support
FlatCompat.config
: #85026 - [cache components]: move flag out of experimental: #85035
- [Cache Components] When caches are disabled in dev skip the cache warmup: #85014
- [Cache Components] Use canary React when only Cache Components is enabled: #85042
Misc Changes
- Turbopack: make tracing warning not fail build: #85032
- [ci]: increase number of runners for test jobs: #85049
Credits
Huge thanks to @acdlite, @devjiwonchoi, @mischnic, @ztanner, and @gnoff for helping!
v16.0.0-canary.13
v16.0.0-canary.12
Core Changes
- Add rendered search to router state: #84983
- [segment cache]: delay revalidation prefetch pings 300ms: #84981
- Show relative path from cwd for Proxy Middleware file conflict error: #84993
- [Cache Components] fix docs for cacheLife("seconds"): #85004
- Rename MiddlewareMatcher to ProxyMatcher: #85005
- [Breaking] Rename instrumentation onRequestError
context.routeType
frommiddleware
toproxy
: #85006 - [turbopack] Prevent accidental access to
.next
: #84714
Misc Changes
- Turbopack: Track errored tasks as dependency when using untracked(): #84914
Credits
Huge thanks to @sokra, @acdlite, @ztanner, @devjiwonchoi, @lubieowoce, and @lukesandberg for helping!