Skip to content

Releases: vercel/next.js

v16.2.1

20 Mar 23:32

Choose a tag to compare

Note

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

Core Changes

  • docs: post release amends (#91715)
  • docs: fix broken Activity Patterns demo link in preserving UI state guide (#91698)
  • Fix adapter outputs for dynamic metadata routes (#91680)
  • Turbopack: fix webpack loader runner layer (#91727)
  • Fix server actions in standalone mode with cacheComponents (#91711)
  • turbo-persistence: remove Unmergeable mmap advice (#91713)
  • Fix layout segment optimization: move app-page imports to server-utility transition (#91701)
  • Turbopack: lazy require metadata and handle TLA (#91705)
  • [turbopack] Respect {eval:true} in worker_threads constructors (#91666)

Credits

Huge thanks to @icyJoseph, @abhishekmardiya, @ijjk, @mischnic, @unstubbable, @sokra, and @lukesandberg for helping!

v16.2.1-canary.4

20 Mar 23:33

Choose a tag to compare

v16.2.1-canary.4 Pre-release
Pre-release

Core Changes

  • Fix adapter outputs for dynamic metadata routes: #91680

Misc Changes

  • Turbopack: fix webpack loader runner layer: #91727
  • [turbopack] Remove incorrect debug_assert in try_read_task_cell: #91699
  • Add module count field to module graph tracing spans: #91697
  • turbopack-cli: add --persistent-caching flag for filesystem-backed cache: #91657
  • Turbopack: pull in updated vercel/nft tests: #91651
  • Update Rspack development test manifest: #91695
  • [test] Unflake use-node-streams-env-precedence test: #91733
  • Update Rspack production test manifest: #91694
  • [turbopack] Improve regressed build speed on cross-compiled MUSL: #91477

Credits

Huge thanks to @ijjk, @mischnic, @sokra, @vercel-release-bot, @unstubbable, and @mmastrac for helping!

v16.2.1-canary.3

20 Mar 16:50

Choose a tag to compare

v16.2.1-canary.3 Pre-release
Pre-release

Core Changes

  • Fix layout segment optimization: move app-page imports to server-utility transition: #91701
  • Fix server actions in standalone mode with cacheComponents: #91711
  • Turbopack: lazy require metadata and handle TLA: #91705

Misc Changes

  • [turbopack] Optimize compaction cpu usage: #91468
  • [test] Unflake rendering indicator test & skip building indicator tests: #91650
  • [test] Fix edge-async-local-storage deploy test timeout & race condition: #91643
  • docs: fix broken Activity Patterns demo link in preserving UI state guide: #91698
  • turbo-persistence: remove Unmergeable mmap advice: #91713
  • turbopack: move "compact database" tracing span to backend layer: #91693
  • docs: post release amends: #91715

Credits

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

v16.2.1-canary.2

19 Mar 21:40

Choose a tag to compare

v16.2.1-canary.2 Pre-release
Pre-release

Core Changes

  • Turbopack: enable server HMR for app route handlers: #91466
  • Skip loadBindings() Lightning CSS check during next start: #91538
  • refactor: extract build infra and alias changes: #90422
  • feat(node-streams): add config flag, define-env, and env precedence test: #90427
  • Rename /_next/webpack-hmr to /_next/hmr: #91415
  • ci: add node-stream test coverage workflow: #89861
  • Add per-slot error attribution for instant validation using slot markers and config depth preference: #91610
  • Handle encoded params further: #91627
  • Fix missing route in otel spans without base-server: #91665

Misc Changes

  • turbo-tasks-backend: batch find_and_schedule_dirty using for_each_task_meta: #91497
  • Restructure pr-status-triage skill: merge command into skill files: #91514
  • [turbopack] Use bail! instead of panic! for duplicate module ident error: #91636
  • turbo-tasks-backend: batch schedule dirty tasks in aggregation_update: #91461
  • Turbopack: Add importModule() support to webpack loaders: #89630
  • turbo-persistence: fix mmap page alignment and improve error context in MetaFile::open_internal: #91640
  • turbopack-css: demote recoverable CSS parse warnings to Warning severity: #91524
  • [test] Unflake "infinite streaming fetch" test: #91645
  • [test] Unflake deterministic build - changing deployment id test: #91646
  • Skip CI for agent/editor config directory changes: #91622
  • Update Rspack production test manifest: #91635
  • [test] Increase retry timeouts for two flaky app-action tests: #91647
  • Revert "ci: add node-stream test coverage workflow (#89861)"
  • [test] Fix flaky url-hash tests: #91649
  • Add instant validation tests for parallel slot config attribution: #91656
  • [turbopack] Respect {eval:true} in worker_threads constructors: #91666

Credits

Huge thanks to @wbinnssmith, @sokra, @unstubbable, @devjiwonchoi, @timneutkens, @feedthejim, @vercel-release-bot, @gnoff, @ijjk, and @lukesandberg for helping!

v15.5.14

19 Mar 18:17

Choose a tag to compare

Note

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

Core Changes

  • feat(next/image): add lru disk cache and images.maximumDiskCacheSize (#91660)
  • Fix(pages-router): restore Content-Length and ETag for /_next/data/ JSON responses (#90304)

Credits

Huge thanks to @styfle and @lllomh for helping!

v16.2.1-canary.1

18 Mar 23:55

Choose a tag to compare

v16.2.1-canary.1 Pre-release
Pre-release

Core Changes

  • Fix(pages-router): restore Content-Length and ETag for /_next/data/ JSON responses: #90304

Misc Changes

  • Add .claude/skills symlink: #91616
  • Update tokio from 1.43.0 to 1.47.3: #90945

Credits

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

v16.2.1-canary.0

18 Mar 21:59

Choose a tag to compare

v16.2.1-canary.0 Pre-release
Pre-release

Core Changes

  • Update vendored lodash to 4.17.23 to fix CVE-2025-13465: #91558
  • Fix invalid HTML response for route-level RSC requests in deployment adapter: #91541
  • Normalize encoded dynamic placeholders in app routes: #91603

Credits

Huge thanks to @denesbeck, @ztanner, and @ijjk for helping!

v16.2.0

18 Mar 19:27

Choose a tag to compare

Tip

Check out our Next v16.2 Blog Post to learn more about this release.

Core Changes

  • Upgrade React from f93b9fd4-20251217 to 65eec428-20251218: #87323
  • Turbopack: Create junction points instead of symlinks on Windows: #87606
  • Turbopack: Symlink handling follow-up: #87637
  • Add experimental routing package for resolving adapter routes: #86404
  • Ensure outputs are correct with cache components in deployment adapters: #87018
  • Move off of deprecated url.parse: #87257
  • [strict-route-types] Add experimental.strictRouteTypes config: #87378
  • misc: fix type check log for CI envs: #87838
  • fix: revalidateTag with profile should not trigger client cache invalidation: #88069
  • chore: warn when running tests against stale build: #88001
  • Redesign default error pages with cleaner, more user-friendly UI: #87988
  • dx: avoid next-env.d.ts change in dev: #88103
  • prevent browser cache from using stale RSC responses from previous builds: #86554
  • [strict-route-types] Typecheck App Router page props: #87386
  • [strict-route-types] Enforce common React Component return types in App Router: #87389
  • [strict-route-types] Switch to satisfies when validating page and route modules: #87398
  • [strict-route-types] Don't reject number in config.api.bodyParser.sizeLimit when validating route: #87633
  • Revert "dx: avoid next-env.d.ts change in dev": #88153
  • [strict-route-types] Typecheck pages router routes in absence of App Router: #87628
  • [strict-route-types] Ensure cache profiles and routes are type-checked even if .next is excluded: #87768
  • add compilation error for taint when not enabled: #88173
  • feat(next/image)!: add images.maximumResponseBody config: #88183
  • Add maximum size limit for postponed body parsing: #88175
  • metadata: use fixed segment in dynamic routes with static metadata files: #88113
  • feat: add --experimental-cpu-prof flag for dev, build, and start: #87946
  • Add experimental option to use no-cache instead of no-store in dev: #88182
  • fix overlay frames cannot be opened sometimes: #88210
  • Handle pnpm-workspace.yaml while searching for monorepo root: #74818
  • Add more debug logs to 'use cache' wrapper: #88219
  • Omit unused arguments from 'use cache' function calls: #86920
  • Only log pending revalidates... debug log if applicable: #88221
  • fix(next/image): bump sharp@0.34.5: #88238
  • Disallow javascript urls in router methods and redirects: #88185
  • Fix relative same host redirects in node middleware: #88253
  • Remove loadConfig from main development process, pass value from child process: #88230
  • Update deploy adapters outputs and handler interfaces for node and edge: #88247
  • Move Ready in time before handler initialization: #88235
  • next/image: support custom cache handlers: #88248
  • feat: add Claude Code plugin marketplace with Cache Components skill: #87993
  • refactor: consolidate PPR into cacheComponents architecture: #88243
  • Turbopack: include fewer traced files for standalone: #88322
  • feat(turbopack): add resolve plugin condition variant of Always and Never: #88190
  • perf: use length = 0 to clear the logging array: #88244
  • Time logs: Show full millisecond instead of 1 decimal: #88313
  • [turbopack] Enable inferring module side effects by default: #87216
  • Track search string as part of "refresh state": #87203
  • Pass RouteTree into navigation function: #87256
  • Read from segment cache unknown routes: #87293
  • Pass loading boundary as part of RSC data: #87825
  • Revert "refactor: consolidate PPR into cacheComponents architecture (#88243)": #88421
  • fix: support TypeScript noUncheckedSideEffectImports for CSS imports: #88199
  • Don't import typescript at runtime: #88321
  • fix: use RDC for server action requests: #88129
  • Warn when overriding Cache-Control header on /_next/ routes: #88353
  • [prebuilt-skew-protection] feat: adding in automatic deploymentId: #88012
  • Revert "[prebuilt-skew-protection] feat: adding in automatic deploymentId": #88449
  • Turbopack: Update reqwest, remove experimental system TLS feature: #88290
  • Revert "prevent browser cache from using stale RSC responses from pre…: #88457
  • Turbopack: retain loader tree order for metadata: #88487
  • Turbopack: more dead code: #88505
  • fix(build): prevent route handler manifests from inheriting unrelated client components: #88419
  • Upgrade React from 65eec428-20251218 to 3e1abcc8-20260113: #88530
  • Better typesafety for interopDefault: #88486
  • keep next-env.d.s unchanged between dev and build: #88428
  • Remove sibling caches from CacheNode tree: #87991
  • Upgrade React from 3e1abcc8-20260113 to 4a3d993e-20260114: #88547
  • Finish deleting Mutable from router implementation: #88046
  • fetch(next/image): reduce maximumResponseBody from 300MB to 50MB: #88588
  • [CC] Fix dev validation error from server action bound args: #88600
  • Fix incorrect 'Ready in' time for next start: #88589
  • feat: server action logging: #88277
  • Log browser error and warnings in terminal: #88352
  • Upgrade React from 4a3d993e-20260114 to bef88f7c-20260116: #88649
  • fix: make RedirectType constant properties literal types: #88653
  • Turbopack: add support for matching loaders on resource queries: #88644
  • fix: capture promisified setImmediate separately: #88346
  • fix: setImmediate[util.promisify.custom] access fails in edge runtime: #88685
  • Fix --debug-build-paths bracket escaping for glob patterns: #88660
  • Add negation pattern support to --debug-build-paths: #88654
  • Only filter next config if experimental flag is enabled: #88733
  • [Devtool Indicator] Fix cross alignment: #88664
  • Turbopack: don't use build id for pages router client-side manifests: #88641
  • Allow inspecting server with next start --inspect: #88744
  • Turbopack: Add --debug-build-paths support to filter routes: #88655
  • Upgrade React from bef88f7c-20260116 to 41b3e9a6-20260119: #88756
  • Use rewritten pathname for implicit cache tags: #88732
  • Upgrade React from 41b3e9a6-20260119 to d2908752-20260119: #88774
  • Add experimental_gesturePush to App Router: #88776
  • Rename rewroteURL to rewrittenPathname in request metadata: #88751
  • Simplify getImplicitTags to accept pathname instead of url object: #88753
  • Add NEXT_DEPLOYMENT_ID global: #86738
  • Turbopack: remove deployment id suffix from client reference manifest chunks: #88741
  • Inject <html data-dpl-id> and don't inline it into JS anymore: #88761
  • [metadata] match the Metadata and ResolvedMetadata type: #88739
  • Reuse bfcache data during Full prefetches: #88606
  • Embed static sibling info in route tree: #88692
  • Fix revalidatePath with params and trailing slash when deployed: #88623
  • fix: preserve cache behavior for PPR fallback shells with root params: #88556
  • Upgrade React from d2908752-20260119 to b546603b-20260121: #88860
  • stabilize browser log forward options: #88857
  • [devtools] Wrap long file names of stack frames in the error overlay: #88886
  • [devtools] Fix notch coloring of error overlay in forced colors mode: #88892
  • Remove deploymentId from App Router RenderOptsPartial: #88866
  • feat: implement LRU cache with invocation ID scoping for minimal mode response cache: #88509
  • [prebuilt-skew-protection] feat: adding in automatic deploymentId: #88496
  • [devtool] Add hydration diff indicator for diff lines: #88919
  • Revert "[prebuilt-skew-protection] feat: adding in automatic deploymentId": #88942
  • [turbopack] add task type infromation to the print_cache_item_size feature: #88925
  • Upgrade React from b546603b-20260121 to 24d8716e-20260123: #88963
  • Turbopack: add ?dpl= to all asset urls returned by Turbopack: #88828
  • feat(next-codemod): add agents-md command for AI coding agents: #88961
  • Update font data: #88975
  • Improve agents-md prompt to force doc retrieval: #88997
  • [Reapply] Add useEffectEvent to disallowed React APIs in Server Components: #88985
  • Apply fixes for onBuildComplete and route module: #88831
  • Rename renderOpts.nextExport to isBuildTimePrerendering: #88951
  • docs: fix typos in README.mds: #89022
  • refactor: consume global-error from loader tree: #88437
  • Fix chunk loading when using __turbopack_load_by_url__ with query: #88899
  • [mcp] change the mcp endpoint response to JSON: #88911
  • Reapply "[turbopack] Add bundling support for worker_threads" (#88725): #88967
  • fix: ensure LRU cache items have minimum size of 1 to prevent unbounded growth: #89040
  • Upgrade React from 24d8716e-20260123 to 8c34556c-20260126: #89066
  • Use null-prototype objects in server actions manifests: #89069
  • Re-enable types-and-precompiled: #89070
  • Apply segment changes to adapters outputs: #89072
  • Improve no response route handler error: #89036
  • Limit number of server action arguments to 1000: #89068
  • [prebuilt-skew-protection] feat: adding in automatic deploymentId: #88958
  • Decouple route stale time from segment-level data: #88834
  • Decouple route and segment cache lifecycles: #88989
  • [ci] Silence baseline-browser-mapping warnings: #89175
  • [Cache Components] Prevent streaming fetch calls from hanging in dev: #89171
  • React types update: #89110
  • [nextjs] feat: removing length requirement: #89173
  • add GPTBot to matcher for known bots: #89188
  • Ensure .md licenses are included in vendored packages: #89201
  • Switch development log item format as JSON: #89168
  • IsolatedDevBuild flag removal: #89167
  • fix: coerce HEAD to GET for internal images: #84180
  • Upgrade React from 10680271-20260126 to 230772f9-20260128: #89250
  • Upgrade tar used to extract SWC binary : #89158
  • Sort prerender manifest routes: #89246
  • Track vary params for segments without server-side param access: #88998
  • Optimistic routing: client-side route prediction: #88965
  • Keep pages/404.js to be able to dynamically render it anyway: #89263
  • fix: fully static pages should e...
Read more

v16.2.0-canary.104

18 Mar 13:38

Choose a tag to compare

v16.2.0-canary.104 Pre-release
Pre-release

Core Changes

  • Turbopack: Merge release-with-assertions-no-lto profile into release-with-assertions: #91530
  • improve allowedDevOrigins error: #91521
  • Add group depth tracking to instant validation boundary discovery: #91208

Misc Changes

  • [turbopack] Share scratch buffer across shards using thread local: #90167
  • Turbopack: Use debug = "line-tables-only" for dev builds: #91539
  • SRI turbopack documentation: #90477

Credits

Huge thanks to @lukesandberg, @bgw, @ztanner, @gnoff, and @richardjzhang for helping!

v16.2.0-canary.103

18 Mar 07:01

Choose a tag to compare

v16.2.0-canary.103 Pre-release
Pre-release

Core Changes

  • Error when accessing undefined root params in generateStaticParams: #91519
  • Buffer prefetch response before passing to Flight client: #91487
  • [Segment Cache] Always upsert on prefetch completion: #91488
  • Track vary params during runtime prefetches: #89297
  • [react-sync] Allow locking in manual sync: #91509
  • Remove devCacheControlNoCache experimental option (hard-code no-cache): #91503
  • fix allowedDevOrigins for no-cors requests: #91506
  • Remove webpack stats generation from Turbopack: #91515
  • Upgrade React from c80a0750-20260312 to 3f0b9e61-20260317: #91522
  • Move adapterPath from experimental to stable top-level config: #91535
  • block disallowed dev origins by default: #91507

Misc Changes

  • perf(turbopack-node): zero-copy Buffer transfer from node to rust: #91376
  • docs(turbopack-core): Copy "layers" documentation from mdbook to rustdoc: #91350
  • Turbopack: correctly apply effects for issue snapshots: #91511
  • Turbopack: treat unknown CSS selectors as warnings: #91513
  • docs(turbopack): Migrate chunking docs from mdbook, with proof-reading and minor updates from claude: #91472
  • Skip catch-error-react-compiler test to unblock CI: #91528
  • [turbopack] update qfilter to 0.3.0-alpha: #91467
  • Unflake two "use cache" tests: #91529
  • docs(turbopack): Remove old architecture.md file from turbopack crate: #91473

Credits

Huge thanks to @xusd320, @bgw, @mischnic, @unstubbable, @acdlite, @eps1lon, @devjiwonchoi, @lukesandberg, @sokra, @ztanner, and @timneutkens for helping!