Next.js 16.4.0

Next.js is a React-based framework that enables developers to build fast, SEO-friendly web applications. It extends React by adding powerful features like server-side rendering, static site generation, API routes, and optimized performance.

It is widely used for:

  • Marketing websites

  • SaaS applications

  • E-commerce platforms

  • Full-stack web apps

Next.js 16.4.0 Release Notes

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 false values for resolveAlias config: #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 exports after a module.exports = {} writes: #96380
  • [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
  • 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-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
  • 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
  • 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/packages and relocate devlow to packages/: #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 & 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
  • 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 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
  • [turbopack] Treat constants with values referencing other values as unsafe: #96190
  • [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
  • 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 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
  • [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-dev tests: #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 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
  • Allow running ncc before pnpm 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-20260805 to 22e4f993-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 satori and @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-20260811 to eb8feb71-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 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
  • 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-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
  • 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.glob values 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-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
  • 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.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
  • 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
  • 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
  • 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
  • [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-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
  • 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
  • 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-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
  • 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
  • Turn on the adapter route collapses by default: #98218
  • fix: suppress missing package manager errors in next info: #97946
  • 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
  • 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_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
  • 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 peerDependencies in 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-20260902 to 6c0e1047-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_to for 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 /-rooted import.meta.glob patterns: #96557
  • Durable use cache: optimize env var existence checks: #98504
  • Adds this.mode for webpack loaders: #98532
  • Upgrade React from 6c0e1047-20260908 to 019019be-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-middleware deploy 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 dev wait 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 __appRouter prefetch marker as route info on shallow navigation: #98187
  • Pages Router: key the client router filter prefetch marker by the as path: #98182
  • docs: add an intro paragraph to the glossary: #98654
  • Fix App Router locale path matching with Pages i18n: #98095
  • Upgrade React from 019019be-20260911 to ff8f88fc-20260915: #98693
  • Store code generation AST paths in a shared trie: #98581
  • Turbopack: Remove wasmer from lockfile by deleting dead feature option from our wasm crate: #98761
  • Prefer using join over try_join when you don't want a vec: #98547
  • Preserve committed app route response status during fallback: #98649
  • docs: scope React cache() guidance to the render pass: #98741
  • fix(next-custom-transforms): never place generated imports before directives: #98717
  • Pin tasks during construction: #98688
  • fix(use-cache): track root params read in "use cache" as vary params: #98674
  • [test] Fix Webpack deployment failures in PostCSS tests: #98710
  • Revert "Fix App Router locale path matching with Pages i18n": #98715
  • Nudge the agents for future defaults adoption: #98721
  • Add future defaults upgrade coverage for next upgrade --ai: #98643
  • Nudge the agents for latest version upgrade: #98640
  • Add "latest" upgrade coverage for next upgrade --ai: #98633
  • Nudge the agents for security vulnerable version upgrade: #98637
  • Add next upgrade --ai and security vulnerability coverage: #98562
  • agents: Add a --comments-only flag to pr-status script, trim down context bloat in AGENTS.md: #98781
  • Keep guards across restore owner handoff: #98700
  • [turbopack] Track webpack loader build dependency files: #98777
  • Replace lzzzz with lz4_flex: #98799
  • Bump to swc v79: #98809
  • [PPF] Fix unnecessary runtime prefetch with prefetch={true}: #98651
  • Keep metadata rendering stable across streaming modes: #97440
  • [test] Expand root-param navigation regression coverage: #98731
  • docs: rewrite the bots and crawlers section in the caching guide: #98782
  • Fix isStableBuild() treating commit preview tarballs as stable: #98811
  • perf(turbo-persistence): shard meta files by family: #97703
  • turbo-persistence: assorted read-path cleanups: #97797
  • turbo-persistence: give key block searches a dense region of their own: #97705
  • Introduce config options for Turbopack GC: #98378
  • Persist resurrected tasks as new tasks: #98729
  • Rspack: Remove bincode dependency from rspack by way of turbo-unix-path: #98855
  • Pin tasks across restore waiter handoff: #98728
  • test: honor skipStart for Vercel deployments: #98776
  • Use internal prefix for Turbopack shutdown env: #98747
  • test: retry waiting for ISR fallback in prefetch-static-shell: #98884
  • Fix generated Turbopack GC option docs: #98888
  • Add agent feedback behavior evals: #98887
  • Add experimental agent feedback workflow: #98582
  • Clean up unnecessary output asset creation: #98834
  • Properly disable laziness on next/dynamic: #98828
  • Set experimental.agenticAutoUpgrade after successful upgrade: #98871
  • example(cache-handler-redis): fix connection leak, hangs on a down Redis, and cross-page tag invalidation: #98716
  • Do not check Node version while agentic upgrade: #98852
  • test: run cargo unit tests with miri as well: #97535
  • test: unflake instant-validation: #98854
  • Preserve closed-parameter restrictions in client route prediction: #98889
  • [test] Fix deployment tests that relied on implicit startup: #98935
  • Turbopack: Add support for specifying additional roots: #98003
  • Turbopack: Add symlinks and additional roots to NFT metadata: #98469
  • Enable AI upgrade for canary: #99001
  • fix(turbo-persistence): preserve write errors on writer drop: #98840
  • Skip slow valued tombstone test under Miri: #98992
  • Improve the agent feedback review flow: #98937
  • Run AI upgrades with the latest official canary: #98870
  • test: move whole development-only suites out of e2e: #98842
  • Fix instant-false codemod to run on route segment filenames: #98880
  • test: migrate legacy deployment exclusion callers: #98473
  • Split revalidation errors by execution context: #98993
  • Enable strict route matching by default: #97397
  • Surface agent feedback gate connection failures: #98991
  • Generalize the build-time generator work-unit store name: #98891
  • Use structural React keys during server rendering: #98944
  • Upgrade React from ff8f88fc-20260915 to 59aff3e1-20260918: #98897
  • Remove unused hasWarnings and warnings: #96956
  • [PPF] Scaffold unstable_ensureStatic segment config: #98190
  • [agent-feedback] Respect CI and telemetry opt-out: #99062
  • Fix prefetch loop when a predicted route redirects: #98998
  • Fix dev overlay header layout on small screens: #99049
  • [PPF] Separate tracking of runtime data accesses for shells and prefetches: #98129
  • Harden next/og SVG serialization: #99061
  • test: clarify dev-only intent of duplicate Sass warning test: #98917
  • test: enable upward distDir deployment coverage: #98886
  • test: remove redundant deployment skips from mode-guarded suites: #98908
  • Turbopack: trace static project files referenced by packages: #98712
  • Durable use cache: fix next/image pulling in NEXT_DEPLOYMENT_ID: #98739
  • Unify hydration error tree details: #99008
  • Turbopack: forward module graph, entrypoint write, and emit spans to the JS trace: #98408
  • Fix startTime and shutdown delivery of forwarded Turbopack trace spans: #98426
  • Turbopack: loader change invalidation: #95732
  • perf: optimize CSS graph cycle removal: #98860
  • Use AGENTS.md for managed agent instructions: #99043
  • Turbopack: analyze mode tracing imports only: #98825
  • Turbopack: compact re-export registration: #98617
  • test: Add test for ESM and CJS exports of next/* APIs: #98882
  • Keep cached root parameters out of generic fallback shells: #98950
  • Fix missing content in Cached Navigations: #98767
  • [turbopack] Track members across namespace re-exports: #96396
  • [PPF] Implement unstable_ensureStatic = "shell" | "prefetch": #98191
  • [PPF] Validate unstable_ensureStatic nesting: #98357
  • Replace lerna task-runner usage with pnpm: #99040
  • [cd] Fix release branch gate and drop dead lerna publish config: #99039
  • Turbopack: fix "ModuleId not found for ident" regression: #99090
  • Fix private-cache segment reuse across root params: #98810
  • Turbopack: fix Unknown module type error for imports in webpack loaders: #99088
  • Nudge future defaults upgrades for manual next dev|build: #98874
  • Nudge latest version upgrades for manual next dev|build: #98873
  • Nudge security upgrades for manual next dev|build: #98872
  • Upgrade React from 59aff3e1-20260918 to 8b0da1c6-20260922: #99059
  • refactor(turbo-rcstr): drop unsupported 16-byte pointer width: #98355
  • test(turbo-tasks-backend): run the db_versioning tests on wasm: #97901
  • fix(turbo-tasks): let parking_lot block on wasm instead of panicking: #97860
  • test(turbo-tasks): run the wasm tests with a Node wasi host: #97789
  • [cd] Skip the release job when no new commits warrant a release: #98664
  • [test] Add fallback param deployment regression coverage: #98883
  • Turbopack: mangle exports behind an escaping namespace via the facade: #97770
  • test(dev): add dedicated compiler polling coverage: #97673
  • build(turbopack): upgrade notify to 9.0.0-rc.5: #98737
  • test(turbopack): add polling to filesystem watcher fuzzer: #98863
  • test(turbopack): fix filesystem watcher symlink expectations: #98983
  • test(turbopack): fix filesystem watcher read-write tracking: #98982
  • Don't re-request the App Shell to upgrade an ISR fallback: #94808
  • Fix unstable ensure static task annotation: #99075
  • test: update React 18 hydration error snapshots: #99073
  • Remove redundant unsafe_ignore annotations: #98961
  • Remove TraceRawVcs: #98953
  • test(turbopack): remove remaining test unmarks: #98376
  • Add experimental custom webpack support: #98862
  • Default agentic upgrades to a separate worktree: #99111
  • Improve agent upgrade failure message for missing app: #99117
  • Preserve error boundaries in on-demand partial prerenders: #99051
  • Preserve error boundaries during on-demand prerendering: #99037
  • docs: clarify Turbopack ModulePart export examples: #99104
  • Add some more verification and safety rules around custom distDir: #98997
  • Preserve closed-route admission across cache misses: #98964
  • Move suspension into operation guard: #99053
  • [agent-feedback] Shorten managed agent instructions: #99065
  • docs: clarify Cache Components build output: #98274
  • Update Rust namespace re-export snapshots: #99106
  • [ci] Skip preview tarball upload when the artifact is missing: #98713
  • [cd] Retry preview tarball uploads with backoff and richer diagnostics: #99060
  • Promote next analyze command: #99074
  • [ai-upgrade] Remind the agent to report the nudge: #99127
  • Tune Node server chunking for require overhead: #99120
  • Turbopack: fix another "ModuleId not found for ident" regression: #99102
  • test: enable deploy coverage for TypeScript config errors: #98849
  • test: enable deploy coverage for routing build errors: #98848
  • test: enable deploy coverage for cache build errors: #98847
  • Turbopack: chunk each layout segment once in production: #99100
  • bundle-analyzer: exclude traces from output types: #98536
  • turbo-tasks-gc: Defer most aggregation graph management until after GC has settled: #98591
  • Skip ESLint migration when scripts do not use next lint: #99103
  • Turbopack: pass RcStr to AnalyzeIssue: #99166
  • Use graph-backed codegen for client proxies and WASM loaders: #99115
  • [PPF] Instant validation for ensureStatic = "shell" | "prefetch": #98249
  • Fix flaky lazy-dynamic-imports.test: #99057
  • [test] Skip flaky deploy tests: #99156
  • [cd] Tolerate 409 when uploading preview tarballs: #99091
  • [test] Fix new deploy suites: #99162
  • Provide only the relevant context for agent upgrade: #99189
  • Turbopack: Add support for additionalRoots to deployment adapters: #99015
  • Use Sonnet 5 with 1M context for AI upgrade handoff: #99183
  • docs: font per-call preload scope and the declarations font-family override: #99167
  • Revert "Add experimental custom webpack support": #99227
  • test: stabilize lazy dynamic import error overlay: #98730
  • turbo-tasks-gc: tear down reverse edges when collecting a task: #99145
  • Sequence CI for branch-based PR stacks: #99086
  • Prefetch scheduler mirrors the navigation's tree walk: #98975
  • Separate route structure comparison from param comparison: #98974
  • Store the head as its own CacheNode: #98973
  • Record which params a CacheNode's data depends on: #98972
  • Use RouteTree for CacheNode tree: #98971
  • Remove the page/layout distinction from RouteTree: #98970
  • Fix root predicates: #98942
  • [turbopack] only remove followers if they are actually removed as children: #98843
  • turbo-tasks-backend: simplify the collectibility predicate and collect transient tasks: #98615
  • turbo-tasks-gc: Invalidating a deleted task should be a no-op: #98614
  • Avoid decoding prerender matcher parameters twice: #99121
  • Prepare 'use cache' for static root-param tracking: #99239
  • [test] Adjust the prerender-encoding open fallback gate for non-adapter deploys: #99240
  • Turbopack: avoid project-wide traces from package directories: #99238
  • Hoist resolved pathname into app page route match: #99259
  • docs: papercuts in image API reference: #99256
  • test: run the TypeScript version warning suites in deploy: #99195
  • test: drop skipDeployment where another gate already excludes deploy: #99194
  • bundle-analyzer: suspend while loading analyzer data: #98535
  • Fix Server Actions hanging after navigation to PPR pages: #99252
  • Fix blurry bundle analyzer treemap on low-DPI displays: #99197
  • Rename bundle analyzer snapshot naming option: #99251
  • Reduce stacked PR gate polling and use ts-jest: #99215
  • Name the internal trace server process: #99257
  • test: enable deploy coverage for asset and compiler errors: #98850
  • test: consolidate duplicate mode branches in build error tests: #99135
  • test: snapshot the proxy-runtime build error output: #99136
  • Avoid obsolete pnpm overrides in pack-next: #99199
  • bundle-analyzer: move comparison state into URL: #98530
  • simplify Transition by removing dead members: #94467
  • fix: respect metadata streaming policy in Edge SSR: #99128
  • Avoid facade splits solely for export mangling: #99285
  • test: forward __NEXT_PARTIAL_PREFETCHING to test-deploy: #99275
  • Turbopack: Allow webpack loaders to cross filesystem roots when reading dependencies: #99202
  • Explain prerelease security upgrade limits: #99230
  • Support latest agentic upgrades on prerelease channels: #99223
  • Allow agentic upgrades without Git: #99217
  • Show security upgrade insights in DevTools: #99002
  • Use focused npm advisories and nudge only for ready upgrades: #99222
  • [test] Stabilize middleware revalidation test: #99378
  • test: scope loader build dependency update to Turbopack: #99380
  • Remove CLAUDE.md symlinks in favor of AGENTS.md: #98910
  • Align ExecuteContext task accessor names: #99258
  • [test] Stabilize responsive dev overlay header layout test: #99376
  • Turbopack: skip trimmed side-effect imports in SideEffectsModule: #95781
  • Turbopack: preserve import with clauses when direct-binding: #95529
  • Turbopack: fix split_module correctness for app-router: #95522
  • Turbopack: fix empty tree-shake chunks desyncing part ids (#93424): #95516
  • Fix custom cache handlers missing on initial requests: #99372
  • Allow Draft Mode on unlisted closed routes in adapter deployments: #99370
  • Fix bundle analyzer source table delta sorting: #99369
  • test: fix stale snapshots after unstable_{prefetch,navigation} rename: #99371
  • Virtualize bundle analyzer source table: #98539
  • [PPF] Remove leftover debug log in router: #99365
  • Remove unstable_ prefix from navigation() and prefetch(): #99241
  • Lazy dynamic imports for ssr: #98836
  • Refine the Security Insight upgrade prompt: #99354
  • [PPF] ensureStatic = "navigation": #99171
  • docs: use prefetch={true} for links to ISR pages with Cache Components: #99261
  • Add agent feedback to create-next-app defaults: #99119
  • Make next-dev-loop browser headless by default: #98318
  • [test] Extend timeout for tests barely below it: #99305
  • docs: typo fixes: #99350
  • [ai-upgrade] ESC to move back during prompt: #99319
  • [ai-upgrade] Ask user to choose permission: #99291
  • [ai-upgrade] Ask user to choose model and effort: #99235
  • [ai-upgrade] Ask user whether to start upgrade in worktree: #99232
  • [create-next-app] Enable Cache Components by default in create-next-app: #99436
  • Include async module evaluation in client loading metrics: #99427
  • turbo-tasks-backend: fix leaf distance tracing compilation: #99443
  • Enable proxy export tests in deploy mode: #99400
  • docs: record API stabilization across Next.js 16 releases: #99420
  • test: migrate and explain custom server deploy exclusions: #98994
  • test: migrate and explain root-inference deploy exclusions: #99012
  • Enable build diagnostic suites in deploy mode: #99402
  • test(turbopack): remove filesystem fuzzer unit tests: #99089
  • [turbopack] Support webpack loader build dependency requests: #99071
  • [turbopack] Track webpack loader build dependency directories: #98838
  • [ci] Wire preview builds variables consistently: #99323
  • [ci] Enable PR comment in any repo: #99315
  • Fix bundle analyzer route selector: #98702
  • bundle-analyzer: use Rust React compiler: #98695
  • Link bundle analyzer empty states to source mode: #98542
  • Consolidate HTML render completion cleanup: #99426
  • Scope client component loading metrics to HTML renders: #99322
  • fix: preserve HTTP status codes during prerendering: #99078
  • test: enable deploy coverage for five verified suites: #99193
  • Document agent feedback field limits: #99415
  • test: migrate tooling deploy exclusions to force gates: #98156
  • Turbopack: Don't force non-recursive watcher for additional roots: #99396
  • turbo-persistence: intermediate merges take the newest files of similar size: #99433
  • turbo-persistence: space-amplification driven compaction with adaptive hash shards: #99268
  • test: enable basePath redirect deployment coverage: #99401
  • fix(incremental-cache): keep an ISR entry's cache lifetime across instances and restarts: #99289
  • Avoid mutating image qualities during validation: #99476
  • Remove the Cache Components deployment-test alias: #99446
  • Finalize the App Router dev indicator on output completion: #99384
  • [test] Cover external next/image in adapter deployments: #99466
  • Prepare image options without mutating configuration: #99394
  • [PPF] Use RDC in runtime prerenders: #98025
  • [PPF] Use RDC in cachedNavigations codepaths: #98005
  • test: add PPF coverage to use-cache and RDC tests: #99417
  • Restore static metadata prerendering for dynamic routes: #99463
  • Exclude metadata files from route handler type validation: #99377
  • Remove true from agentUpgrade option: #99461
  • fix: revalidateTag not reaching custom cache handlers when profiles differ : #99359
  • Enable agent upgrade reminders by default: #99311
  • Enable deploy tests for reusable fixture variants: #99404
  • test: enable compatible body-size cases in deploy: #98911
  • test: retain deploy exclusions for local process control: #99392
  • Enable nullish config tests in deploy mode: #99397
  • Always use generateBuildId if set explicitly: #99147
  • Set tracer library version: #98262
  • fix: propagate repeated tag revalidation from after(): #99499
  • Stabilize ensureStatic: #99513
  • Turbopack: Enable experimental.turbopackSharedRuntime by default: #99504
  • Measure AI upgrade nudges, handoffs, and completion: #99465
  • turbo-persistence: 32 bit fingerprints for the used keys AMQFs: #99333
  • Remove suspend during operations: #99383
  • test: migrate runtime deploy exclusions to force gates: #98159
  • test: migrate asset deploy exclusions to force gates: #98158
  • test: migrate Pages Router deploy exclusions to force gates: #98157
  • fix: stale usages of unstable_ensureStatic: #99540
  • Add unstable parameter matching APIs: #97393
  • docs: point next package security disclosure to HackerOne: #99459
  • docs: add ensureStatic reference and validation guidance: #99355
  • Enable Turbopack export name mangling by default for builds: #99362
  • Allow skipping React and ESLint upgrades: #99468
  • Prefer the declared package manager during upgrades: #99471
  • Use Next.js conventions in bundle analyzer UI: #98780
  • Pass App Page HMR state through a dev render context: #99487
  • Remove request forwarding from App Router error reporting: #99488
  • docs: self hosting immutable static assets: #97008
  • test: enable deployment fixtures with Corepack and portable tarballs: #99192
  • Resolve React dependency warnings from the target app: #99536
  • Move upgrade workflows out of public docs: #99546
  • Use Agent terminology throughout upgrades: #99545
  • Turbopack: Commit updated generated-native file: #99561
  • test: enable Relay multi-project deployment coverage: #99403
  • test: migrate independent App Router deploy exclusions to force gates: #99431
  • test: migrate mode-specific deploy exclusions to force gates: #98160
  • Optimize esm exports by shifting the protocol burden to getters: #98932
  • fix: fix pnpm builds in Docker examples: #97352
  • Assert transient task references are not serialized: #99300
  • Reorganize bundle analyzer toolbar: #98920
  • Show async module scope in bundle analyzer: #98918
  • Show bundle changes in compare treemap: #98837
  • improve disk read semantics around MustExist and AllowMissing: #99249
  • Allow opt-in facade-backed export mangling: #99309
  • Add bundle analyzer route summary: #98787
  • [turbo-tasks-backend] Correctly maintain outdated_collectibles to prevent unnecessary stale executions: #99386
  • Upgrade React from 8b0da1c6-20260922 to 278794d7-20261002: #99600
  • Warn when Partial Prefetching is not configured: #99452
  • Store the Turbopack module cache in a Map: #98947
  • Improve agent feedback reporting reliability: #99591
  • Enable empty generateStaticParams deploy diagnostics: #99406
  • test: enable Nx deployment coverage: #99407
  • test: enable deployment coverage for monorepo fixtures: #99395
  • test: capture deployment experimental flags in config: #99534
  • test: extract a shared helper for deployment feature flags: #99533
  • Move App Page header parsing to handler entrypoints: #99506
  • docs: clarify ensureStatic levels from dogfooding: #99590
  • Gate param-matching deploy tests on the adapter: #99582
  • docs: update the MCP guide for next-devtools-mcp 0.4: #99583
  • Document agent upgrades across Next.js: #99293
  • [test] Fix the legacy image preload order assertion for React 18: #99572
  • docs: Remove task decomposition and validation boilerplate from AGENTS.md: #99558
  • Turbopack: Use a FrozenMap for DiskFileSystemMap: #99569
  • [test] Expose first-run e2e test failures in CI: #99528
  • Turbopack: resolveFileUrl/placeholderFileUrl is always called with a module path: #99560
  • Turbopack: Remove implicit mismatched root fallthrough for AfterResolvePluginCondition, accept None as a root: #99556
  • Turbopack: Allow ResolveMap entries to match against all possible roots: #99555
  • Turbopack: Support import.meta.url in additional roots: #99511
  • Followup from #99249 remove some redundant tests and enable missing assertions all the time: #99605
  • Simplify turbo-tasks-backend guards and execution contexts: #99599
  • Add allocation and memory data to the trace-server MCP protocol: #98546
  • turbo-tasks-backend: check access in track_modification and only track Data on serialization invalidation: #99581
  • Fix CI break caused by #98932: #99621
  • Fix: Unnecessary Suspense fallback triggered by URL update: #99612
  • Don't suspend client params on shallow URL updates: #99611
  • Add React Compiler memoization preservation option: #98589
  • Unify bundle analyzer delta colors: #99607
  • Turbopack: Cache canonicalized paths without turbo-tasks, try to find the longest cached prefix first: #99270
  • Record parameter matching usage in build metadata: #99594
  • Bundle Analyzer Agent Skill: Stream versioned analyzer graph as JSON Lines: #99387
  • Revert "Optimize esm exports by shifting the protocol burden to getters (#98932)": #99704
  • [PPF] Log Sync IO errors in runtime prerenders: #99688
  • docs: clarify use client directive as a file level directive: #99703
  • Stabilize forbidden() and unauthorized(): #99689
  • turbopack-ecmascript-runtime: type-check every runtime file: #99670
  • test: unflake use-cache-search-params: #99691
  • Avoid mutating config for default export paths: #99496
  • Keep compile-mode metadata outside configuration: #99491
  • Keep dynamic asset prefixes outside configuration: #99490
  • eslint-config-next: support ESLint 10: #99628
  • Add Instant Insights for prefetch() and navigation(): #97801
  • rename RenderStage.Runtime to PrefetchRuntime: #99679
  • Collect root param dependencies for 'use cache' at build time: #99274
  • Add client fixes for fully static route errors: #99659
  • docs: clarify hover prefetching with Partial Prefetching: #99665
  • Durable use cache entries: sort env var list: #99657
  • next-swc: rebuild native when embedded js/src files change: #99669
  • Improve static route error guidance: #99724
  • docs: add Turbopack experimental config references: #99723
  • Show choices for agent upgrade prompt: #99727
  • docs: add Keeping pages static guide and align the navigation stage docs: #99493
  • Turbopack: Check the invalidator map before adding a path to a batch: #99711
  • docs: add guide for optimizing the static shell: #97737
  • Keep dev and build running during upgrade prompts: #99702
  • docs: use auth interruption APIs in examples: #99698
  • docs: recommend auth interruption APIs in error handling: #99696
  • [test] Update snapshots: #99713
  • Bundle Analyzer Agent Skill: Trace conditional async and worker chunk loading: #99174
  • Bundle Analyzer Agent Skill: Show route chunk groups: #99170
  • Bundle Analyzer Agent Skill: Show modules in generated JS/CSS files: #99173
  • Bundle Analyzer Agent Skill: Expose more route details in analyze data: #99172
  • turbo-tasks-backend: stop dirtying dependents of GC-collected tasks: #99647
  • turbo-tasks-backend: treat reads and connects of collected tasks as errors: #99646
  • turbo-tasks-backend: stop pinning tasks during restores and always discard missing tasks: #99645
  • Bundle Analyzer Agent Skill: Add analyzer skill: #99169
  • Document next analyze export in the package bundling guide: #99735
  • Revert stabilization of forbidden() and unauthorized(): #99734
  • Preserve configured output directories during static export: #99507
  • Rename skill to next-bundle-optimizer and document its usage: #99731
  • [turbo-tasks-backend] Clean up task state before publishing execution completion: #99729

Credits

Huge thanks to @acdlite, @icyJoseph, @lukesandberg, @sampoder, @ztanner, @vercel-release-bot, @marcoshernanz, @mischnic, @timneutkens, @eps1lon, @gaearon, @aurorascharff, @unstubbable, @lubieowoce, @wbinnssmith, @molebox, @kyamaz99, @sokra, @Janpot, @bgw, @m-kawafuji, @koenpunt, @gnoff, @mayur9210, @Jashnavi25, @jarrensj, @akselipalmer, @DavidIlie, @kelvinampofo, @Stanzilla, @syedsohailhussain1, @gaojude, @hammadxcm, @jimmyhmiller, @lazerg, @styfle, @bryan-ferry, @gdborton, @hardfist, @niketchandivade, @seanbeirnes, @0ldh, @fabian-hiller, @devjiwonchoi, @biubiukam, @fireairforce, @QingHeSite, @marceloboeira, @leejpsd, @hamidrezahanafi, @jgruica, @zeeshan56656, @mlekhi, @dacgray, @Xanaado, @mezotv, @anujbolewar, @spirosikmd, @Amusac, @itsybitsci, @ranger-ross, @bmorros94, @jamiboym, @kostyniuk, @alangenfeld, @aryabyte21, @martinfrancois, @kassens, @orzazade, @Samiislam851, @lukahartwig, @uaoa, @swarnava, and @6iu8a for helping!

Key Features of Next.js

1. Server-Side Rendering and Static Generation

Next.js allows pages to be rendered on the server or generated at build time. This improves performance and search engine visibility compared to traditional client-side apps.

2. App Router and File-Based Routing

Routing is handled automatically based on the file structure. The newer App Router introduces layouts, nested routes, and better data handling.

3. Built-In API Routes

You can create backend endpoints directly inside your project, turning Next.js into a full-stack framework without needing a separate server.

4. Image Optimization

Next.js includes automatic image optimization, resizing, and lazy loading, which significantly improves page speed.

5. Performance Optimization

Features like code splitting, prefetching, and edge rendering help deliver fast loading times and smooth user experiences.

6. Edge and Serverless Support

Next.js works seamlessly with serverless platforms and edge functions, making it ideal for scalable deployments.

Quick start

  1. Create a new Next.js app named my-app

  2. cd my-app and start the dev server.

  3. Visit http://localhost:3000.

#pnpm
pnpm create next-app@latest my-app --yes
cd my-app
pnpm dev

 #npm
npx create-next-app@latest my-app --yes
cd my-app
npm run dev

 #yarn
yarn create next-app@latest my-app --yes
cd my-app
yarn dev

 #bun
bun create next-app@latest my-app --yes
cd my-app
bun dev
  • --yes skips prompts using saved preferences or defaults. The default setup enables TypeScript, Tailwind CSS, ESLint, App Router, and Turbopack, with import alias @/*, and includes AGENTS.md (with a CLAUDE.md that references it) to guide coding agents to write up-to-date Next.js code.

System requirements

Before you begin, make sure your development environment meets the following requirements:

  • Minimum Node.js version: 20.9

  • Operating systems: macOS, Windows (including WSL), and Linux.

Supported browsers

Next.js supports modern browsers with zero configuration.

  • Chrome 111+

  • Edge 111+

  • Firefox 111+

  • Safari 16.4+

Learn more about browser support, including how to configure polyfills and target specific browsers.


Performance and Scalability

Next.js is designed with performance in mind. By combining server-side rendering, static generation, and smart caching, it delivers fast load times even for complex applications.

When deployed on platforms like Vercel, it can scale automatically and leverage global edge networks.


Developer Experience

One of Next.js’s biggest strengths is its developer experience. It offers:

  • Fast refresh during development

  • Clear project structure

  • Strong documentation

  • Large community support

However, beginners may find concepts like server components, routing layers, and rendering strategies slightly challenging at first.


Pros and Cons

Pros

  • Excellent performance and SEO capabilities

  • Full-stack features in a single framework

  • Strong ecosystem and community

  • Flexible rendering options

  • Easy deployment and scalability

Cons

  • Learning curve for beginners

  • Frequent updates can introduce breaking changes

  • Some advanced features require deeper understanding of React


Who Should Use Next.js

Next.js is ideal for:

  • Developers building modern web applications

  • Teams focused on performance and SEO

  • Startups and businesses needing scalable solutions

  • Developers already familiar with React

It may not be necessary for very small projects where a simple static site generator is enough.


Next.js vs Traditional React Apps

While React focuses on building UI components, Next.js provides a complete framework with routing, rendering strategies, and backend capabilities built in.

This reduces the need for additional libraries and simplifies project architecture.


Final Verdict

Next.js is one of the most powerful and versatile frameworks in the modern web development ecosystem. It combines performance, scalability, and developer-friendly features into a single solution.

Next.js is an excellent choice for developers who want to build fast, scalable, and production-ready applications with minimal setup.

If you are building modern web applications and want performance, flexibility, and scalability, Next.js is one of the most popular frameworks available today. Developed by Vercel, Next.js simplifies complex development tasks while delivering production-ready performance out of the box.

Next.js 16.4.0
Free
Software Informations:
Developer:

Operating System:
Framework
Date Added:
2026-10-08T07:04:08.596Z
Categories:

Post a Comment/Report Broken Link: