Releases: vercel/next.js
Release list
v16.3.0-canary.104
Misc Changes
- [turbopack] Respect
sideEffectsin apackage.jsonfile withoptimizePackageImports: #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-20260729to0f42eac2-20260730: #96402 - fix: respect
htmlLimitedBotsin 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-20260729to6cb4322d-20260729: #96389 - Fix empty Fragment scroll ownership: #96342
- Skip reader task locking for immutable Turbo Tasks reads: #96179
- Upgrade React from
96fcba90-20260728to1724e9ce-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!
v16.3.0-canary.103
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
partialPrefetchingfornext 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!
v16.3.0-preview.10
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-20260723to756fdd47-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-proxywithhttpxy: #96060 - Update vendored
@mswjs/interceptorsto 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-tracetest suite: #96175 - [refactor] Prepare dev validation for running on a worker thread: #96151
- Add the
experimental.devValidationWorkerconfig 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_usageinside ofcompute_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-20260722to28cd4bb0-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!
v16.3.0-canary.99
Initial release
v16.3.0-canary.102
Misc Changes
- Revert "Revert "[turbopack] Track re-exports in
import_usageinside ofcompute_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!
v16.3.0-canary.101
Misc Changes
- Turbopack server hmr: avoid complete
clearon 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!
v16.3.0-canary.100
Misc Changes
- Improve root detection to handle worktrees, more workspaces & stray lockfiles: #96159
- Revert "[turbopack] Track re-exports in
import_usageinside ofcompute_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-20260727to96fcba90-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!
v16.3.0-canary.97
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-tracetest suite: #96175 - [refactor] Prepare dev validation for running on a worker thread: #96151
- Add the
experimental.devValidationWorkerconfig 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!
v16.2.12
What's Changed
- Backport/docs fixes 16.2 - July round by @icyJoseph in #96031
- [Backport] Fixes to support TypeScript 7 by @lukesandberg in #95831
Full Changelog: v16.2.11...v16.2.12
v15.5.22
What's Changed
- [15.5] Reject TypeScript >= 7.0 with an actionable error by @lukesandberg in #96110
Full Changelog: v15.5.21...v15.5.22