Next.js Release Notes

Last updated: Oct 12, 2025

Stay up to date on Next.js releases

Join Releasebot and subscribe to release note updates from hundreds of products.

  • Sep 21, 2025
    • Parsed from source:
      Sep 21, 2025
    • Detected by Releasebot:
      Oct 12, 2025

    Next.js by Vercel

    v14.2.33

    Note

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

    Core Changes

    • omit searchParam data from FlightRouterState before transport (#80734)

    Credits

    Huge thanks to @ztanner for helping!

    Original source Report a problem
  • Sep 21, 2025
    • Parsed from source:
      Sep 21, 2025
    • Detected by Releasebot:
      Oct 12, 2025

    Next.js by Vercel

    v15.5.4

    Backport release with essential bug fixes across core and turbopack to boost stability. It tightens error handling, fixes devtools position and overlays, and improves symlink resolution, metadata routing, and large static metadata errors.

    Note

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

    Core Changes

    • fix: ensure onRequestError is invoked when otel enabled (#83343)
    • fix: devtools initial position should be from next config (#83571)
    • [devtool] fix overlay styles are missing (#83721)
    • Turbopack: don't match dynamic pattern for node_modules packages (#83176)
    • Turbopack: don't treat metadata routes as RSC (#82911)
    • [turbopack] Improve handling of symlink resolution errors in track_glob and read_glob (#83357)
    • Turbopack: throw large static metadata error earlier (#82939)
    • fix: error overlay not closing when backdrop clicked (#83981)
    • Turbopack: flush Node.js worker IPC on error (#84077)

    Misc Changes

    • [CNA] use linter preference (#83194)
    • CI: use KV for test timing data (#83745)
    • docs: september improvements and fixes (#83997)

    Credits

    Huge thanks to @yiminghe, @huozhi, @devjiwonchoi, @mischnic, @lukesandberg, @ztanner, @icyJoseph, @leerob, @fufuShih, @dwrth, @aymericzip, @obendev, @molebox, @OoMNoO, @pontasan, @styfle, @HondaYt, @ryuapp, @lpalmes, and @ijjk for helping!

    Original source Report a problem
  • Sep 11, 2023
    • Parsed from source:
      Sep 11, 2023
    • Detected by Releasebot:
      Oct 12, 2025

    Next.js by Vercel

    v15.5.3

    Note

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

    Core Changes

    • fix: validation return types of pages API routes (#83069)
    • fix: relative paths in dev in validator.ts (#83073)
    • fix: remove satisfies keyword from type validation to preserve old TS compatibility (#83071)

    Credits

    Huge thanks to @bgub for helping!

    Original source Report a problem
  • Aug 26, 2023
    • Parsed from source:
      Aug 26, 2023
    • Detected by Releasebot:
      Oct 12, 2025

    Next.js by Vercel

    v15.5.1

    Backported fixes roll out for stability across navigations, file handling, and API routes. The release tightens typesafety, Windows path normalization, and validation tweaks, while preserving ongoing Canary work.

    Note

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

    Core Changes

    • fix: aliased navigations should apply scroll handling (#82900)
    • Turbopack: fix invalid NFT entry with file behind symlink (#82887)
    • fix: typesafe linking to route handlers and pages API routes (#82858)
    • fix: change "noUnknownAtRules" to "warn" for Biome (#82974)
    • fix: add path normalization to getRelativePath for Windows (#82918)
    • feat: add typesafety with config.typedRoutes to redirect() and permanentRedirect() (#82860)
    • fix: avoid importing types that will be unused (#82856)
    • fix: update the config.api.responseLimit type (#82852)
    • fix: update validation return types (#82854)

    Credits

    Huge thanks to @bgub, @mischnic, and @ztanner for helping!

    Original source Report a problem
  • Aug 26, 2023
    • Parsed from source:
      Aug 26, 2023
    • Detected by Releasebot:
      Oct 12, 2025

    Next.js by Vercel

    v15.5.2

    Note

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

    Core Changes

    • fix: disable unknownatrules lint rule entirely (#83059)
    • revert: add ?dpl to fonts in /_next/static/media (#83062)

    Credits

    Huge thanks to @bgub and @ztanner for helping!

    Original source Report a problem
  • Aug 19, 2023
    • Parsed from source:
      Aug 19, 2023
    • Detected by Releasebot:
      Oct 12, 2025

    Next.js by Vercel

    v15.5.0

    Major update brings broad Next.js and Turbopack improvements, React upgrades, and new UI components. Expect performance boosts, smarter caching, stability fixes, and richer devtools, plus stricter code checks and routing improvements.

    Core Changes

    • Use and enforce exhaustive switch statements for work unit store: #81577
    • Enable @typescript-eslint/switch-exhaustiveness-check rule: #81583
    • [dynamicIO] use RSC dynamicness to control partial vs complete PPR result: #81627
    • [dynamicIO] Do not use React.unstable_postpone() : #81652
    • feat: new detachable panel UI: #81483
    • Turbopack: content-hash PageLoaderAsset: #81450
    • [segment explorer] fix content overflow styling: #81649
    • Improve reliability of owner stacks for async I/O errors: #81501
    • fix(router): Prevent redirect loop on root data requests with basePath: #81096
    • Ensure custom NextServer config is honored: #81681
    • Fix before interactive incorrectly render css: #81146
    • perf: memorize exclude function in webpack config: #81525
    • Also enforce experimental features when there's no next config file: #81679
    • feat(next/image): warn when images.qualities is undefined: #81690
    • feat(build): optimize filterUniqueParamsCombinations to generate sub-combinations: #81321
    • Update NextAdapter type and re-export: #81692
    • upgrade to [email protected]: #80123
    • [metadata] replace for initial body icon case: #81688
    • [segment explorer] remove dev panel ui flag: #81670
    • Simplify running test apps locally with ppr or dynamicIO enabled: #81668
    • [turbopack] Return cached Promise from turbopack_load_by_url : #81663
    • Upgrade React from 97cdd5d3-20250710 to 2f0e7e57-20250715 : #81678
    • Delete unused renderToString function: #81707
    • Discard prerendered route handler data from FS cache after revalidation: #81611
    • Upgrade React from 2f0e7e57-20250715 to d85ec5f5-20250716 : #81708
    • Ignore pending revalidations during prerendering: #81621
    • [turbopack] Clear chunk cache on HMR instead of creating new next-server VM: #81664
    • fix: rootParams should throw in client when fallbackParams are not present: #81711
    • perf(build): optimize buildAppStaticPaths performance and add helper function: #81386
    • Turbopack: Support string without options for @next/mdx: #81713
    • [Segment Cache] Support dynamic head prefetching: #81677
    • [sourcemaps] Consistent cursor columns: #81375
    • fix: revert client segment route changes for sub shell generation: #81731
    • fix: pages router metadata bugs with React 19: #81733
    • Improve error handling for headers / cookies / draftMode in 'use cache' : #81716
    • [devtool] fix duplicate rendered indicator on server: #81729
    • [devtool] enable segment explorer by default: #81737
    • [turbopack] Stop exposing globals from Turbopack runtime: #81727
    • Remove unnecessary await: #81761
    • [chore] bump zod to latest v3: #81757
    • feat(turbopack): Log anonymized internal error (panic) information to telemetry: #81272
    • fix: revert client segment route changes for sub shell generation: #81740
    • bugfix: static resources staleTime should be renewed once refetched: #81771
    • [devtool] move font styling to global.css: #81782
    • [devtool] copy decoded info of error details: #81735
    • fix(build): add sourcePage context for PPR dynamic route lambda creation: #81781
    • refactor: rename experimental.dynamicIO to experimental.cacheComponents: #81562
    • Properly handle hanging promise rejections during prerendering: #81754
    • Upgrade React from d85ec5f5-20250716 to dffacc7b-20250717 : #81767
    • Refactor: Get rid of overly generic getExpectedRequestStore function: #81791
    • [devtool] migrate css reset to global.css: #81783
    • [dev-tools] Robust shortcut detection: #81756
    • [segment explorer] hide for pages router: #81813
    • [devtool] fix scrollbar styling: #81814
    • fix(ppr): ensure fallback route params trigger dynamic resume: #81812
    • [devtools] restart server pending state: #80858
    • Turbopack: fix dist dir on Windows: #81758
    • fix: remove boundary sentinel from RSC responses: #81857
    • [sourcemaps] Try VM for retrieving source maps first: #81869
    • [devtools] save user config inside .next/cache : #81807
    • Server: Remove unused code: #81886
    • refactor: encapsulate content type within RenderResult: #81861
    • refactor: handle null RenderResult responses gracefully: #81895
    • Upgrade React from dffacc7b-20250717 to e9638c33-20250721 : #81899
    • chore(devtools): sync todos to linear: #81901
    • Introduce 'use cache: private' : #81816
    • chore(deps): update browserslist : #81851
    • Remove web-server from edge-ssr-app: #81389
    • Stabilize node middleware support: #81907
    • Add run-turbopack-compiler trace span: #81917
    • fix: support calling onClose multiple times in edge-ssr-app: #81911
    • fix: logging the correct process for listened port: #81903
    • Build: Include rewrites in manifest generation: #81894
    • Routing: Clean up some code: #81932
    • [sourcemaps] Ensure codeframe when calling Client Functions from Server: #81918
    • [segment explorer] missing file suggestion: #81617
    • [turbopack] Always print trace labels in headers: #81728
    • Revert "[metadata] use https protocol for schema urls": #81934
    • Upgrade React from e9638c33-20250721 to 7513996f-20250722 : #81940
    • Upgrade to swc v33: #81750
    • Remove extra base-server code: #81944
    • Turbopack: flatten sourceInfo to avoid objects, reorder args, compress node.js entry: #81545
    • Fix dynamicParams false layout case in dev: #81990
    • Initial MCP implementation: #81770
    • Fix: Unresolved param in x-nextjs-rewritten-query: #81991
    • Turbopack: Add an option to use system TLS certificates (fixes #79060, fixes #79059 ): #81818
    • Turbopack: Remove unused proxy option in turbo-tasks-fetch, lightly document HTTP_PROXY/HTTPS_PROXY environment variables: #81905
    • Upgrade React from 7513996f-20250722 to edac0dde-20250723 : #81984
    • [devtools] Cleanup folder structure: #82012
    • [devtools] Fix "open in editor" for locations in stackframes: #82013
    • [Segment Cache] Fix: Key by rewritten search: #81986
    • Upgrade vercel og and remove yoga type patching: #81937
    • [perf] cache load config results: #80570
    • Turbopack: use prototype for turbopack context for better runtime performance: #81547
    • [reactcompiler] Test with latest RC: #82002
    • [devtools] Fix various exhaustive-deps violations: #82010
    • [devtools] Apply React Compiler to Next.js DevTools source: #82004
    • Upgrade React from edac0dde-20250723 to 3d14fcf0-20250724 : #82020
    • Adjusted the warning message to be more descriptive: #82054
    • Track fallback params on workUnitStore: #82003
    • Fix API stripping JSON incorrectly: #82061
    • Upgrade React from 3d14fcf0-20250724 to 19baee81-20250725 : #82063
    • use FetchStrategy to control prefetching behavior everywhere: #82032
    • [Segment Cache] set fetchStrategy on segments from a dynamic request: #82059
    • Revert "Upgrade vercel og and remove yoga type patching (#81937)": #82066
    • Optimize segment data routes: #82033
    • Turbopack: write tasks doesn't need to be session dependent, as effects will restore: #78727
    • [sourcemaps] Fully sourcemap stacks on the Server: #81904
    • fix(Rspack): use loaderContext.utils.contextify to replace ModuleFilenameHelpers.createFilename: #82104
    • next/root-params: #80255
    • fix(next/image): fix image-optimizer.ts headers: #82114
    • Upgrade React from 19baee81-20250725 to eaee5308-20250728 : #82120
    • Fix validateRSCRequestHeaders incorrect redirect: #82119
    • fix(next/image): improve and simplify detect-content-type: #82118
    • [CacheComponents] Use fallback params when validating dynamic routes in dev: #82069
    • Extract getDynamicParam to a shared module: #82137
    • Fix i18n fallback: false collision: #82136
    • [segment explorer] normalize path when running inside monorepo: #82146
    • [segment explorer] windows compatibility: #82147
    • Upgrade React from eaee5308-20250728 to 9be531cd-20250729 : #82159
    • Ensure setAssetPrefix updates config instance: #82160
    • Revert "Fix tracing of server actions imported by client components (#78968)": #82161
    • Remove useMDXComponents argument: #80871
    • Fix RSC hash validation for middleware external rewrites: #82176
    • @next/codemod: update docs url in README: #82135
    • @next/codemod: Add experimental.turbo to turbopack codemod for Next.js configs: #82134
    • refactor: lowercase app router header values: #82169
    • Strip internals from NextRequest types: #82172
    • allow root params access in private caches: #82125
    • [devtool] bump base-ui to 1.0.0-beta.2: #82206
    • Upgrade @vercel og: #82201
    • Upgrade React from 9be531cd-20250729 to 9784cb37-20250730 : #82207
    • Fix: the unexpected clearing of symbolic link directories: #82191
    • [next-dev] Set TURBOPACK env before loading config: #82162
    • fix: display multiple lockfile warn if neither outputFileTracingRoot or turbopack.root option is provided: #82164
    • Revert "Initial MCP implementation (#81770)": #82217
    • Revert "Upgrade @vercel og (#82201)": #82219
    • Fix: Don't bail out of prefetch if head is missing: #82216
    • Upgrade React from 9784cb37-20250730 to c260b38d-20250731 : #82247
    • [Cache Components] Runtime prefetching: #81088
    • Parse dynamic params on the client: #82185
    • Mark bun builtin modules as external (fixes #75220): #77616
    • Turbopack: Compact only at the end for short sessions: #82224
    • feat: add fallback root params support for prefetch segment data routes: #82282
    • feat: add route context to prerender error messages: #82283
    • feat: automatically generate route types: #81396
    • [Cache Components] Reset PrerenderStore after generating RSC payload: #82286
    • Include eslint-plugin-react-hooks in React sync: #82294
    • [devtools] Remove unnecessary cascading update: #82295
    • Turbopack: name the module factory function: #73553
    • Update font data: #82292
    • fix: next/root-params erroring when rerendering after action: #82326
    • Remove params from segment path: #82249
    • Upgrade React from c260b38d-20250731 to be11cb5c-20250804 : #82339
    • fix: OTel root span should indicate error status on exceptions: #82212
    • [Cache Components] Allow span creation while prerendering: #82350
    • feat(tu... (truncated for brevity)
    Original source Report a problem
  • Aug 18, 2023
    • Parsed from source:
      Aug 18, 2023
    • Detected by Releasebot:
      Oct 12, 2025

    Next.js by Vercel

    v14.2.32

    Note

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

    Core Changes

    • fix router handling when setting a location response header #82588

    Credits

    Huge thanks to @ztanner for helping!

    Original source Report a problem
  • Aug 18, 2023
    • Parsed from source:
      Aug 18, 2023
    • Detected by Releasebot:
      Oct 12, 2025

    Next.js by Vercel

    v15.4.7

    Note

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

    Core Changes

    • fix router handling when setting a location response header #82588

    Credits

    Huge thanks to @ztanner for helping!

    Original source Report a problem
  • Aug 6, 2023
    • Parsed from source:
      Aug 6, 2023
    • Detected by Releasebot:
      Oct 12, 2025

    Next.js by Vercel

    v15.4.6

    Note

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

    Core Changes

    • fix: _error page's req.url can be overwritten to dynamic param on minimal mode (#82347)
    • fix: add ?dpl to fonts in /_next/static/media (#82384)

    Credits

    Huge thanks to @devjiwonchoi, @ijjk, and @styfle for helping!

    Original source Report a problem
  • Jul 30, 2023
    • Parsed from source:
      Jul 30, 2023
    • Detected by Releasebot:
      Oct 12, 2025

    Next.js by Vercel

    v14.2.31

    Note

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

    Core Changes

    • fix(next/image): improve and simplify detect-content-type (#82179)
    • fix(next/image): fix image-optimizer.ts headers (#82178)

    Credits

    Huge thanks to @styfle and @ztanner for helping!

    Original source Report a problem