16.4.0
Check out the 16.4 announcement post to get an overview of the changes.
Core Changes
- Show compiler plugin warning in more situations: #75682
- fix(scripts): correct typo in rm.mjs error message: #87015
- docs: improve clarity and punctuation in README: #86096
- Fix debug build paths Pages Router support entries: #93529
- bundle-analyzer: record historical snapshots on each analyze run: #93520
- fix: detect proxy.ts correctly with compound pageExtensions: #93246
- feat(turbopack): support
falsevalues forresolveAliasconfig: #93331
Misc Changes
- docs: correction to dynamicParams migration: #96624
- docs: proxy event argument: #96435
- docs: remove experimental note from runtime prefetching: #96615
- 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
exportsafter amodule.exports = {}writes: #96380 - [turbopack] Add test for sideEffects with optimizePackageImports: #96549
- [turbopack] Strip leading BOM before parsing CSS: #96678
- Upgrade React from
cbb046ab-20260731to7dfc7ccd-20260803: #96550 - docs: use relative doc links in instant-navigation error pages: #96672
- Turbopack: terminate failed plugin worker threads: #96592
- 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
- [react-sync] Open pull requests as the bot that authors the commits: #96682
- [Bench] Fixes for pure Fizz bench: #96771
- Derive foreground cache revalidation from the consumer: #96731
- 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
- Upgrade React from
7dfc7ccd-20260803to11eddecd-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
- 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
loadManifestto return undefined withhandleMissing: #96530 - 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 - [turbopack] Enable reexport-unknown execution test: #96774
- 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 - Lint devlow-bench with the root eslint config: #96871
- Remove
turbopack/packagesand relocate devlow topackages/: #96860 - 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& expandexperimental.turbopackMinify: #96578 - Add a
turbopackChunkingdocumentation 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
- 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
- [turbopack] Fix a potential deadlock in scope_and_block: #95695
- Remove the turbopack-build-events trace span, use
next buildinstead: #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
- [turbopack] Treat constants with values referencing other values as unsafe: #96190
- [refactor] Rename
encodeCacheTagtoencodeHeaderSafe: #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
- docs: rename repo to repository for consistency: #87849
- 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
ScrollAndMaybeFocusHandlertoScrollHandler: #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
- [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
- 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
- Decouple loader tree construction from children ordering: #97192
- Bump lightningcss: #97159
- Update gh-stack skill guidance: #97163
- [test] Unflake
use-cache-custom-handler-devtests: #97187 - Forward a build-container pin to deploy-test deployments: #97191
- 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
- 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
clustersto chunking heuristics: #95157 - [test] Redirect the deployment host in-process for proxy deploy tests: #97260
- [test] Unflake two
cache-components-dev-streamingassertions: #97246 - [test] Unflake
use-cache-default-profile-expire-zerotests: #97250 - Allow running
nccbeforepnpm build: #97234 - Invalidate deferred Webpack entry sources: #97205
- 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
- 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-20260805to22e4f993-20260811: #97249 - Add RDC compression rollout controls: #97247
- [testmode] Fix infinite recursion in testmode passthrough fetch: #96525
- Turbopack: add imports_wildcard NFT unit test: #97373
- Turbopack: improve chunk_item_content docs: #97370
- 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
satoriand@vercel/og: #97276 - [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
- Upgrade React from
22e4f993-20260811toeb8feb71-20260814: #97382 - 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
- Wait for back-before-hydration recoveries in the browser: #97321
- Extract metadata resolution primitives: #97388
- test: update React 18 redbox snapshot: #97415
- Remove server route matcher stack: #94157
- 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
- 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
- Trace lazy App Route module loading: #97439
- [ci] Wait for the
nextversion 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
- 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
- [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
- Turbopack: More aggressively debounce filesystem watch events if we detected changes to node_modules: #96116
- docs: document metadata pagination field: #95509
- docs: document deploymentId build ID override and Pages Router skew in 16.2: #97645
- Upgrade React from
eb8feb71-20260814toeafeac09-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-modulesuite to local fixture packages: #97542 - [test] Replace the
turbopack-reportssqlite3dependency with a local addon fixture: #97541 - [test] Drop the dead
sqlite3build approval from thesharp-basicsuite: #97540 - Remove HmrTarget: #97253
- Keep HMR instructions typed until serialization: #96569
- Serialize frozen collections by value only: #96686
- 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
- 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.globvalues the ESM namespace: #96559 - introduce an options struct for constructing backend storage: #97284
- [devtools] Fix indicator dragging on touch screens: #97723
- 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
- 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
- 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
- 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-20260819tobd6ea412-20260824: #97812 - fix: reuse a single drain listener when piping Node streams through gzip: #97698
- test: preserve server cache after compile error: #97724
- 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
- 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.browserbehind 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-20260824tof789f203-20260825: #97887 - [test] Fix flaky build CLI output capture: #97900
- turbo-tasks-backend: parent_count reference counting: #95976
- 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-20260825to29d9d318-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
typescriptto@typescript/typescript6: #97942 - 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_freezeworkflow: #97756 - test: re-enable sync IO root coverage: #97996
- [ci] Remove the unused
wrong-issue-templateworkflow 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_nameto return a list: #97984 - docs(examples): document env var handling in the Docker examples: #97968
- Turbopack: unify
memberandinhandling: #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
- [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
- 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-20260826toff7445e6-20260831: #98113 - [ci] Simplify
upload-preview-tarballsworkflow: #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
- turbo-tasks-malloc: report memory from mimalloc: #97761
- Remove Edge runtime handling in use-cache-wrapper: #98139
- Skip discussions in the
issue_lockworkflow: #98146 - [ci] Fix
issue_lock: #97755 - docs: document preloading with Cache Components: #97864
- chore: Remove expired sharp release age exclusions: #98120
- Reduce Turbopack cache size with per-family compression: #97714
- [test] Skip hooks of suites skipped by a lazy
@force-gate: #98169 - Bump swc to v77: #97407
- Upgrade React from
ff7445e6-20260831to21c89c9f-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
- 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-20260901tof4e439e1-20260902: #98188 - Turn on the adapter route collapses by default: #98218
- fix: suppress missing package manager errors in next info: #97946
- Turbopack: fix
sourcefield in CSS sourcemaps: #88225 - fix: track dynamic accesses in final runtime prerenders: #98255
- docs: add API reference pages for skipProxyUrlNormalize and skipTrailingSlashRedirect: #97967
- fix: route info segment overrides not updating in dev overlay: #96968
- 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
- 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_STALEas 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
- 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
- Turbopack: fix require handling with alternative: #98258
- docs: clarify ISR with Suspense params: #98210
- [cd] Update
peerDependenciesin prereleases to accept the current prerelease: #98411 - test: stabilize error recovery snapshot timing: #98414
- example: Use a Redis cacheHandler w/o dependencies: #95346
- Support durable use-cache entries with client components: #98140
- Upgrade React from
f4e439e1-20260902to6c0e1047-20260908: #98363 - fix: preserve repeated --require/--import flags when forking workers: #96651
- ci: check that Turbopack compiles for wasm: #97588
- feat(next-napi-bindings): build Turbopack for wasm: #97586
- Turbopack: fix output tracing include glob traversal: #98382
- test: support deploy exclusions with force gates: #98149
- Fix: Turbopack CSS HMR error when editing an unmounted merged CSS chunk: #94551
- Dev server: More aggresively scold users for deleting .next when we detect it while dev is running: #98253
- turbo-persistence: add TURBO_PERSISTENCE_MMAP=0 to disable mmap: #97873
- Fix dev route discovery startup race: #97920
- Re-enable @vercel/devlow-bench publishing: #98236
- test: migrate caching deploy exclusions to force gates: #98154
- Typecheck the Turbopack ECMAScript runtime in CI: #98422
- Fix initial Turbopack HMR update handling: #98385
- Skip bundler config validation in next/jest and under test: #98392
- Remove
tsec: #98423 - Stabilize scope_unbounded panic test: #98416
- test: restore deployment exclusion for shared Cache Components tests: #98464
- Resolve metadata independently across parallel routes: #97345
- docs: preserve route behavior during Cache Components adoption: #98275
- Add a fast-path to 'get_relative_path_to' for a potential common case when 'from' is empty: #98440
- docs: document React browser API: #97621
- Enable React browser bailout by default: #98439
- [evals] Cover focused Cache Components and Partial Prefetching cases: #97813
- Deflake gc_interrupt_is_self_healing: #98445
- Adds this.target for webpack loaders: #98436
- test(evals): validate delegated error boundary components: #98387
- test: stabilize deferred entries HMR assertions: #98418
- Add in warning for workers around the fsevents bug: #98447
- skill: add Partial Prefetching optimizer: #96471
- bundle-analyzer: add table view to single-build analyzer: #93523
- bundle-analyzer: add table view to compare mode: #93522
- bundle-analyzer: add compare view with treemap diff: #93521
- [testmode] Stop using deprecated
url.parse: #98194 - fix(next/image): don't share the requester's socket with the internal image response: #98168
- Fix duplicate background revalidation for
'use cache': #98446 - Turbopack: Deduplicate project options documentation: #98465
- Report incompatible parallel route slots: #97430
- Require canonical routes for interception routes: #97428
- Error when app pages do not match any route: #97401
- fix(turbopack): add
get_relative_request_tofor paths used as module requests: #98497 - [ci] Cleanup orphaned
next-stats-action: #98348 - [scripts] Move scripts (and benchmarks) off of
node-fetch: #98347 - [test] Move fixtures off
node-fetch: #98346 - [test] Move the harness off
node-fetch: #98195 - fix(turbopack): resolve
../and/-rootedimport.meta.globpatterns: #96557 - Durable use cache: optimize env var existence checks: #98504
- Adds this.mode for webpack loaders: #98532
- Upgrade React from
6c0e1047-20260908to019019be-20260911: #98576 - feat(next/image): Add experimental imgOptMozjpeg config: #98571
- [turbopack] Lazily compile dynamic imports in development (client side): #97203
- fix(devtools): handle pointercancel when dragging the indicator: #98506
- [ci] Show full logs under GitHub Actions debug logging: #98501
- fix(typegen): merge cacheLife types into next/cache instead of shadowing it: #98252
- [test] Fix
proxy-request-with-middlewaredeploy test: #98553 - [ci] Remove the broken Test examples workflow and its test suite: #98517
- Align fallback parameter staging with shell validation: #98512
- Prevent synchronous IO from entering Cached Navigations: #98511
- [ci] Fix scheduled Rspack test job: #98508
- [ci] Remove Turbopack test manifest pipeline: #98507
- test: stabilize OpenTelemetry collector lifecycle: #98427
- Make TurbopackResult payloads disjoint: #98575
- Durable use cache: fix runtime env var mutation: #98558
- refactor(turbopack): drop the generic on
new_atom, and stop it copying an owned string: #98520 - Serialize turbo-tasks trybuild tests: #98415
- Expose App Router runtime errors over HMR: #98438
- test: avoid OpenTelemetry collector socket reuse: #98632
- fix: Bump vendored @mswjs/interceptors from 0.42.0 to 0.42.5: #98607
- Document codemod errors and intentional migration exceptions: #98565
- Unify TODO markers for codemods and skip adoption-only codemods for upgrade: #98560
- Optimize strict module factory chunks: #98421
- Sort batched chunk items globally by path: #98433
- test(turbopack): strongly read test operations: #98247
- Add
next devwait for Turbopack shutdown: #98646 - docs: document default turbopack.resolveExtensions: #98627
- test: migrate package CSS side-effects coverage: #98635
- Improve tree shaking through Next.js module wrappers: #98638
- Trace export usage through client component proxies: #98621
- fix(turbopack): trace cyclic modules to explicit entries: #98661
- Use default pnpm package import method: #98703
- Fix constant inlining in shorthand properties: #98662
- test(turbopack): add strong read operation roots: #98248
- Use pnpm for isolated test installs: #98425
- [turbopack] Forward usage information across re-exports: #96282
- [turbopack] Use options object for ESM references: #98680
- test: enable verified runtime deploy tests: #98457
- test: enable verified assets deploy tests: #98527
- test: enable verified pages-router deploy tests: #98526
- test: enable verified tooling deploy tests: #98525
- test: enable verified app-router deploy tests: #98524
- test: enable verified caching deploy tests: #98523
- Fix unexpected query parameters in adapter deployments: #98584
- Keep never-prerenderable params out of self-hosted shells: #98612
- Fix addMissingDependency: #98588
- docs: clarify metadata support in root not-found: #98670
- Pages Router: do not return the
__appRouterprefetch marker as route info on shallow navigation: #98187 - Pages Router: key the client router
These notes run past the length kept in the archive. The rest is on the publisher’s page.