Skip to content

[TASK] Update all (major)

Renovate BOT requested to merge renovate/major-all into master

This MR contains the following updates:

Package Change Age Adoption Passing Confidence Type Update
@types/node (source) 20.12.7 -> 22.10.2 age adoption passing confidence devDependencies major
@types/react (source) ^18 -> ^19.0.0 age adoption passing confidence devDependencies major
@types/react-dom (source) ^18 -> ^19.0.0 age adoption passing confidence devDependencies major
eslint (source) 8.57.0 -> 9.17.0 age adoption passing confidence devDependencies major
eslint-config-next (source) 14.2.3 -> 15.1.2 age adoption passing confidence devDependencies major
next (source) 14.2.3 -> 15.1.2 age adoption passing confidence dependencies major
node (source) 21.7 -> 22.12 age adoption passing confidence major
node 22.0.0-bookworm-slim -> 23.5.0-bookworm-slim age adoption passing confidence final major
react (source) ^18.2.0 -> ^19.0.0 age adoption passing confidence dependencies major
react-dom (source) ^18 -> ^19.0.0 age adoption passing confidence dependencies major

Update dependencies

  1. Clone project

  2. Checkout update branch

  3. run npm install and test everything

  4. If everything is fine and fixes are pushed, merge the MR


Release Notes

eslint/eslint (eslint)

v9.17.0

Compare Source

Features

Bug Fixes

  • 67d683d fix: fix crash when message.fix is nullish (#​19168) (ntnyq)
  • c618707 fix: ignore vars with non-identifier references in no-useless-assignment (#​19200) (YeonJuan)

Documentation

  • 3c22d2a docs: update yoda to Yoda in yoda.md for consistency (#​19230) (루밀LuMir)
  • e0a2203 docs: add missing backticks to no-sequences (#​19233) (루밀LuMir)
  • 4cc4881 docs: Update README (GitHub Actions Bot)
  • 3db6fdf docs: [no-await-in-loop] expand on benefits and inapplicability (#​19211) (Kirk Waiblinger)
  • bf2a4f6 docs: add missing backticks to func-style (#​19227) (루밀LuMir)
  • ba098bd docs: add missing header to prefer-spread (#​19224) (루밀LuMir)
  • b607ae6 docs: update description of no-param-reassign (#​19220) (루밀LuMir)
  • 1eb424d docs: add missing backticks to prefer-destructuring (#​19223) (루밀LuMir)
  • 85998d1 docs: add missing backticks to no-unneeded-ternary (#​19222) (루밀LuMir)
  • b75b32c docs: add missing backticks to no-new-func (#​19219) (루밀LuMir)
  • a7700bc docs: add missing backticks to id-length (#​19217) (루밀LuMir)
  • e2bb429 docs: add missing backticks to complexity.md (#​19214) (루밀LuMir)
  • 045d716 docs: add missing ) to id-denylist (#​19213) (루밀LuMir)
  • 7fe4114 docs: Update README (GitHub Actions Bot)
  • c743ba6 docs: add CSS language to no-restricted-syntax (#​19208) (Milos Djermanovic)
  • 1416d70 docs: add missing backticks to eqeqeq (#​19207) (루밀LuMir)
  • b950c1b docs: add missing backticks to prefer-object-spread (#​19206) (루밀LuMir)
  • 8a941cb docs: update docs and description of require-unicode-regexp (#​19205) (루밀LuMir)
  • cbab228 docs: Update README (GitHub Actions Bot)
  • f2257ce docs: update comments and description of no-script-url (#​19203) (루밀LuMir)
  • 365f0f4 docs: add missing backtick to default-case-last (#​19202) (루밀LuMir)
  • e6b84f5 docs: add missing punctuation in document (#​19161) (루밀LuMir)
  • c88708e docs: replace quote with backtick in description of for-direction (#​19199) (루밀LuMir)
  • a76f233 docs: use higher contrast color tokens for code comments (#​19187) (Josh Goldberg ✨)
  • db19502 docs: Update README (GitHub Actions Bot)

Chores

  • cc243c9 chore: upgrade to @eslint/js@9.17.0 (#​19242) (Francesco Trotta)
  • 84c5787 chore: package.json update for @​eslint/js release (Jenkins)
  • 4c4f53b chore: add missing backticks to flags.js (#​19226) (루밀LuMir)
  • 4b3132c chore: update dependency eslint-plugin-expect-type to ^0.6.0 (#​19221) (renovate[bot])
  • 9bf2204 chore: add type definitions for the eslint-config-eslint package (#​19050) (Arya Emami)
  • ee8c220 chore: fix incorrect name property in integration-tutorial-code (#​19218) (루밀LuMir)
  • cca801d chore: Upgrade cross-spawn to 7.0.6 (#​19185) (folortin)

v9.16.0

Compare Source

Features

  • 8f70eb1 feat: Add ignoreComputedKeys option in sort-keys rule (#​19162) (Milos Djermanovic)

Documentation

  • 9eefc8f docs: fix typos in use-isnan (#​19190) (루밀LuMir)
  • 0c8cea8 docs: switch the order of words in no-unreachable (#​19189) (루밀LuMir)
  • 0c19417 docs: add missing backtick to no-async-promise-executor (#​19188) (루밀LuMir)
  • 8df9276 docs: add backtick in -0 in description of no-compare-neg-zero (#​19186) (루밀LuMir)
  • 7e16e3f docs: fix caseSensitive option's title of sort-keys (#​19183) (Tanuj Kanti)
  • 0c6b842 docs: fix typos in migration-guide.md (#​19180) (루밀LuMir)
  • 353266e docs: fix a typo in debug.md (#​19179) (루밀LuMir)
  • 5ff318a docs: delete unnecessary horizontal rule(---) in nodejs-api (#​19175) (루밀LuMir)
  • 576bcc5 docs: mark more rules as handled by TypeScript (#​19164) (Tanuj Kanti)
  • 742d054 docs: note that no-restricted-syntax can be used with any language (#​19148) (Milos Djermanovic)

Chores

v9.15.0

Compare Source

Features

  • 01557ce feat: Implement Language#normalizeLanguageOptions() (#​19104) (Nicholas C. Zakas)
  • 2edc0e2 feat: add meta.defaultOptions (#​17656) (Josh Goldberg ✨)
  • bdec50e feat: fix no-useless-computed-key false negative with __proto__ (#​19123) (Milos Djermanovic)
  • 3087c9e feat: add meta object to @eslint/js plugin (#​19095) (Francesco Trotta)

Bug Fixes

Documentation

  • d927920 docs: fix styles in no-js mode (#​18916) (Tanuj Kanti)
  • 09bc2a8 docs: Update README (GitHub Actions Bot)
  • 39089c8 docs: add no-useless-computed-key examples with object patterns (#​19109) (Milos Djermanovic)
  • 895c60f docs: add missing messageId property and suggestion properties (#​19122) (fnx)
  • 298625e docs: Change CLI -c to use flat config (#​19103) (Nicholas C. Zakas)
  • 522d8a3 docs: add deprecation on indent, quotes and semi rule types (#​19090) (Marco Pasqualetti)

Chores

v9.14.0

Compare Source

Features

  • 3fa009f feat: add support for Import Attributes and RegExp Modifiers (#​19076) (Milos Djermanovic)
  • b0faee3 feat: add types for the @eslint/js package (#​19010) (Nitin Kumar)

Bug Fixes

  • 24d0172 fix: enable retry concurrency limit for readFile() (#​19077) (Nicholas C. Zakas)
  • b442067 fix: Don't crash when directory is deleted during traversal. (#​19067) (Nicholas C. Zakas)
  • d474443 fix: avoid call stack overflow while processing globs (#​19035) (Livia Medeiros)

Documentation

Build Related

Chores

v9.13.0

Compare Source

Features

Bug Fixes

Documentation

  • abdbfa8 docs: mark LintMessage#nodeType as deprecated (#​19019) (Nitin Kumar)
  • 19e68d3 docs: update deprecated rules type definitions (#​19018) (Nitin Kumar)
  • 7dd402d docs: Update examples of passing multiple values to a CLI option (#​19006) (Milos Djermanovic)
  • 5dcbc51 docs: Add example with side-effect imports to no-restricted-imports (#​18997) (Milos Djermanovic)
  • 1ee87ca docs: Update README (GitHub Actions Bot)
  • 2c3dbdc docs: Use prerendered sponsors for README (#​18988) (Milos Djermanovic)

Chores

v9.12.0

Compare Source

Features

Bug Fixes

Documentation

  • ecbd522 docs: Mention code explorer (#​18978) (Nicholas C. Zakas)
  • 7ea4ecc docs: Clarifying the Use of Meta Objects (#​18697) (Amaresh S M)
  • d3e4b2e docs: Clarify how to exclude .js files (#​18976) (Milos Djermanovic)
  • 57232ff docs: Mention plugin-kit in language docs (#​18973) (Nicholas C. Zakas)
  • b80ed00 docs: Update README (GitHub Actions Bot)
  • cb69ab3 docs: Update README (GitHub Actions Bot)
  • 7fb0d95 docs: Update README (GitHub Actions Bot)
  • 493348a docs: Update README (GitHub Actions Bot)
  • 87a582c docs: fix typo in id-match rule (#​18944) (Jay)

Chores

v9.11.1

Compare Source

Bug Fixes

  • 20fd916 fix: add @eslint/core, @types/estree, & @types/json-schema deps (#​18938) (Nitin Kumar)
  • 2738322 fix: add missing types for require-atomic-updates rule (#​18937) (Kristóf Poduszló)
  • d71ff30 fix: add missing types for object-shorthand rule (#​18935) (Kristóf Poduszló)
  • 561cadc fix: add missing types for no-unsafe-negation rule (#​18932) (Kristóf Poduszló)
  • 8843656 fix: add missing types for no-underscore-dangle rule (#​18931) (Kristóf Poduszló)
  • 92cde5c fix: add missing types for no-shadow rule (#​18930) (Kristóf Poduszló)
  • b3cbe11 fix: add missing types for no-sequences rule (#​18929) (Kristóf Poduszló)
  • 976f77f fix: add missing types for no-unused-expressions rule (#​18933) (Kristóf Poduszló)

Documentation

  • 3eff709 docs: replace deprecated Linter.FlatConfig type with Linter.Config (#​18941) (Carlos Meira)

Chores

v9.11.0

Compare Source

Features

  • ec30c73 feat: add "eslint/universal" to export Linter (#​18883) (唯然)
  • c591da6 feat: Add language to types (#​18917) (Nicholas C. Zakas)
  • 492eb8f feat: limit the name given to ImportSpecifier in id-length (#​18861) (Tanuj Kanti)
  • 19c6856 feat: Add no-useless-constructor suggestion (#​18799) (Jordan Thomson)
  • a48f8c2 feat: add type FormatterFunction, update LoadedFormatter (#​18872) (Francesco Trotta)

Bug Fixes

  • 5e5f39b fix: add missing types for no-restricted-exports rule (#​18914) (Kristóf Poduszló)
  • 8f630eb fix: add missing types for no-param-reassign options (#​18906) (Kristóf Poduszló)
  • d715781 fix: add missing types for no-extra-boolean-cast options (#​18902) (Kristóf Poduszló)
  • 2de5742 fix: add missing types for no-misleading-character-class options (#​18905) (Kristóf Poduszló)
  • c153084 fix: add missing types for no-implicit-coercion options (#​18903) (Kristóf Poduszló)
  • fa11b2e fix: add missing types for no-empty-function options (#​18901) (Kristóf Poduszló)
  • a0deed1 fix: add missing types for camelcase options (#​18897) (Kristóf Poduszló)

Documentation

  • e4e5709 docs: correct prefer-object-has-own type definition comment (#​18924) (Nitin Kumar)
  • 91cbd18 docs: add unicode abbreviations in no-irregular-whitespace rule (#​18894) (Alix Royere)
  • 59cfc0f docs: clarify resultsMeta in LoadedFormatter type (#​18881) (Milos Djermanovic)
  • adcc50d docs: Update README (GitHub Actions Bot)
  • 4edac1a docs: Update README (GitHub Actions Bot)

Build Related

  • 959d360 build: Support updates to previous major versions (#​18871) (Milos Djermanovic)

Chores

v9.10.0

Compare Source

Features

  • 301b90d feat: Add types (#​18854) (Nicholas C. Zakas)
  • bcf0df5 feat: limit namespace import identifier in id-length rule (#​18849) (ChaedongIm)
  • 45c18e1 feat: add requireFlag option to require-unicode-regexp rule (#​18836) (Brett Zamir)
  • 183b459 feat: add error message for duplicate flags in no-invalid-regexp (#​18837) (Tanuj Kanti)
  • c69b406 feat: report duplicate allowed flags in no-invalid-regexp (#​18754) (Tanuj Kanti)

Documentation

  • bee0e7a docs: update README (#​18865) (Milos Djermanovic)
  • 5d80b59 docs: specify that ruleId can be null in custom formatter docs (#​18857) (Milos Djermanovic)
  • 156b1c3 docs: Update README (GitHub Actions Bot)
  • f6fdef9 docs: Update README (GitHub Actions Bot)
  • a20c870 docs: Update README (GitHub Actions Bot)
  • 90e699b docs: Update README (GitHub Actions Bot)

Chores

v9.9.1

Compare Source

Bug Fixes

  • 9bde90c fix: add logic to handle fixTypes in lintText() (#​18736) (Amaresh S M)

Documentation

Chores

v9.9.0

Compare Source

Features

  • 41d0206 feat: Add support for TS config files (#​18134) (Arya Emami)
  • 3a4eaf9 feat: add suggestion to require-await to remove async keyword (#​18716) (Dave)

Documentation

  • 9fe068c docs: how to author plugins with configs that extend other configs (#​18753) (Alec Gibson)
  • 48117b2 docs: add version support page in the side navbar (#​18738) (Amaresh S M)
  • fec2951 docs: add version support page to the dropdown (#​18730) (Amaresh S M)
  • 38a0661 docs: Fix typo (#​18735) (Zaina Al Habash)
  • 3c32a9e docs: Update yarn command for creating ESLint config (#​18739) (Temitope Ogunleye)
  • f9ac978 docs: Update README (GitHub Actions Bot)

Chores

v9.8.0

Compare Source

Features

  • 13d0bd3 feat: Add and use SourceCode#getLoc/getRange (#​18703) (Nicholas C. Zakas)

Bug Fixes

  • ab0ff27 fix: Throw error when invalid flags passed (#​18705) (Nicholas C. Zakas)
  • 70dc803 fix: basePath directory can never be ignored (#​18711) (Milos Djermanovic)

Documentation

Build Related

Chores

v9.7.0

Compare Source

Features

  • 7bd9839 feat: add support for es2025 duplicate named capturing groups (#​18630) (Yosuke Ota)
  • 1381394 feat: add regex option in no-restricted-imports (#​18622) (Nitin Kumar)

Bug Fixes

  • 14e9f81 fix: destructuring in catch clause in no-unused-vars (#​18636) (Francesco Trotta)

Documentation

  • 9f416db docs: Add Powered by Algolia label to the search. (#​18633) (Amaresh S M)
  • c8d26cb docs: Open JS Foundation -> OpenJS Foundation (#​18649) (Milos Djermanovic)
  • 6e79ac7 docs: loadESLint does not support option cwd (#​18641) (Francesco Trotta)

Chores

v9.6.0

Compare Source

Features

  • e2b16e2 feat: Implement feature flags (#​18516) (Nicholas C. Zakas)
  • 8824aa1 feat: add ecmaVersion: 2025, parsing duplicate named capturing groups (#​18596) (Milos Djermanovic)

Bug Fixes

  • 1613e2e fix: Allow escaping characters in config patterns on Windows (#​18628) (Milos Djermanovic)
  • 21d3766 fix: no-unused-vars include caught errors pattern in report message (#​18609) (Kirk Waiblinger)
  • d7a7736 fix: improve no-unused-vars message on unused caught errors (#​18608) (Kirk Waiblinger)
  • f9e95d2 fix: correct locations of invalid /* eslint */ comments (#​18593) (Milos Djermanovic)

Documentation

  • 13dbecd docs: Limit search to just docs (#​18627) (Nicholas C. Zakas)
  • 375227f docs: Update getting-started.md - add pnpm to init eslint config (#​18599) (Kostiantyn Ochenash)
  • 44915bb docs: Update README (GitHub Actions Bot)
  • d50db7b docs: Update vscode-eslint info (#​18595) (Nicholas C. Zakas)

Chores

v9.5.0

Compare Source

Features

  • b2d256c feat: no-sparse-arrays report on "comma" instead of the whole array (#​18579) (fisker Cheung)

Bug Fixes

  • 6880286 fix: treat * as a universal pattern (#​18586) (Milos Djermanovic)
  • 7fbe211 fix: message template for all files ignored (#​18564) (Milos Djermanovic)
  • 469cb36 fix: Don't lint the same file multiple times (#​18552) (Milos Djermanovic)
  • 5cff638 fix: improve message for ignored files without a matching config (#​18404) (Francesco Trotta)

Documentation

  • 455f7fd docs: add section about including .gitignore files (#​18590) (Milos Djermanovic)
  • 721eafe docs: update info about universal files patterns (#​18587) (Francesco Trotta)
  • 8127127 docs: Update README (GitHub Actions Bot)
  • 55c2a66 docs: Update README (GitHub Actions Bot)
  • eb76282 docs: Update README (GitHub Actions Bot)
  • ff6e96e docs: baseConfig and overrideConfig can be arrays (#​18571) (Milos Djermanovic)
  • d2d83e0 docs: Add mention of eslint-transforms to v9 migration guide (#​18566) (Nicholas C. Zakas)
  • 9ce6832 docs: add callout box for unintuitive behavior (#​18567) (Ben McCann)
  • b8db99c docs: Add VS Code info to config migration guide (#​18555) (Nicholas C. Zakas)
  • 518a35c docs: Mention config migrator (#​18561) (Nicholas C. Zakas)
  • eb440fc docs: specifying files with arbitrary or no extension (#​18539) (Francesco Trotta)
  • 38c159e docs: Provide example of reading package.json for plugins meta (#​18530) (Nicholas C. Zakas)
  • d16a659 docs: add link to migration guide for --ext CLI option (#​18537) (Milos Djermanovic)
  • 73408de docs: add link to configuration file docs before examples (#​18535) (Milos Djermanovic)

Chores

v9.4.0

Compare Source

Features

  • 89a4a0a feat: ignore IIFE's in the no-loop-func rule (#​17528) (Nitin Kumar)

Bug Fixes

  • f6534d1 fix: skip processor code blocks that match only universal patterns (#​18507) (Milos Djermanovic)
  • 7226ebd fix: allow implicit undefined return in no-constructor-return (#​18515) (Ali Rezvani)
  • 389744b fix: use @eslint/config-inspector@latest (#​18483) (唯然)
  • 70118a5 fix: func-style false positive with arrow functions and super (#​18473) (Milos Djermanovic)

Documentation

Chores

v9.3.0

Compare Source

Features

  • b32153c feat: add overrides.namedExports to func-style rule (#​18444) (Percy Ma)
  • b67eba4 feat: add restrictedNamedExportsPattern to no-restricted-exports (#​18431) (Akul Srivastava)
  • 069aa68 feat: add option allowEscape to no-misleading-character-class rule (#​18208) (Francesco Trotta)
  • 05ef92d feat: deprecate multiline-comment-style & line-comment-position (#​18435) (唯然)
  • db0b174 feat: add enforceForInnerExpressions option to no-extra-boolean-cast (#​18222) (Kirk Waiblinger)

Bug Fixes

  • 8db0eff fix: Improve config error messages (#​18457) (Nicholas C. Zakas)
  • 5c28d9a fix: don't remove comments between key and value in object-shorthand (#​18442) (Kuba Jastrzębski)
  • 39fb0ee fix: object-shorthand loses type parameters when auto-fixing (#​18438) (dalaoshu)
  • 37eba48 fix: don't crash when fs.readFile returns promise from another realm (#​18416) (Milos Djermanovic)

Documentation

  • ceada8c docs: explain how to use "tsc waiting" label (#​18466) (Francesco Trotta)
  • 62e686c docs: Add troubleshooting info for plugin compatibility (#​18451) (Nicholas C. Zakas)
  • e17e1c0 docs: Update README (GitHub Actions Bot)
  • 2465a1e docs: Update README (GitHub Actions Bot)
  • d23574c docs: Clarify usage of no-unreachable with TypeScript (#​18445) (benj-dobs)
  • 1db9bae docs: Fix typos (#​18443) (Frieder Bluemle)
  • 7065196 docs: Update README (GitHub Actions Bot)
  • 04e7c6e docs: update deprecation notice of no-return-await (#​18433) (Tanuj Kanti)
  • e763512 docs: Link global ignores section in config object property list (#​18430) (MaoShizhong)
  • ac7f718 docs: reflect release of v9 in config migration guide (#​18412) (Peter Briggs)
  • 0de0909 docs: fix grammar in configuration file resolution (#​18419) (Mike McCready)

Chores

v9.2.0

Compare Source

Features

  • 8485d76 feat: no-case-declarations add suggestions (#​18388) (Josh Goldberg ✨)
  • a498f35 feat: update Unicode letter detection in capitalized-comments rule (#​18375) (Francesco Trotta)

Bug Fixes

  • eeec413 fix: do not throw when defining a global named defineSetter (#​18364) (唯然)

Documentation

  • 0f5df50 docs: Update README (GitHub Actions Bot)
  • 1579ce0 docs: update wording regarding indirect eval (#​18394) (Kirk Waiblinger)
  • f12a02c docs: update to eslint v9 in custom-rule-tutorial (#​18383) (唯然)

Chores

v9.1.1

Compare Source

Bug Fixes

v9.1.0

Compare Source

Features

Bug Fixes

  • 8d18958 fix: Remove name from eslint/js packages (#​18368) (Nicholas C. Zakas)
  • 594eb0e fix: do not crash on error in fs.walk filter (#​18295) (Francesco Trotta)
  • 0d8cf63 fix: EMFILE errors (#​18313) (Nicholas C. Zakas)
  • e1ac0b5 fix: --inspect-config only for flat config and respect -c (#​18306) (Nicholas C. Zakas)
  • 09675e1 fix: --no-ignore should not apply to non-global ignores (#​18334) (Milos Djermanovic)

Documentation

  • fb50077 docs: include notes about globals in migration-guide (#​18356) (Gabriel Rohden)
  • 71c771f docs: Fix missing accessible name for scroll-to-top link (#​18329) (Germán Freixinós)
  • 200fd4e docs: indicate eslintrc mode for .eslintignore (#​18285) (Francesco Trotta)
  • 16b6a8b docs: Update README (GitHub Actions Bot)
  • df5f8a9 docs: paths and patterns difference in no-restricted-imports (#​18273) (Tanuj Kanti)
  • c537d76 docs: update npm init @​eslint/config generated file names (#​18298) (唯然)
  • e1e305d docs: fix linebreak-style examples (#​18262) (Francesco Trotta)
  • 113f51e docs: Mention package.json config support dropped (#​18305) (Nicholas C. Zakas)
  • 5c35321 docs: add eslintrc-only note to --rulesdir (#​18281) (Adam Lui 刘展鹏)

Build Related

  • 1fa6622 build: do not use --force flag to install dependencies (#​18284) (Francesco Trotta)

Chores

v9.0.0

Compare Source

Breaking Changes

  • b7cf3bd fix!: correct camelcase rule schema for allow option (#​18232) (eMerzh)
  • 09bd7fe feat!: move AST traversal into SourceCode (#​18167) (Nicholas C. Zakas)
  • 79a95eb feat!: disallow multiple configuration comments for same rule (#​18157) (Milos Djermanovic)
  • 9163646 feat!: Rule Tester checks for missing placeholder data in the message (#​18073) (fnx)
  • 3c4d51d feat!: default for enforceForClassMembers in no-useless-computed-key (#​18054) (Francesco Trotta)
  • 47e60f8 feat!: Stricter rule test validations (#​17654) (fnx)
  • 1a94589 feat!: no-unused-vars default caughtErrors to 'all' (#​18043) (Josh Goldberg ✨)
  • 57089cb feat!: no-restricted-imports allow multiple config entries for same path (#​18021) (Milos Djermanovic)
  • 2e1d549 feat!: detect duplicate test cases (#​17955) (Bryan Mishkin)
  • 701f1af feat!: no-inner-declaration new default behaviour and option (#​17885) (Tanuj Kanti)
  • bde5105 fix!: handle --output-file for empty output when saving to disk (#​17957) (Nitin Kumar)
  • 07107a5 fix!: upgrade eslint-scope@8.0.0 (#​17942) (Milos Djermanovic)
  • 3ee0f6c fix!: no-unused-vars varsIgnorePattern behavior with catch arguments (#​17932) (Tanuj Kanti)
  • 51f8bc8 fix!: configuration comments with just severity should retain options (#​17945) (Milos Djermanovic)
  • d191bdd feat!: Remove CodePath#currentSegments (#​17936) (Milos Djermanovic)
  • 946ae00 feat!: FlatRuleTester -> RuleTester (#​17922) (Nicholas C. Zakas)
  • baff28c feat!: remove no-inner-declarations from eslint:recommended (#​17920) (Milos Djermanovic)
  • cadfbcd feat!: Rename FlatESLint to ESLint (#​17914) (Nicholas C. Zakas)
  • d1018fc feat!: skip running warnings in --quiet mode (#​17274) (Maddy Miller)
  • fb81b1c feat!: Set default schema: [], drop support for function-style rules (#​17792) (Milos Djermanovic)
  • 0b21e1f feat!: add two more cases to no-implicit-coercion (#​17832) (Gürgün Dayıoğlu)
  • 2916c63 feat!: Switch Linter to flat config by default (#​17851) (Nicholas C. Zakas)
  • 200518e fix!: Parsing 'exported' comment using parseListConfig (#​17675) (amondev)
  • bdd6ba1 feat!: Remove valid-jsdoc and require-jsdoc (#​17694) (Nicholas C. Zakas)
  • 12be307 fix!: Behavior of CLI when no arguments are passed (#​17644) (Nicholas C. Zakas)
  • 8fe8c56 feat!: Update shouldUseFlatConfig and CLI so flat config is default (#​17748) (Nicholas C. Zakas)
  • 60dea3e feat!: deprecate no-new-symbol, recommend no-new-native-nonconstructor (#​17710) (Francesco Trotta)
  • 5aa9c49 feat!: check for parsing errors in suggestion fixes (#​16639) (Bryan Mishkin)
  • b3e0bb0 feat!: assert suggestion messages are unique in rule testers (#​17532) (Josh Goldberg ✨)
  • e563c52 feat!: no-invalid-regexp make allowConstructorFlags case-sensitive (#​17533) (Josh Goldberg ✨)
  • e5f02c7 fix!: no-sequences rule schema correction (#​17878) (MHO)
  • 6ee3e9e feat!: Update eslint:recommended configuration (#​17716) (Milos Djermanovic)
  • c2cf85a feat!: drop support for string configurations in flat config array (#​17717) (Milos Djermanovic)
  • c314fd6 feat!: Remove SourceCode#getComments() (#​17715) (Milos Djermanovic)
  • ae78ff1 feat!: Remove deprecated context methods (#​17698) (Nicholas C. Zakas)
  • f71c328 feat!: Swap FlatESLint-ESLint, FlatRuleTester-RuleTester in API (#​17823) (Nicholas C. Zakas)
  • 5304da0 feat!: remove formatters except html, json(-with-metadata), and stylish (#​17531) (Josh Goldberg ✨)
  • e1e827f feat!: Require Node.js ^18.18.0 || ^20.9.0 || >=21.1.0 (#​17725) (Milos Djermanovic)

Features

  • d54a412 feat: Add --inspect-config CLI flag (#​18270) (Nicholas C. Zakas)
  • 97ce45b feat: Add reportUsedIgnorePattern option to no-unused-vars rule (#​17662) (Pearce Ropion)
  • 3e9fcea feat: Show config names in error messages (#​18256) (Nicholas C. Zakas)
  • de40874 feat: Rule Performance Statistics for flat ESLint (#​17850) (Mara Kiefer)
  • d85c436 feat: use-isnan report NaN in indexOf and lastIndexOf with fromIndex (#​18225) (Tanuj Kanti)
  • b8fb572 feat: add reportUnusedFallthroughComment option to no-fallthrough rule (#​18188) (Kirk Waiblinger)
  • 1c173dc feat: add ignoreClassWithStaticInitBlock option to no-unused-vars (#​18170) (Tanuj Kanti)
  • a451b32 feat: make no-misleading-character-class report more granular errors (#​18082) (Francesco Trotta)
  • c49ed63 feat: update complexity rule for optional chaining & default values (#​18152) (Mathias Schreck)
  • 11144a2 feat: no-restricted-imports option added allowImportNames (#​16196) (M Pater)
  • 74124c2 feat: add suggestions to use-isnan in indexOf & lastIndexOf calls (#​18063) (StyleShit)
  • 53f0f47 feat: Add loadESLint() API method for v9 (#​18097) (Nicholas C. Zakas)
  • 2d11d46 feat: add suggestions to use-isnan in binary expressions (#​17996) (StyleShit)
  • 26093c7 feat: fix false negatives in no-this-before-super (#​17762) (Yosuke Ota)
  • 5471e43 feat: convert unsafe autofixes to suggestions in no-implicit-coercion (#​17985) (Gürgün Dayıoğlu)
  • e3051be feat: emit warning when .eslintignore file is detected (#​17952) (Nitin Kumar)
  • a630edd feat: maintain latest ecma version in ESLint (#​17958) (Milos Djermanovic)
  • b4e0503 feat: add no-useless-assignment rule (#​17625) (Yosuke Ota)
  • 287c4b7 feat: no-misleading-character-class granular errors (#​17515) (Josh Goldberg ✨)
  • 8792464 feat: Enable eslint.config.mjs and eslint.config.cjs (#​17909) (Nicholas C. Zakas)
  • 24ce927 feat: warn by default for unused disable directives (#​17879) (Bryan Mishkin)

Bug Fixes

  • 610c148 fix: Support using declarations in no-lone-blocks (#​18269) (Kirk Waiblinger)
  • e508800 fix: rule tester ignore irrelevant test case properties (#​18235) (fnx)
  • a129acb fix: flat config name on ignores object (#​18258) (Nicholas C. Zakas)
  • dadc5bf fix: constructor-super false positives with loops (#​18226) (Milos Djermanovic)
  • ae8103d fix: load plugins in the CLI in flat config mode (#​18185) (Francesco Trotta)
  • e37153f fix: improve error message for invalid rule config (#​18147) (Nitin Kumar)
  • af6e170 fix: stop linting files after an error (#​18155) (Francesco Trotta)
  • 0cb4914 fix: validate options when comment with just severity enables rule (#​18133) (Milos Djermanovic)
  • c4d26fd fix: use-isnan doesn't report on SequenceExpressions (#​18059) (StyleShit)
  • 39076fb fix: handle absolute file paths in RuleTester (#​17989) (Nitin Kumar)
  • 6d11f3d fix: Ensure config keys are printed for config errors (#​17980) (Nicholas C. Zakas)
  • 806f708 fix: no-misleading-character-class edge cases with granular errors (#​17970) (Milos Djermanovic)
  • f182114 fix: deep merge behavior in flat config (#​17906) (Francesco Trotta)
  • b577e8a fix: allow circular references in config (#​17752) (Francesco Trotta)

Documentation

  • e151050 docs: update get-started to the new @eslint/create-config (#​18217) (唯然)
  • 94178ad docs: mention about name field in flat config (#​18252) (Anthony Fu)
  • 1765c24 docs: add Troubleshooting page (#​18181) (Josh Goldberg ✨)
  • 96607d0 docs: version selectors synchronization (#​18260) (Milos Djermanovic)
  • 651ec91 docs: remove /* eslint-env */ comments from rule examples (#​18249) (Milos Djermanovic)
  • 950c4f1 docs: Update README (GitHub Actions Bot)
  • 12f5746 docs: add info about dot files and dir in flat config (#​18239) (Tanuj Kanti)
  • b93f408 docs: update shared settings example (#​18251) (Tanuj Kanti)
  • 26384d3 docs: fix ecmaVersion in one example, add checks (#​18241) (Milos Djermanovic)
  • 7747097 docs: Update MR review process (#​18233) (Nicholas C. Zakas)
  • b07d427 docs: fix typo (#​18246) (Kirill Gavrilov)
  • 778082d docs: add Glossary page (#​18187) (Josh Goldberg ✨)
  • 239a7e2 docs: Clarify the description of sort-imports options (#​18198) (gyeongwoo park)
  • 4769c86 docs: fix incorrect example in no-lone-blocks (#​18215) (Tanuj Kanti)
  • 5251327 docs: Update README (GitHub Actions Bot)
  • 1dc8618 docs: Update README (GitHub Actions Bot)
  • ba1c1bb docs: Update README (GitHub Actions Bot)
  • 337cdf9 docs: Explain limitations of RuleTester fix testing (#​18175) (Nicholas C. Zakas)
  • c7abd89 docs: Explain Node.js version support (#​18176) (Nicholas C. Zakas)
  • d961eeb docs: show red underlines in examples in rules docs (#​18041) (Yosuke Ota)
  • 558274a docs: Update README (GitHub Actions Bot)
  • 2908b9b docs: Update release documentation (#​18174) (Nicholas C. Zakas)
  • 1f1260e docs: replace HackerOne link with GitHub advisory (#​18165) (Francesco Trotta)
  • e5ef3cd docs: add inline cases condition in no-fallthrough (#​18158) (Tanuj Kanti)
  • 450d0f0 docs: fix ignore option docs (#​18154) (Francesco Trotta)
  • 5fe095c docs: show v8.57.0 as latest version in dropdown (#​18142) (Milos Djermanovic)
  • 7db5bb2 docs: Show prerelease version in dropdown (#​18135) (Nicholas C. Zakas)
  • 73a5f06 docs: Update README (GitHub Actions Bot)
  • f95cd27 docs: Disallow multiple rule configuration comments in the same example (#​18116) (Milos Djermanovic)
  • d8068ec docs: Update link for schema examples (#​18112) (Svetlana)
  • f1c7e6f docs: Switch to Ethical Ads (#​18090) (Strek)
  • 15c143f docs: JS Foundation -> OpenJS Foundation in MR template (#​18092) (Nicholas C. Zakas)
  • 6ea339e docs: add stricter rule test validations to v9 migration guide (#​18085) (Milos Djermanovic)
  • 3c816f1 docs: use relative link from CLI to core concepts (#​18083) (Milos Djermanovic)
  • 9458735 docs: fix malformed eslint config comments in rule examples (#​18078) (Francesco Trotta)
  • 07a1ada docs: link from --fix CLI doc to the relevant core concept (#​18080) (Bryan Mishkin)
  • b844324 docs: Update team responsibilities (#​18048) (Nicholas C. Zakas)
  • aadfb60 docs: document languageOptions and other v9 changes for context (#​18074) (fnx)
  • 857e242 docs: tweak explanation for meta.docs rule properties (#​18057) (Bryan Mishkin)
  • 10485e8 docs: recommend messageId over message for reporting rule violations (#​18050) (Bryan Mishkin)
  • 98b5ab4 docs: Update README (GitHub Actions Bot)
  • 505fbf4 docs: update no-restricted-imports rule (#​18015) (Tanuj Kanti)
  • c25b4af docs: Update README (GitHub Actions Bot)
  • 33d1ab0 docs: add more examples to flat config ignores docs (#​18020) (Milos Djermanovic)
  • e6eebca docs: Update sort-keys options properties count (#​18025) (LB (Ben Johnston))
  • 1fedfd2 docs: Improve flat config ignores docs (#​17997) (Nicholas C. Zakas)
  • 38b9b06 docs: update valid-typeof rule (#​18001) (Tanuj Kanti)
  • b4abfea docs: Update note about ECMAScript support (#​17991) (Francesco Trotta)
  • 6788873 docs: Update release blog post template (#​17994) (Nicholas C. Zakas)
  • 1f37442 docs: Add sections on non-npm plugin configuration (#​17984) (Nicholas C. Zakas)
  • 96307da docs: migration guide entry for no-inner-declarations (#​17977) (Tanuj Kanti)
  • 40be60e docs: Update README (GitHub Actions Bot)
  • d31c180 docs: fix number of code-path events on custom rules page (#​17969) (Richard Hunter)
  • 1529ab2 docs: reorder entries in v9 migration guide (#​17967) (Milos Djermanovic)
  • 9507525 docs: Explain how to combine configs (#​17947) (Nicholas C. Zakas)
  • 7c78576 docs: Add more removed context methods to migrate to v9 guide (#​17951) (Milos Djermanovic)
  • 3a877d6 docs: Update removed CLI flags migration (#​17939) (Nicholas C. Zakas)
  • 4a9cd1e docs: Update Linter API for v9 (#​17937) (Milos Djermanovic)
  • 2a8eea8 docs: update docs for v9.0.0-alpha.0 (#​17929) (Milos Djermanovic)
  • 7f0ba51 docs: show NEXT in version selectors (#​17911) (Milos Djermanovic)
  • 0a7911e docs: add flat config default to v9 migration guide (#​17927) (Milos Djermanovic)
  • 94f8065 docs: Add CLI updates to migrate to v9 guide (#​17924) (Nicholas C. Zakas)
  • 16187f2 docs: Add exported and string config notes to migrate to v9 guide (#​17926) (Nicholas C. Zakas)
  • 3ae50cc docs: Add RuleTester changes to migrate to v9 guide (#​17923) (Nicholas C. Zakas)
  • 0831b58 docs: add rule changes to v9 migration guide (#​17925) (Milos Djermanovic)
  • 037abfc docs: update API docs (#​17919) (Milos Djermanovic)
  • afc3c03 docs: add function-style and meta.schema changes to v9 migration guide (#​17912) (Milos Djermanovic)
  • 1da0723 docs: update eslint:recommended section in Migrate to v9.x (#​17908) (Milos Djermanovic)
  • f55881f docs: remove configuration-files-new.md (#​17907) (Milos Djermanovic)
  • 63ae191 docs: Migrate to v9.0.0 (#​17905) (Nicholas C. Zakas)
  • e708496 docs: Switch to flat config by default (#​17840) (Nicholas C. Zakas)
  • fdf0424 docs: Update Create a Plugin for flat config (#​17826) (Nicholas C. Zakas)
  • e6a91bd docs: Switch shareable config docs to use flat config (#​17827) (Nicholas C. Zakas)
  • 3831fb7 docs: updated examples of max-lines rule (#​17898) (Tanuj Kanti)
  • cd1ac20 docs: Update README (GitHub Actions Bot)

Build Related

  • 26010c2 Build: changelog update for 9.0.0-rc.0 (Jenkins)
  • b91f9dc build: fix TypeError in prism-eslint-hooks.js (#​18209) (Francesco Trotta)
  • d7ec0d1 Build: changelog update for 9.0.0-beta.2 (Jenkins)
  • fd9c0a9 Build: changelog update for 9.0.0-beta.1 (Jenkins)
  • c9f2f33 build: changelog update for 8.57.0 (#​18144) (Milos Djermanovic)
  • 1bbc495 Build: changelog update for 9.0.0-beta.0 (Jenkins)
  • 96f8877 Build: changelog update for 9.0.0-alpha.2 (Jenkins)
  • 52d5e7a Build: changelog update for 9.0.0-alpha.1 (Jenkins)
  • c2bf27d build: update docs files when publishing prereleases (#​17940) (Milos Djermanovic)
  • e91d85d Build: changelog update for 9.0.0-alpha.0 (Jenkins)

Chores

v8.57.1

Compare Source

Bug Fixes

  • a19072f fix: add logic to handle fixTypes in the lintText() method (#​18900) (Francesco Trotta)
  • 04c7188 fix: Don't lint same file multiple times (#​18899) (Francesco Trotta)
  • 87ec3c4 fix: do not throw when defining a global named __defineSetter__ (#​18898) (Francesco Trotta)
  • 60a1267 fix: Provide helpful error message for nullish configs (#​18889) (Milos Djermanovic)
  • a0dea8e fix: allow name in global ignores, fix --no-ignore for non-global (#​18875) (Milos Djermanovic)
  • 3836bb4 fix: do not crash on error in fs.walk filter (#​18886) (Milos Djermanovic)
  • 2dec349 fix: skip processor code blocks that match only universal patterns (#​18880) (Milos Djermanovic)

Documentation

Build Related

  • 35d366a build: Support updates to previous major versions (#​18870) (Milos Djermanovic)

Chores

vercel/next.js (eslint-config-next)

v15.1.2

Compare Source

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

Core Changes
Credits

Huge thanks to @​ztanner for helping!

v15.1.1

Compare Source

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

Core Changes
Credits

Huge thanks to @​devjiwonchoi and @​ztanner for helping!

v15.1.0

Compare Source

Core Changes
  • fix: decrypt bound args before generating a cache key: #​72463
  • Fix the path to the next/experimental/testing/server export: #​72527
  • Expand server-source-maps scenarios to cover Edge runtime: #​72288
  • Ensure logged errors in Edge runtime include the stack: #​72394
  • fix: added cache control headers for static app routes: #​72521
  • capture console issues as console errors: #​72468
  • Add expireTag and expirePath APIs: #​72485
  • fix: try/catch access to localStorage within __NEXT_APP_ISR_INDICATOR useEffect: #​72362
  • Move client build ID to a global variable: #​72592
  • refactor(turbopack): Remove swc_css: #​72602
  • Bypass source map dev middleware for client chunks: #​72581
  • chore: remove rc from URL: #​72599
  • improve no-img-element lint error message: #​72410
  • Combine bound "use cache" closure args into a single parameter: #​72587
  • [Turbopack] add BackendOptions and allow to disable dependencies, children and storage: #​72426
  • Omit unused args when calling "use cache" functions: #​72506
  • Add experimental clientSegmentCache flag: #​72626
  • Add compiler.define option: #​71802
  • Fix static indicator with dynamicIO: #​72631
  • Allow usage of Node.js prereleases: #​72635
  • improved network url in (dev) cli: #​72634
  • chore: update getting-started/react-essentials path: #​72250
  • Fix static indicator for pure IO case: #​72639
  • Bump the monorepo packages TypeScript to 5.6.3: #​72625
  • Bump @capsizecss/metrics to 3.4.0 for Geist Google Font: #​72746
  • refactor: remove unused asNotFound property: #​72585
  • Remove unused enabled config from server actions transforms: #​72755
  • Ensure Next.js is ignore-listed when used as external: #​72498
  • Bump eslint-plugin-react to 7.37.0: #​72759
  • upgrade amphtml-validator to 1.0.38: #​72645
  • fix multi-level redirect in server actions: #​72770
  • refactor: rename error boundary not-found to http-error-fallback: #​72586
  • Upgrade React from 5c56b873-20241107 to 7ac8e612-20241113: #​72768
  • Re-use randomly selected dev server port for automatic restarts: #​72771
  • Emit build error when "use cache" is used without dynamicIO enabled: #​72781
  • fix: not found bounary prop: #​72784
  • silence sass legacy-js-api warning: #​72632
  • [Segment Prefetch] Move access token to route tree: #​72775
  • Add internal affordances to show ignore-listed stackframes in terminal: #​72763
  • chore(turbopack): Centralize reqwest TLS feature configs in turbo-tasks-fetch: #​72526
  • Upgrade React from 7ac8e612-20241113 to 380f5d67-20241113: #​72819
  • Shorten unsourcemapped absolute locations in terminal stacktraces: #​72764
  • codemod: replace revalidate(Tag|Path) to expire(Tag|Path): #​72826
  • "Fix": Lift type check out of loop: #​72840
  • hide stack trace in CanaryOnlyError: #​72859
  • Allow missing CacheNodeSeedData during prefetch: #​72857
  • Add Segment Cache feature check to prefetch API: #​72861
  • Extract shared fetchFromServerResponse logic to separate functions: #​72865
  • [Segment Cache] Implement behavior on cache miss : #​72841
  • Emit build error for unknown cache kinds: #​72832
  • Resolve mdx plugins string format: #​72802
  • MDX: Only set experimental.turbo if enabled: #​72856
  • [Turbopack] change persistent caching option to a boolean: #​72458
  • refactor: generalize next route error helpers: #​72774
  • Ensure host is in allowed headers: #​72867
  • refactor: types for collected cache info in route modules: #​71434
  • feat(turbopack): Enable tree shaking for modules with dynamic imports: #​71692
  • Fix unhandled rejection in proxy-request: #​72530
  • chore(build): remove injecting fast refresh to custom loader logs: #​72870
  • ensure webpack worker exits bubble to parent process: #​72921
  • Fix sourcemaps for internal client boundaries: #​72922
  • Turbopack: thread tracing through to resolve results: #​72314
  • Upgrade vercel og: #​72954
  • Turbopack NFT: trace manifests and externals: #​72316
  • Turbopack: NFT followups: #​72517
  • Support custom servers with minimal node modules: #​72966
  • Add support for ignore-listing sources in index maps: #​72913
  • Turbopack: fix loading of externals on Edge: #​72349
  • Bump SWC used for transpiling Next.js sources: #​72993
  • fix: ensure HTML validity for the next-size-adjust meta tag: #​72994
  • Revert "Support custom servers with minimal node modules": #​73003
  • Allow CacheNode.loading to be a promise: #​72872
  • Properly encode dynamic access in segment prefetch: #​72874
  • [Segment Cache] Send during route prefetch: #​72890
  • fix(next/image): improve svg heuristic for unoptimized: #​72970
  • [Segment Cache] Initial implementation: #​72875
  • Turbopack: Change edge wrapper to proxy exports : #​72502
  • experimental: css inlining: #​72195
  • Display where the env was loaded from when enabled typedEnv: #​70951
  • create forked impl for Link component: #​73019
  • remove unnecessary handling in forked Link components: #​73020
  • Pass down ignored field to error overlay: #​72925
  • remove locale from app link: #​73052
  • fix: server action redirects between multiple root layouts: #​73063
  • Add forbidden and unauthorized APIs: #​72785
  • chore: rename modules for better meaning and searching: #​73067
  • fix(next/image): reduce avif sharp effort from 4 to 3 for faster encoding: #​73030
  • (E2E) Log which config file is used for next start: #​73105
  • Remove extra space in envionment log: #​73108
  • remove inheritance from NextCustomServer: #​73005
  • Align navigation digest with message: #​73074
  • refactor: move redirect helpers into separate module: #​73118
  • Update font data: #​73115
  • Current behavior for fallbacks with async metadata and prefetching: #​73106
  • Revert "ensure webpack worker exits bubble to parent process (#​72921)": #​73136
  • Reapply "ensure webpack worker exits bubble to parent process (#​72921)": #​73138
  • Upgrade React from 380f5d6-20241113 to b01722d-20241114: #​73107
  • Implement metadata types support for exactOptionalPropertyTypes: #​72936
  • Reenable otel test for Turbopack: #​73093
  • Omit unnecessary cache wrapper import: #​73160
  • Increase max cache tags to 128: #​73124
  • Do not inline CSS in RSC payload for dynamic client nav: #​73182
  • fix(next/image): dpl query string should only be used for local images, not remote images: #​73184
  • feat(after): unflag unstable_after internals: #​73190
  • feat(after): allow using unstable_after in generateStaticParams: #​73217
  • Error on navigation API usage in pages router and middleware: #​73100
  • Undeprecate revalidate APIs and rename expire APIs: #​73193
  • Revert "codemod: replace revalidate(Tag|Path) to expire(Tag|Path)": #​73269
  • feat(after): wait for after-callbacks before server shutdown: #​72590
  • Fixed interception on a catch-all route: #​72902
  • add option to disable experimental CssChunkingPlugin: #​73286
  • rename cssChunkPlugin experimental options: #​73291
  • Replace the group frames with button for ignored frames: #​72964
  • handle pages router ignored frames: #​73280
  • fix(after): no request APIs in force-static: #​73321
  • fix(after): allow reading draftMode status in after: #​73324
  • [Turbopack] reland refactor filesystem writes to an effect based system: #​73294
  • fix(pages): dynamic css missing style after client navigation: #​72959
  • Make notFound() work in "use cache" page: #​73210
  • refactor(after): remove unnecessary conditionals: #​73447
  • Bump @swc/core to 1.9.3: #​73420
  • fix: running cleanup before server is initialized: #​73476
  • [edge-runtime] drop node16: #​73432
  • feat(after): allow request APIs in after (actions/handlers): #​73345
  • Sourcemap errors logged in Edge runtime: #​73438
  • refactor: rename ALS instances to prevent bad auto imports: #​73480
  • Show a proper error if a server function's bound args cannot be serialized: #​73471
  • remove unnecessary internal middleware header from response: #​73482
  • Ensure Issue Overlay sourcemaps externals in Turbopack: #​73439
  • Fix missing error message in terminal for bound args serialization error: #​73508
  • fix: memory leak from warnOnce(): #​73483
  • Upgrade React from b01722d5-20241114 to 1b1283ad-20241203: #​73506
  • Fix: Importing an ESM file from next/dist/client/.js fails: #​73485
  • fix: fixed dedupe response cloning: #​73274
  • Upgrade React from 1b1283ad-20241203 to de68d2f4-20241204: #​73525
  • fix(after): improve error message if promise arg rejects: #​73524
  • feat: added compression to resume data cache using deflate: #​73227
  • Use React 19 stable in Pages Router: #​73562
  • Use stable @types/react: #​73563
  • Cache the bound args encryption result for inline server functions: #​73521
  • chore: remove non-existent hash fragments from URLs: #​73165
  • next-upgrade: Ensure highest versions are used not latest: #​73566
  • Upgrade React from de68d2f4-20241204 to 1c9b1387-20241204: #​73565
  • Use consistent error formatting in terminal: #​71909
  • [Segment Cache] Interception routes: #​73434
  • Upgrade to typescript 5.7: #​73594
  • [Segment Cache] Use LRU to manage cache data : #​73486
  • [Segment Cache] Add isPartial to segment prefetch : #​73528
  • Fix missing client reference manifest error when using route groups: #​73606
  • feat(after): stabilize unstable_after: #​73605
  • [Segment Cache] Add isHeadPartial: #​73530
  • fix: do not add suffix for sitemap under group routes: #​73570
  • Dynamic IO: Improve error handling: #​73607
  • fix: Update @​swc/helpers: #​73666
  • Upgrade React from 1c9b1387-20241204 to 7283a213-20241206: #​73608
  • next-codemod(upgrade): handle absence of scripts in package.json: #​73688
  • Add inlineCss trade-offs/gotchas and remove canary check: #​73609
  • Ignore-list stack frames in node_modules even if not explicitly ignore-listed by their sourcemaps: #​73689
  • Remove ignore for anonymous stack frame: #​73610
  • test: move HMR Error Recovery test to a separate file: #​73592
  • test: move HMR basic test to a separate file: #​73612
  • fixes webpack persistent caching in development and add test case for persistent caching: #​73697
  • fix: empty generateStaticParams should still create an ISR route: #​73358
  • Limit the number of concurrently open file watchers on macos: #​73741
  • fix: warnOnce() lru: #​73742
  • [Segment Cache] Respond with 204 on cache miss: #​73649
  • [Segment Cache] Skip dynamic request if possible: #​73540
Example Changes
  • example: add more files to playwright .gitignore: #​72447
  • examples: update app-dir-i18n-routing to v15: #​72636
  • chore(example): add example for image optimization with secure compute: #​72641
  • examples: update app-dir-i18n-routing to v15: #​72642
  • examples: polish some README.md: #​72117
  • examples(with-supabase): fix action type error: #​72783
  • use explicit resource management for sandbox: #​72780
  • update: remove unnecessary in Dockerfile: #​72534
  • Fix Mongoose example failed build due to env variable not found: #​72918
  • (example) using await params when dynamic routing: #​72896
  • Updated the example of with-styled-jsx-scss to utilize the App Router.: #​70567
  • Updated the example of with-styled-jsx-plugins to utilize the App Router: #​70663
  • Updated the example of with-unstated to utilize the App Router.: #​73211
  • updated with-react-foundation example to utilize the App router.: #​73243
  • updated with-plausible example to utilize the app router.: #​73255
  • updated with-cssed example to utilize the app router.: #​73348
  • updated with-babel-macros example to utilize the app router.: #​73347
  • updated image-legacy-component example to utilize the app router.: #​73344
  • updated with-styletron example to utilize the app router.: #​73252
  • updated with-context-api example to utilize the App Router.: #​73316
  • updated with-mqtt-js example to utilize the App Router.: #​73303
  • chore(examples): update api-routes-cors: #​73408
  • chore: release turbopack npm packages: #​73443
  • examples: remove app-dir in i18n-routing directory name: #​73453
  • examples: move Postgres example: #​73531
  • Bump examples/** Eslint to v9: #​73560
  • Update with next sass example: #​73548
  • examples: remove next-env.d.ts files: #​73673
  • examples: update with-sass README.md: #​73668
  • examples: remove next-offline example: #​73675
  • examples: remove the old files from with-postgres: #​73587
  • examples: remove with-emotion-* directories: #​73674
  • updated with-ionic-typescript example to utilize the App Router.: #​73418
  • examples: update with-styletron README.md: #​73411
  • examples: update with-babel-macros README.md: #​73410
  • examples: update with-plausible README: #​73305
  • examples: unify related CMS examples in README: #​73247
  • examples: fix view source pathname at image-legacy-component: #​73414
  • examples: remove with-styled-components-babel: #​73229
  • examples: replaced GTM component with GA in Google Analytics example: #​73597
  • examples: introduce LaunchPad in strapi: #​73244
  • examples: remove with-storybook-styled-jsx-scss: #​73228
Misc Changes
  • Revert "[Turbopack] add rocksdb": #​72505
  • [Docs]: Remove try catch and link to error handling docs: #​72500
  • [Turbopack] improve performance of the trace server: #​71661
  • Docs: Move next.config.js API pages under a config folder, fix headings in TS and ESLint config pages: #​72465
  • Skip canary checks during internal development with VSCode: #​72504
  • Devlow snowflake backend: use milliseconds instead of seconds for event time: #​72490
  • [Turbopack] add TODO comment: #​72510
  • docs: unify the header deps by removing #: #​72451
  • fix: remove unnecessary fragment: #​72492
  • Fix grammatical error: remove unnecessary 'a' in 03-server-actions-and-mutations.mdx: #​72496
  • docs: fix broken link: #​72169
  • codemod(turbopack): Replace return Err(anyhow!()) with anyhow::bail!(): #​72487
  • Upgrade React from 66855b96-20241106 to 5c56b873-20241107: #​72469
  • fix(turbopack): Remove self-references from tree shaking results: #​72567
  • Turbopack: Don't run PostCSS on internal assets: #​72579
  • Update swc_core to v5.0.4 from v5.0.1: #​72604
  • (e2e) module-level patchFileDelay flag: #​72439
  • docs: remove unstable_after from Dynamic APIs: #​72595
  • chore: release turbopack npm packages: #​72491
  • Include bound args param in server reference information byte arg mask: #​72588
  • [Turbopack] fix bug where task was not recomputed when stale: #​72509
  • CNA: prompt enable turbopack value to true: #​72616
  • docs(use-cache): add missing function to page component examples: #​72620
  • docs(data-fetching): fix static params as promise examples : #​72565
  • Re-enable fetch logging test - HMR: #​72640
  • [Turbopack] migrate benchmark to new backend: #​72457
  • test: add wait for the error page navigation: #​72760
  • CNA: use eslint 9: #​72762
  • CNA: replace geist font from local to google: #​72618
  • fix(turbopack): Depend on side effect from import binding: #​72601
  • chore: keep create-next-app messages and docs the same: #​72444
  • ci: flake detection should run in both bundlers: #​72773
  • [Turbopack] reduce nesting: #​72747
  • docs: update file structure: #​72748
  • chore(cna): switch to .mjs tailwind config: #​72124
  • [Turbopack] fix collectibles counting and aggregation: #​72609
  • [Turbopack] implement dispose root task: #​72611
  • feat(turbopack): Merge single-pointer nodes in reverse direction: #​72571
  • test: fix hydration error on not-found test texture: #​72818
  • docs(turbo-tasks): Improve RcStr docs: #​72825
  • fix(turbopack): type error when "dynamic_embed_contents" is on: #​72828
  • [Turbopack] make issue ordering stable: #​72751
  • refactor(turbopack): Use ResolvedVc for turbopack crate: #​72791
  • refactor(turbo-tasks): Simplify most type bounds on Vc and related types: #​72823
  • fix(turbopack): Fix CSS Module renaming behavior for @container: #​72607
  • refactor(turbopack): Cleanup tree shaking graph logic: #​72836
  • [Turbopack] fix hanging waiting on in progress cells: #​72758
  • [Turbopack] avoid writing manifests in data/rsc variant of page: #​72767
  • Consolidate server actions transform errors into emit_error function: #​72811
  • refactor(turbo-rcstr): Move turbo_tasks::RcStr into it's own crate: #​72858
  • Add explicit section about type overriding for v15: #​72866
  • refactor(turbopack): Use ResolvedVc for turbopack-ecmascript: #​72564
  • refactor(turbopack): Use graph for server action workaround: #​72812
  • [Turbopack] refactor filesystem writes to an effect based system: #​72847
  • Fix sourcemaps for async Turbopack chunks: #​72827
  • docs(turbopack): Document build dependency on clang for rocksdb: #​72493
  • Clarify how MDX plugins are supported in Turbopack: #​72917
  • Turbopack: Don't replace constant conditions with sideeffects: #​72608
  • [Turbopack] fix effects tracing: #​72928
  • docs: fix code block language in redirecting docs: #​72944
  • docs: fix code block language in error pages: #​72943
  • docs: update "Migrate to async Dynamic APIs" docs: #​72852
  • Fix broken link to the rootDir doc: #​72893
  • docs: use relative urls: #​72941
  • docs: add the section titles to error page: #​72942
  • simplify vapid key generation docs: #​72916
  • docs: add and unify notes to error pages: #​72838
  • feat(turbopack): Implement module walking for side effect optimization: #​71241
  • docs: remove deprecated frameborder, adjust allowFullScreen and update the demo: #​72644
  • docs: fix code block language: #​72839
  • Docs: Changing information about data fetching cache: #​72301
  • Turbopack: apply effects in tests: #​72952
  • doc: remove internal customServer flag from custom server docs: #​72962
  • codemod(turbopack): Some more script-generated migrations to ResolvedVc: #​72889
  • Consolidate FnExpr and FnDecl server function transforms: #​72960
  • Allow method properties to be server functions: #​72969
  • Include debug script in test directories: #​72992
  • docs(sitemap): remove extra 's': #​73023
  • chore(turbopack-core): Delete dead all_modules_and_affecting_sources helper function: #​73016
  • [Turbopack] concurrent write batches and little endian encoding: #​72929
  • Remove unused retry around browser.eval: #​72999
  • [Turbopack] Invalidation and Persisting fixes: #​72950
  • docs: missing await when using params: #​73044
  • docs: incorrect params.id: #​73045
  • Remove hardcoded timeouts in Redbox test helpers: #​73000
  • perf(turbopack): Enable merging of export fragments: #​72813
  • Turbopack build: Add bench for Turbopack cache: #​73040
  • 🍪 Understanding Cookie Behavior in Server Components: #​73001
  • docs: add Fleek's Next.js template: #​72988
  • docs(fetch): clarify default fetch behavior: #​72982
  • docs: update staleTimes.mdx: #​72967
  • docs: Redirecting fix route handler path: #​72617
  • Rename waitForAndOpenRuntimeError to openRedbox: #​72996
  • Revert "docs: add Fleek's Next.js template": #​73054
  • fix benchmark directory: #​73057
  • hmr-test waits for compile signal: #​73064
  • docs(next-config): add experimental inline css docs: #​73070
  • docs: update tags when upgrading from 13 to 14: #​73071
  • docs: fix static params as promise examples: #​72553
  • fix: missing await, missing type Promise: #​73088
  • Disallow multiple server directives at the same level (file or function): #​73018
  • Docs: Add canary tags to expirePath and expireTag: #​73096
  • docs: update pages automatic static optimization rendering page: #​72545
  • docs(authentication): fix typescript code example: #​72533
  • docs: add details on React Compiler annotations with "use memo": #​73053
  • docs: fix code block language on redirecting docs: #​73073
  • docs(routing): update params type to be async (v15): #​73111
  • docs: clarify Switching to Dynamic Rendering section: #​73113
  • Method/function props of exported objects are not server functions: #​73058
  • Forbid this and arguments in server functions: #​73059
  • port turbopack-swc-utils to ResolvedVc: #​73086
  • port turbopack-mdx to use ResolvedVc: #​73080
  • feat: Update lightningcss to v1.0.0-alpha.61: #​73161
  • port turbopack-resolve to ResolvedVc: #​73083
  • move turbopack-image to ResolvedVc: #​73079
  • Turbopack: more tracing spans: #​73010
  • Handle server function directives in class methods: #​73060
  • 15.1 docs: forbidden, unauthorized, and authInterrupts: #​73039
  • Enable another Turbopack build test: #​73166
  • CNA: replace .eslintrc.json with eslint.config.mjs: #​73162
  • Turbopack: don't compute all paths for builds: #​73036
  • perf(turbopack): Use ResolvedVc for turbopack-css: #​73172
  • Revert change to ReactRefreshRequire test: #​73186
  • chore(CI): Remove sysroot override for macos arm64: #​73188
  • docs: Improve Accuracy and Type Safety on Data Fetching Examples: #​73122
  • docs: eslint flat config: #​73167
  • perf(turbopack): Use ResolvedVc for turbopack-core: #​73065
  • perf(turbopack): Use ResolvedVc for turbopack, turbopack-tests, turbopack-wasm: #​73196
  • perf(turbopack): Use ResolvedVc for turbopack-nodejs: #​73200
  • perf(turbopack): Use ResolvedVc for turbopack-env: #​73202
  • Getting Started Docs: Add new "Layouts and Pages" page: #​73049
  • Docs: forbidden and unauthorized nits: #​73213
  • Turbopack: make client references actual references: #​73174
  • Docs: Update turbopack API Reference: #​73215
  • Update authentication docs to use useActionState: #​72503
  • Don't hoist a server function if a compile error was emitted: #​73189
  • Forbid super in static class methods with server function directives: #​73061
  • port turbopack-node to ResolvedVc: #​73082
  • port turbopack-static to ResolvedVc: #​73084
  • perf(turbopack): Use ResolvedVc for next-api, part 1: #​73234
  • Pin undici in tests: #​73263
  • Turbopack: use try_join instead of future::try_join_all: #​73261
  • docs(server-actions): add missing formData type: #​73257
  • perf(turbopack): Use ResolvedVc for next-api, part 2: #​73235
  • docs: update static-tweet to react-tweet: #​73253
  • docs(fetching): params to await params: #​73254
  • convert let keyword to const keyword to data fetching and caching example: #​73251
  • [Turbopack] instead of depending on all env vars, track them via Proxy in webpack loaders: #​73112
  • docs: update the demo link of kontent.ai: #​73250
  • Docs: Fix headings in Layouts and Pages: #​73268
  • remove ResolvedVc from trait functions: #​73270
  • perf(turbopack): Use ResolvedVc for next-api, part 3: #​73236
  • [Turbopack] Revert "refactor filesystem writes to an effect based system": #​73287
  • Devlow: exit with non-zero code on failure: #​73276
  • perf(turbopack): Use ResolvedVc for next-api, part 4: #​73237
  • perf(turbopack): Use ResolvedVc for turbopack-browser: #​73198
  • perf(turbopack): Use ResolvedVc for next-core: #​73177
  • perf(turbopack): Use ResolvedVc for next-api, part 5: #​73238
  • test: reduce number of rendering loop causing flakiness: #​73277
  • Turbopack build: Fix css-minify test: #​72990
  • chore(turbo-tasks): Add a lint for Vc<T> in turbo-tasks types: #​73298
  • docs: add await before headers() and cookies() calls: #​73315
  • port turbopack-ecmascript to ResolvedVc: #​73226
  • test: fix canary test with 18.3.1: #​73327
  • Pin version of nwsapi (revert later): #​73351
  • fix Turbopack devlow bench: #​73278
  • Revert "Pin version of nwsapi (revert later)": #​73353
  • [Turbopack] Performance improvements for Persistent Caching: #​73265
  • refactor(turbopack): Use ResolvedVc<T> for struct fields in next-core: #​73310
  • refactor(turbopack): Use ResolvedVc<T> for struct fields in turbopack-ecmascript: #​73302
  • refactor(turbopack): Use ResolvedVc<T> for struct fields in turbopack-css: #​73300
  • refactor(turbopack): Use ResolvedVc<T> for struct fields in next-api, part 1: #​73366
  • docs: add missing default to page component examples: #​73233
  • Documentation Fix: Typo and URL Correction: #​73397
  • [Turbopack] Custom persistence layer: #​73029
  • chore(cna): add .pnpm-debug.log* to all cna gitignore: #​73446
  • cna: update .gitignore to ignore all .env files: #​73415
  • chore(turbo-tasks): improve ast-grep lint time: #​73440
  • [Turbopack] fix mmap advise on windows: #​73462
  • Getting Started docs: Images and Fonts: #​73340
  • Add mention of changing debugWithEdge to debugWithChrome.: #​73409
  • docs: Add note about remove of the swcMinify flag: #​73281
  • docs(typo): fix typos in file conventions, functions, and errors: #​73376
  • add more ResolvedVc best-practices lints: #​73331
  • docs: sort and update CMS examples: #​73295
  • Allow passing a nonce to google tag manager related script: #​73370
  • Getting Started Docs: CSS: #​73341
  • Getting Started docs: Fetching and Streaming: #​73352
  • Getting Started Docs: Images and Fonts feedback: #​73470
  • prevent accidentally re-creating ResolvedVc via deref by using a deprecated fn: #​73428
  • refactor(turbopack): Disable tree shaking by default: #​73421
  • [Turbopack] fix race condition in database compaction: #​73495
  • fix unnecessary to_resolved calls in test cases: #​73501
  • [Turbopack] small minor performance improvements for dirtyness tracking and scheduling: #​73494
  • turbopack-cli: Use correct fs and env for builds: #​73487
  • fix some trivial cases of to_resolved being used in a loop: #​73435
  • refactor(turbopack): Use ResolvedVc<T> for struct fields in turbopack-core: #​73301
  • refactor(turbopack): Use ResolvedVc<T> for struct fields in turbo-tasks: #​73371
  • refactor(turbopack): Use ResolvedVc<T> for trivial struct fields: #​73372
  • test: Enable tree shaking tests: #​73541
  • [Turbopack] fix incorrect task access for Persistent Caching: #​73549
  • [Turbopack] more debugging options for Persistent Cache: #​73550
  • sync-react: Add affordance to stop syncing Pages Router: #​73533
  • Remove unused React 17 install: #​73534
  • create-next-app: Use stable React 19 types: #​73569
  • Fix PostCSS dependency message handling: #​73529
  • docs: update the outdated generate sitemaps doc with versioned changes: #​73547
  • [Turbopack] add telemetry for persistent caching usage: #​73554
  • docs: fix forbidden file paths: #​73575
  • docs(composition-patterns): add missing React.ReactNode type in layout.tsx example: #​73577
  • test: replace check to retry in hmr.test.ts: #​73590
  • chore(docs): mention uses for unoptimized: #​73604
  • test: fix next-sass test: #​73633
  • refactor(turbopack): Use ResolvedVc<T> for struct fields in extra crates: #​73451
  • refactor(turbopack): Use ResolvedVc<T> for struct fields in next-api, final part: #​73367
  • docs: Fix image component API reference parsing: #​73658
  • docs: fix code block language in images-and-fonts docs: #​73492
  • fix(turbopack): Fix deprecation warnings from unnecessary .to_resolved() calls: #​73631
  • [Turbopack] replace EnvLayer with a faster filter: #​73614
  • [Turbopack] fix invalid source maps on HMR: #​72328
  • [Turbopack] include task name in dirty cause of output change: #​72574
  • 15.1 docs: React 19: #​73510
  • Docs: Add canary page to upgrade guides: #​73518
  • [Turbopack] change emit collectible to require ResolvedVc: #​73684
  • Fix failing tests: #​73707
  • test: move HMR Full Reload test to a separate file: #​73591
  • test: change with-next-sass to with-sass: #​73670
  • test: move HMR main test to a separate file: #​73611
  • [Turbopack] Introduce OperationVc that wraps operations: #​70242
  • chore(github): update stale issue periods: #​73709
  • test: update turbopack-dev-examples-manifest: #​73230
  • [Turbopack] use thread local trace collecting: #​73615
  • Skip build_and_deploy on docs-only changes: #​73659
  • 15.1 docs: request APIs in after: #​73692
  • [Turbopack] fix lmdb feature: #​73728
  • [Turbopack] cleanup and documentation: #​73496
  • Turbopack: Single-graph-traversal and migrate next/dynamic: #​73222
  • Docs: Getting Started Nits: #​73596
  • 15.1 docs: Add experimental tags to forbidden and unauthorized APIs: #​73513
  • 15.1 docs: stable after: #​73038
  • Turbopack: migrate server actions to single-graph-traversal: #​73260
  • re-enable middleware deploy tests: #​73744
  • docs(turbopack): Better document the Vc type, with references to ResolvedVc and VcOperation: #​72524
  • test: fix type error in segment-cache-basic test: #​73755
Credits

Huge thanks to @​sokra, @​molebox, @​delbaoliveira, @​eps1lon, @​wbinnssmith, @​JamBalaya56562, @​hyungjikim, @​adrian-faustino, @​mottox2, @​lubieowoce, @​bgw, @​mknichel, @​wyattjoh, @​huozhi, @​kdy1, @​mischnic, @​ijjk, @​icyJoseph, @​acdlite, @​unstubbable, @​gaojude, @​devjiwonchoi, @​cena-ko, @​lforst, @​devpla, @​samcx, @​styfle, @​ztanner, @​Marukome0743, @​timneutkens, @​JeremieDoctrine, @​ductnn, @​karlhorky, @​reynaldichernando, @​chogyejin, @​y-yagi, @​philparzer, @​alfawal, @​Rhynden, @​arlyon, @​MJez29, @​Goodosky, @​themattmayfield, @​tobySolutions, @​kevinmitch14, @​leerob, @​emmanuelgautier, @​mrhrifat, @​lid0a, @​boar-is, @​nisabmohd, @​PapatMayuri, @​ovogmap, @​Reflex2468, @​LioRael, @​betterthanhajin, @​HerringtonDarkholme, @​bpb54321, @​ahmoin, @​Kikobeats, @​abdelrahmanAbouelkheir, @​lumirlumir, @​yeeed711, @​petter, and @​suu3 for helping!

v15.0.4

Compare Source

[!NOTE]
This release is backporting changes. It does not include all pending features/changes on canary.

Core Changes
Credits

Huge thanks to @​eps1lon

v15.0.3

Compare Source

Core Changes
  • Read page name from work store in server module map proxy: #​71669
  • codemod: should not transform when param is not used: #​71664
  • [dynamicIO] complete refactor to prerender: #​71687
  • fix: metadata image route normalize path posix for windows: #​71673
  • next-codemod(upgrade): optional catch when missing dev script: #​71598
  • Avoid server action function indirection in Turbopack: #​71628
  • fix: exclude basePath in findSourceMapURL: #​71719
  • fix: stack frame text color in dark mode: #​71656
  • Fix: revert the bad node binary handling: #​71723
  • next-codemod: add empty pnpm-workspace.yaml to test fixtures to bypass PNPM workspace checks: #​71726
  • warn on sync access if dynamicIO is not enabled: #​71696
  • Update React from 69d4b800-20241021 to 45804af1-20241021: #​71718
  • next-upgrade: do not add --turbopack flag when --turbo exists in next dev: #​71730
  • feat: stitch errors with react owner stack: #​70393
  • [dynamicIO] update data access error and documentation: #​71738
  • Test cached form action with revalidate: #​71591
  • Upgrade React from 45804af1-20241021 to 28668d39-20241023: #​71745
  • Fix race condition when setting client reference manifests: #​71741
  • Fix fetch with no-store inside of use cache: #​71754
  • Remove the bottom collapse button in dev overlay: #​71658
  • [dynamicIO] unify cache filling and lazy-module warming: #​71749
  • Don't filter out source location frames through RSC: #​71752
  • fix undefined default export error msg: #​71762
  • Upgrade React from 28668d39-20241023 to 1631855f-20241023: #​71769
  • Enable owner stack in experimental build: #​71716
  • feat: add experiment for sharpjs cpu flags: #​71733
  • fix: handle server component replay error in error overlay: #​71772
  • Don't error asking for prebuilt bundles: #​71778
  • Replace turbopack://[project]/... sourcemap uris with file://... in development: #​71489
  • misc: update source map paths for bundled Next.js runtime: #​71779
  • [dynamicIO] refine error message and docs: #​71781
  • next-upgrade: change --turbo to --turbopack if applicable: #​71737
  • Show all diff when uncollapse: #​71792
  • Sourcemap errors in terminal by default : #​71444
  • Fully enable custom error callbacks for app router: #​71794
  • Simplify Server Action Webpack plugin: #​71721
  • ensure DIO development segment errors are cleared after correcting: #​71811
  • Include sourceframe in errors logged in the terminal during development: #​71803
  • [dynamicIO] update prerender cache scoping and cache warming for validation: #​71822
  • only force stack frame color in tty: #​71860
  • Add test for fetch with auth in use cache: #​71768
  • Fix race with hot-reloader-client clearing overlay errors: #​71771
  • Fix dynamic tracking in dev: #​71867
  • Revert "Sourcemap errors in terminal by default (#​71444)": #​71868
  • Fix fetch caching inside of "use cache": #​71793
  • Trace upload: only send traces for current session: #​71838
  • Reland "Sourcemap errors in terminal by default": #​71877
  • Implement information byte in Server Reference ID and other optimizations: #​71463
  • fix: webpack build error on Windows: #​71943
  • Run with --enable-source-maps by default in next dev: #​71820
  • fix global-error styles: #​71914
  • Use registerClientReference for ESM client component modules: #​71968
  • Fix missing await of params when metadata is used with an image file: #​71871
  • Upgrade React from 1631855f-20241023 to 02c0e824-20241028: #​71979
  • Populate sourcemap ignoreList when Webpack is used: #​71821
  • [dynamicIO] unify server and client prerender for non-ppr pathway: #​71764
  • codemod: add separator to the parenthenese expr: #​71993
  • Respect sourcemap's ignore list when printing errors in the terminal: #​71908
  • fix console color to be compatible in chrome devtools: #​71939
  • Delete obsolete codemod next-dynamic-access-named-export: #​72016
  • fix: log the error instance modified extra location info: #​71930
  • Compare error stack to dedupe error: #​71798
Example Changes
  • experimental.instrumentationHook is not necessary anymore: #​71808
  • Add Jude to nextjs team: #​71936
Misc Changes
  • docs: fix broken link in Architecture/Turbopack documentation: #​71412
  • test: migrate rest async api usage in tests: #​71663
  • fix: docs for dynamic routing in next 15: #​71531
  • Remove the 'new' keyword from the GET function sample code.: #​71671
  • chore: fix wrong path of comments: #​71682
  • docs(next-config): remove mention of appIsrStatus is on canary: #​71695
  • react-sync: Ignore update notices from npm: #​71717
  • Docs: Update default marker for fetch cache option: #​71728
  • [docs] Fix page.tsx parameter types: #​71680
  • [docs] Fix table.js containing TS code: #​71677
  • docs(ppr): update note about ppr: #​71697
  • docs lint: #​71748
  • fixes error message asserts and lints: #​71747
  • Fix docs for configuring Turbopack: #​71755
  • docs(turbo): add experimental icon to turbo config section: #​71761
  • feat(turbopack): Add __turbopack_original__ while tree shaking: #​71547
  • test: re-enable test with note: #​71789
  • Docs: Remove beta marker from Turbopack docs: #​71796
  • Update docs 1: #​71812
  • docs lint fixes: #​71813
  • docs: remove "use cache" on before code snippet: #​71815
  • Next docs broken links: #​71823
  • [Turbopack] add optimization based on upper count: #​71606
  • chore(turbo-tasks-backend): Use let instead of match for macro bindings: #​71756
  • chore(turbo-tasks-backend): Remove collapsible-if lints: #​71758
  • removing extra reference: #​71853
  • codemod(turbopack): Rewrite Vc fields in structs as ResolvedVc (part 3): #​71665
  • Update sync-dynamic-apis.mdx: #​71907
  • codemod(turbopack): Rewrite Vc fields in structs as ResolvedVc (part 4): #​71804
  • test: remove duplicated flaky test: #​71967
  • docs: Fix typo in cacheLife configs in use-cache docs: #​71921
  • Fix use cache example line highlights: #​71883
  • Allow breakpoints to be set in packages/next/src/compiled: #​71986
  • updated upgrade to v15 command in docs: #​71643
  • codemod(turbopack): Rewrite Vc fields in structs as ResolvedVc (part 5): #​71861
  • Clarify that streaming is blocked on generateMetadata for initial load: #​71985
  • Docs: Add legacy tags: #​71964
  • Docs: Fix broken link: #​72021
  • (docs) use cache: Add text code formatting: #​71999
  • docs: update file structure: #​71951
  • Documentation Fix: Correct cacheTag Function Usage: #​71912
  • correct expire calc & and Nested usage import in use-cache docs: #​71899
  • Docs: Address internal use cache comments : #​71981
  • Fix swc version mismatch when checking out an older version: #​71978
Credits

Huge thanks to @​ytori, @​unstubbable, @​huozhi, @​SebassNoob, @​tatsuteb, @​Marukome0743, @​gnoff, @​samcx, @​devjiwonchoi, @​imprakharshukla, @​migueldamota, @​eps1lon, @​ztanner, @​timneutkens, @​cantemizyurek, @​sebmarkbage, @​padmaia, @​ijjk, @​styfle, @​wbinnssmith, @​feedthejim, @​kdy1, @​shuding, @​molebox, @​ismaelrumzan, @​sokra, @​bgw, @​timeyoutakeit, @​AdonisAgelis, @​chicoxyzzy, @​gaojude, @​elitalpa, @​t3dotgg, @​gaearon, @​nisabmohd, @​gadcam, @​delbaoliveira, @​bennettdams, @​wiscaksono, and @​Developerayo for helping!

v15.0.2

Compare Source

Core Changes
  • Read page name from work store in server module map proxy: #​71669
  • codemod: should not transform when param is not used: #​71664
  • [dynamicIO] complete refactor to prerender: #​71687
  • fix: metadata image route normalize path posix for windows: #​71673
  • next-codemod(upgrade): optional catch when missing dev script: #​71598
  • Avoid server action function indirection in Turbopack: #​71628
  • fix: exclude basePath in findSourceMapURL: #​71719
  • fix: stack frame text color in dark mode: #​71656
  • Fix: revert the bad node binary handling: #​71723
  • next-codemod: add empty pnpm-workspace.yaml to test fixtures to bypass PNPM workspace checks: #​71726
  • warn on sync access if dynamicIO is not enabled: #​71696
  • Update React from 69d4b800-20241021 to 45804af1-20241021: #​71718
  • next-upgrade: do not add --turbopack flag when --turbo exists in next dev: #​71730
  • feat: stitch errors with react owner stack: #​70393
  • [dynamicIO] update data access error and documentation: #​71738
  • Test cached form action with revalidate: #​71591
  • Upgrade React from 45804af1-20241021 to 28668d39-20241023: #​71745
  • Fix race condition when setting client reference manifests: #​71741
  • Fix fetch with no-store inside of use cache: #​71754
  • Remove the bottom collapse button in dev overlay: #​71658
  • [dynamicIO] unify cache filling and lazy-module warming: #​71749
  • Don't filter out source location frames through RSC: #​71752
  • fix undefined default export error msg: #​71762
  • Upgrade React from 28668d39-20241023 to 1631855f-20241023: #​71769
  • Enable owner stack in experimental build: #​71716
  • feat: add experiment for sharpjs cpu flags: #​71733
  • fix: handle server component replay error in error overlay: #​71772
  • Don't error asking for prebuilt bundles: #​71778
  • Replace turbopack://[project]/... sourcemap uris with file://... in development: #​71489
  • misc: update source map paths for bundled Next.js runtime: #​71779
  • [dynamicIO] refine error message and docs: #​71781
  • next-upgrade: change --turbo to --turbopack if applicable: #​71737
  • Show all diff when uncollapse: #​71792
  • Sourcemap errors in terminal by default : #​71444
  • Fully enable custom error callbacks for app router: #​71794
  • Simplify Server Action Webpack plugin: #​71721
  • ensure DIO development segment errors are cleared after correcting: #​71811
  • Include sourceframe in errors logged in the terminal during development: #​71803
  • [dynamicIO] update prerender cache scoping and cache warming for validation: #​71822
  • only force stack frame color in tty: #​71860
  • Add test for fetch with auth in use cache: #​71768
  • Fix race with hot-reloader-client clearing overlay errors: #​71771
  • Fix dynamic tracking in dev: #​71867
  • Revert "Sourcemap errors in terminal by default (#​71444)": #​71868
  • Fix fetch caching inside of "use cache": #​71793
  • Trace upload: only send traces for current session: #​71838
  • Reland "Sourcemap errors in terminal by default": #​71877
  • Implement information byte in Server Reference ID and other optimizations: #​71463
  • fix: webpack build error on Windows: #​71943
  • Run with --enable-source-maps by default in next dev: #​71820
  • fix global-error styles: #​71914
  • Use registerClientReference for ESM client component modules: #​71968
  • Fix missing await of params when metadata is used with an image file: #​71871
  • Upgrade React from 1631855f-20241023 to 02c0e824-20241028: #​71979
  • Populate sourcemap ignoreList when Webpack is used: #​71821
  • [dynamicIO] unify server and client prerender for non-ppr pathway: #​71764
  • codemod: add separator to the parenthenese expr: #​71993
  • Respect sourcemap's ignore list when printing errors in the terminal: #​71908
  • fix console color to be compatible in chrome devtools: #​71939
  • Delete obsolete codemod next-dynamic-access-named-export: #​72016
  • fix: log the error instance modified extra location info: #​71930
  • Compare error stack to dedupe error: #​71798
Example Changes
  • experimental.instrumentationHook is not necessary anymore: #​71808
  • Add Jude to nextjs team: #​71936
Misc Changes
  • docs: fix broken link in Architecture/Turbopack documentation: #​71412
  • test: migrate rest async api usage in tests: #​71663
  • fix: docs for dynamic routing in next 15: #​71531
  • Remove the 'new' keyword from the GET function sample code.: #​71671
  • chore: fix wrong path of comments: #​71682
  • docs(next-config): remove mention of appIsrStatus is on canary: #​71695
  • react-sync: Ignore update notices from npm: #​71717
  • Docs: Update default marker for fetch cache option: #​71728
  • [docs] Fix page.tsx parameter types: #​71680
  • [docs] Fix table.js containing TS code: #​71677
  • docs(ppr): update note about ppr: #​71697
  • docs lint: #​71748
  • fixes error message asserts and lints: #​71747
  • Fix docs for configuring Turbopack: #​71755
  • docs(turbo): add experimental icon to turbo config section: #​71761
  • feat(turbopack): Add __turbopack_original__ while tree shaking: #​71547
  • test: re-enable test with note: #​71789
  • Docs: Remove beta marker from Turbopack docs: #​71796
  • Update docs 1: #​71812
  • docs lint fixes: #​71813
  • docs: remove "use cache" on before code snippet: #​71815
  • Next docs broken links: #​71823
  • [Turbopack] add optimization based on upper count: #​71606
  • chore(turbo-tasks-backend): Use let instead of match for macro bindings: #​71756
  • chore(turbo-tasks-backend): Remove collapsible-if lints: #​71758
  • removing extra reference: #​71853
  • codemod(turbopack): Rewrite Vc fields in structs as ResolvedVc (part 3): #​71665
  • Update sync-dynamic-apis.mdx: #​71907
  • codemod(turbopack): Rewrite Vc fields in structs as ResolvedVc (part 4): #​71804
  • test: remove duplicated flaky test: #​71967
  • docs: Fix typo in cacheLife configs in use-cache docs: #​71921
  • Fix use cache example line highlights: #​71883
  • Allow breakpoints to be set in packages/next/src/compiled: #​71986
  • updated upgrade to v15 command in docs: #​71643
  • codemod(turbopack): Rewrite Vc fields in structs as ResolvedVc (part 5): #​71861
  • Clarify that streaming is blocked on generateMetadata for initial load: #​71985
  • Docs: Add legacy tags: #​71964
  • Docs: Fix broken link: #​72021
  • (docs) use cache: Add text code formatting: #​71999
  • docs: update file structure: #​71951
  • Documentation Fix: Correct cacheTag Function Usage: #​71912
  • correct expire calc & and Nested usage import in use-cache docs: #​71899
  • Docs: Address internal use cache comments : #​71981
  • Fix swc version mismatch when checking out an older version: #​71978
Credits

Huge thanks to @​ytori, @​unstubbable, @​huozhi, @​SebassNoob, @​tatsuteb, @​Marukome0743, @​gnoff, @​samcx, @​devjiwonchoi, @​imprakharshukla, @​migueldamota, @​eps1lon, @​ztanner, @​timneutkens, @​cantemizyurek, @​sebmarkbage, @​padmaia, @​ijjk, @​styfle, @​wbinnssmith, @​feedthejim, @​kdy1, @​shuding, @​molebox, @​ismaelrumzan, @​sokra, @​bgw, @​timeyoutakeit, @​AdonisAgelis, @​chicoxyzzy, @​gaojude, @​elitalpa, @​t3dotgg, @​gaearon, @​nisabmohd, @​gadcam, @​delbaoliveira, @​bennettdams, @​wiscaksono, and @​Developerayo for helping!

v15.0.1

Compare Source

Core Changes
  • Reland "[dynamicIO] warn for disallowed dynamic in dev": #​71567
  • next-upgrade: prompt (un)install only when there's a change: #​71308
  • chore(next-codemod): remove @next/font from optional Next.js packages to install: #​71563
  • [dynamicIO] Avoid triggering memory leak false positive with makeHangingPromise: #​71576
  • Avoid triggering memory leak false positive with makeHangingPromise: #​71579
  • Upgrade React from 65a56d0e-20241020 to 69d4b800-20241021: #​71568
  • avoid logging stacks for internal errors: #​71575
  • Avoid server action endpoint function indirection: #​71572
  • fix: handle terminal color in chrome console: #​71581
  • [dynamicIO] Update prerender to use Fizz prerender: #​71580
  • misc(next-upgrade): reuse process.cwd() value: #​71558
  • [dynamicIO]: dev navigations should show disallowed dynamic errors: #​71595
  • next-lint: Use ESLint v9 by default: #​71371
  • fix: prevent router errors from being logged on the client: #​71583
  • fix: next package resolving in dev overlay: #​71632
  • Improve type coverage of setup-dev-bundler: #​71443
  • fix(turbo-tasks): Implement ValueDebugFormat for ResolvedVc: #​71173
  • Add --turbopack CLI flag: #​71657
  • [dynamicIO] detect metadata boundaries in dev using server component stacks: #​71666
Example Changes
  • chore: Update with-supabase to be compatible with Nextjs 15: #​71631
  • Update Sanity example to next v15: #​71640
Misc Changes
  • docs(ppr): remove v14 mention for ppr: #​71498
  • docs: fix upgrade codemod command: #​71578
  • Turbopack: Always use blob: URLs for assets in middleware: #​71471
  • fix: metadata image route Windows path escaping: #​71615
  • fix: third-parties package peer dependency: #​71620
  • Fix module_resolution: "nodenext" with mjs or cjs: #​71635
  • react-sync: Automatically update peer dependencies in libraries: #​71636
  • chore(docs): fix typo in image.mdx docs: #​71647
  • docs: remove the canary note on instrumentation: #​71649
  • test: fix async api tests: #​71652
  • Enable source maps for pnpm debug: #​71653
  • codemod(turbopack): Rewrite more Vc fields in structs as ResolvedVc: #​71172
Credits

Huge thanks to @​gnoff, @​devjiwonchoi, @​samcx, @​ztanner, @​unstubbable, @​huozhi, @​mischnic, @​lubieowoce, @​eps1lon, @​ivasilov, @​styfle, @​bgw, @​stipsan, and @​timneutkens for helping!

v15.0.0

Compare Source

Core Changes
  • refactor: next-flight-client-module-loader return conditions: #​64348
  • Fix Server Action error logs for unhandled POST requests: #​64315
  • Shared Revalidate Timings: #​64370
  • Freeze loaded manifests: #​64313
  • test: skip turbopack build test: #​64356
  • Fix: css in next/dynamic component in edge runtime: #​64382
  • Fix more Turbopack build tests: #​64384
  • use pathToFileUrl to make esm import()s work with absolute windows paths: #​64386
  • Improve rendering performance: #​64408
  • Fix the method prop case in Server Actions transform: #​64398
  • fix(next-lint): update option --report-unused-disable-directives to --report-unused-disable-directives-severity: #​64405
  • Revert "Fix: css in next/dynamic component in edge runtime": #​64442
  • default fetchCache to no-store when force-dynamic is set: #​64145
  • router restore should take priority over pending actions: #​64449
  • Fix client boundary inheritance for barrel optimization: #​64467
  • improve turborepo caching: #​64493
  • Update font data: #​64481
  • BREAKING CHANGE: remove deprecated analyticsId from config, and the corresponding performance-relayer files and tests: #​64199
  • feat: strip traceparent header from cachekey: #​64499
  • Fix typo in dynamic-rendering.ts: #​64365
  • fix(next): global not-found not working on multi-root layouts: #​63053
  • chore(next): add keywords on package.json: #​64173
  • Fix DynamicServerError not being thrown in fetch: #​64511
  • fix: lib/helpers/install.ts to better support pnpm and properly respect root argument: #​64418
  • fix(next): Metadata.openGraph values not resolving basic values when type is set: #​63620
  • disable production chunking in dev: #​64488
  • update turbopack: #​64501
  • Turbopack: Allow client components to be imported in app routes: #​64520
  • refactor: remove always truthy flag: #​64522
  • Turbopack: don’t show long internal stack traces on build errors: #​64427
  • next/script: Correctly apply async and defer props: #​52939
  • chore(next/font): update @​capsizecss/metrics package: #​64528
  • feat: add information that revalidate interval is in seconds: #​64229
  • Typo "Minifer" in config.ts: #​64359
  • Enhance types for Node and Edge envionments: #​64454
  • feat: Add a validation for postcss with useLightningcss: #​64379
  • fix HMR for cases where chunking changes: #​64367
  • perf: improve Pages Router server rendering performance: #​64461
  • Fix cjs client components tree-shaking: #​64558
  • fix refresh behavior for discarded actions: #​64532
  • fix: filter out middleware requests in logging: #​64549
  • chore: remove unused rust dependencies: #​62176
  • fix(next-swc): correctly set wasm fallback for known target triples: #​64567
  • memoize layout router context: #​64575
  • fix incorrect refresh request when basePath is set: #​64589
  • fix TypeError edge-case for parallel slots rendered multiple times: #​64271
  • Fix ASL bundling for dynamic css: #​64451
  • Revert "fix(next): global not-found not working on multi-root layouts": #​64601
  • chore(test): run related E2E deploy tests on MRs: #​63763
  • Improve top level await coverage: #​64508
  • Upgrade typescript to 5.3: #​64043
  • add pathname normalizer for actions: #​64592
  • Fix experimental/testmode by removing console.log: #​64670
  • Don't output .test.ts files in next/font: #​63472
  • Fix reporting when performance.measure doesn't exist (Edge): #​64669
  • Reduce amount of data passed to collectBuildTraces: #​59665
  • fix(next-server): 'quiet' setting delegate for custom server: #​64512
  • Revert "chore(test): run related E2E deploy tests on MRs": #​64682
  • update turbopack: #​64686
  • Fix: resolve mixed re-exports module as cjs: #​64681
  • Revert "fix TypeError edge-case for parallel slots rendered multiple times": #​64690
  • Fix typo: 'serverComponentsExtenalPackages' should be 'serverComponentsExternalPackages': #​64705
  • prevent erroneous route interception during lazy fetch: #​64692
  • Add @appsignal/nodejs to the external packages list: #​64503
  • fix root page revalidation when redirecting in a server action: #​64730
  • Clean-up fetch metrics tracking: #​64746
  • [actions] Enforce body limit using Transform stream: #​64694
  • Turbopack: Don’t show stack traces for internal modules: #​64228
  • Reapply "chore(test): run related E2E deploy tests on MRs" (#​64682): #​64712
  • fix(fetch-cache): fix typo: #​64786
  • fix: remove traceparent from cachekey should not remove traceparent from original object: #​64727
  • fix interception route rewrite regex not supporting hyphenated segments: #​64805
  • Disable ncc cache instead of cache cleaning: #​64804
  • Move next-swc Turborepo config to packages/next-swc: #​64789
  • build: Update swc_core to v0.90.33: #​64553
  • Enable loading source maps for Next Server and React: #​64527
  • fix: mixing namespace import and named import client components: #​64809
  • fext(next): extend next.config for mdxRs support options: #​64801
  • skip test_e2e_deploy_related when triggered from a fork: #​64893
  • fix(fetch-cache): fix additional typo, add type & data validation: #​64799
  • feat(next-core): support parsing matcher config object: #​64678
  • Fix mixed exports in server component with barrel optimization: #​64894
  • fix: improve tsconfig extends checks: #​61413
  • Fix next/image usage in mdx: #​64875
  • fix dynamic route interception not working when deployed with middleware: #​64923
  • feat(turbopack): Handle fragments in requests: #​64232
  • feat(turbopack): Check for duplicate parallel routes: #​64181
  • Speed up createNext test suite isolation: #​64909
  • fix(rewrites): support external rewrite destination: #​64943
  • Ensure edge prerender-manifest is minimal: #​64946
  • remove special-cased prefetch kind in dev mode: #​64941
  • feat: support import attributes: #​59480
  • NextJS App router: add isolated-vm to server-external-packages.json: #​64749
  • Add next experimental-test command: #​64352
  • Revert "feat: support import attributes": #​65001
  • NODE_OPTIONS updates: #​65006
  • Update React from 14898b6 to c3048aa: #​64798
  • initialize ALS with cookies in middleware: #​65008
  • feat(next/image)!: remove squoosh in favor of sharp as optional dependency: #​63321
  • fix: Workaround acorn bug/version issue by using SWC: #​65021
  • build: Update @swc/core to v1.5.0: #​65022
  • Ensure escaped string are parsed in NODE_OPTIONS: #​65046
  • chore(fetch-cache): remove zod from fetch cache: #​65079
  • support breadcrumb style catch-all parallel routes: #​65063
  • Improve initial setup with new App Router TypeScript project: #​64826
  • Add experimental trace file field: #​65071
  • Fix playwright config merging for webServer property: #​65090
  • chore(logging): Disable info logging of critters in production: #​62776
  • [unstable_cache] Don't track dynamic fetches in an unstable_cache callback: #​65010
  • fix(page-static-info): refine warning message to emit once: #​65091
  • update redirect handling on forwarded action requests: #​65097
  • Tracing: allow opt-in flag to send build traces to url: #​65019
  • Turbopack: Allow client components from foreign code in app routes: #​64751
  • fix node.js module warning in middleware: #​65112
  • Fix: strip _rsc query for client navigation rsc request: #​65084
  • fix unhandled runtime error when notFound() triggered in generateMetadata w/ parallel routes: #​65102
  • Use vercel deployment url for metadataBase fallbacks: #​65089
  • Fix next/dynamic with babel and src dir: #​65177
  • update turbopack: #​65191
  • Fix crypto import in edge runtime with Turbopack: #​65171
  • Resolve global next Webpack alias last: #​65123
  • Add oslo, @​node-rs/argon2, and @​node-rs/bcrypt to external packages: #​65204
  • [trace] Reduce the size of .next/trace files: #​65101
  • Remove extra suspense boundary for default next/dynamic: #​64716
  • Only apply metadata manifest credentials for preview deployment: #​64940
  • fix(next): add missing browser.major type: #​65185
  • Turbopack: rename source map prefix: #​64965
  • Use POST for invokeIpcMethod: #​65238
  • fix redirect to url with semicolon: #​65165
  • Provide non-dynamic segments to catch-all parallel routes: #​65233
  • Fix an issue parsing catchall params: #​65277
  • Enable preloading entries by default: #​65289
  • Trace uploader: add worker spans to allowed events: #​65255
  • Update font data: #​65301
  • Update revalidateTag to batch tags in one request: #​65296
  • Revert "Remove extra suspense boundary for default next/dynamic": #​65309
  • Emit polyfill-nomodule.js into the build manifest polyfillFiles: #​65223
  • Remove broken #[turbo_tasks::value(transparent)] attributes: #​65336
  • Delete dead concatenate_output_assets function: #​65337
  • Upgrade Turbopack: #​65320
  • Pages router: Use attribute-based head children reconciler when strictNextHead is enabled: #​65408
  • Revert "Implement Turbopack trace server bindings": #​65419
  • use correct not-found component when triggered from a parallel route: #​65343
  • Implement Turbopack trace server bindings: #​65410
  • fix(next/image): bypass icns images: #​65414
  • [PPR] Enable incremental adoption: #​63847
  • fix: replace deprecated/removed functions in eslint-plugin-next: #​64251
  • docs: update revalidatePath & fix cache debug logic: #​65365
  • fix(next-core): mark turbopack embed fs to be internals: #​65420
  • fix(next/image): add missing svg test and refactor missing types: #​65345
  • build(edge): extract buildId into environment: #​64521
  • Revert "build(edge): extract buildId into environment": #​65425
  • fix(next/image): set max url length to 3072: #​65457
  • Support React 19 in App and Pages router: #​65058
  • Promote and rename server bundling options serverComponentsExternalPackages and bundlePagesExternals: #​65421
  • add experimental flag to allow forcing NODE_ENV=development in builds: #​65463
  • Support esm externals in app router: #​65041
  • fix: lazy load sharp: #​65484
  • make sure children is first in loader tree to fix head css bug on client navigation: #​65279
  • Re-land build(edge): extract buildId into environment: #​65426
  • improve versioned content map: #​65466
  • update turbopack: #​65503
  • Remove ineffective webpack rules and unused app-page context modules: #​65321
  • add page name to crashes: #​65504
  • Bump styled-jsx to 5.1.3: #​65485
  • Preload all chunks for next/dynamic in SSR: #​65486
  • fix!: add sharp timeout of 10 seconds: #​65517
  • Turbopack: new graph aggregation: #​65206
  • feat(next): revise server component error message: #​65468
  • chore: update prettier to 3.2.5: #​65092
  • Revert "Remove ineffective webpack rules and unused app-page context modules": #​65558
  • Remove auto appending xml extension to dynamic sitemap routes: #​65507
  • Remove rsc esm client module extra exports: #​65519
  • Handle nonce on Next.js injected script/link tags: #​65508
  • Fix multi-zone test by removing dependency list: #​65589
  • remove next-action header when following a redirect: #​65615
  • Remove @​next/font resolving for font loaders: #​65601
  • remove legacy deprecated warnings: #​65579
  • feat(turbopack): add support for bundlePagesRouterDependencies: #​65520
  • fix(next-swc): load wasm fallback if native bindings fail to load: #​65623
  • fix(next-swc): correct path interop to filepath for wasm: #​65633
  • Add proper deprecation/rename warnings for server bundling option: #​65575
  • feat!(next/image): change default Content-Disposition to attachment: #​65631
  • Pages router: Enable strict next/head children reconciler by default: #​65418
  • Apply react-server conditions to middleware: #​65424
  • fix(next-swc): Do not reuse compiler instance: #​65602
  • Show the new key of experimental config change warnings: #​65651
  • fix(next-swc): Fix SWC env target - include option: #​65693
  • Reapply "Implement Turbopack trace server bindings" (#​65419): #​65527
  • fix(resolve-metadata): allow for search params in canonical URL: #​65366
  • Remove missingSuspenseWithCSRBailout config: #​65688
  • Reland Remove ineffective webpack rules and unused app-page context modules: #​65694
  • Remove swc minify related code branches: #​65690
  • fix: load the tags manifest asynchronously: #​64563
  • Bump acorn to replace swc class properties transform: #​65715
  • fix: watch experimental/testmode in when running "pnpm dev": #​65689
  • Revert "chore: externalize undici for bundling": #​65727
  • [ppr] Request normalization fixes: #​65717
  • fix(next/image)!: error when src has leading or trailing space: #​65637
  • fext(next-swc): extend internal env flag to all native bindings: #​65748
  • Update font data: #​65719
  • fix(next): add alias to new react exports: #​65761
  • Update font data: #​65768
  • feat: remove font family hashing in next/font css: #​53608
  • Add script to script loader when strategy prop is undefined: #​65585
  • fix: ensure websockets are correctly passed: #​65759
  • Add clientTraceMetadata experimental option to propagate tracing data to the client: #​64256
  • Remove process auto polyfill in edge runtime: #​65751
  • feat: support import attributes: #​65749
  • Turbopack: Remove EcmascriptChunkingContext: #​65716
  • Error in build for middleware when import client-only: #​65792
  • fix(next): reject protocol-relative URLs in image optimization: #​65752
  • Fix broken HTML inlining of non UTF-8 decodable binary data from Flight payload: #​65664
  • Bundle the installed react for middleware: #​65811
  • fix middleware cookie initialization: #​65820
  • fix(next/image)!: set upstream timeout to 7 seconds: #​65821
  • feat(turbopack-ecmascript): use import attributes for annotations: #​59370
  • feat(next): experimental react compiler support: #​65804
  • Fix the runtime for rsc layer: #​65850
  • Ensure React Compiler only runs on first-party browser code: #​65851
  • fix: bump nft@0.27.1: #​65854
  • add effect packages into the optimized-by-default list: #​65465
  • Upgrade react@beta: #​65845
  • Ensure plugin-syntax-jsx doesn't have to be installed: #​65865
  • Update React from 4508873 to 04b0588: #​65864
  • Set default stale-while-revalidate header value to 1 year: #​65867
  • fix missing experimental warning for reactCompiler: #​65866
  • Error on mismatched minimal react version: #​65806
  • Revert "Set default stale-while-revalidate header value to 1 year": #​65887
  • Update turbopack & swc_core: #​65450
  • Revert "Fix broken HTML inlining of non UTF-8 decodable binary data f…: #​65906
  • experimental: unstable_after: #​65038
  • Docs: Replace "twitter.com" to "x.com": #​65917
  • fix(next/image): prefer sharp defaults, use mozjpeg for JPEG: #​65846
  • Update font data: #​65961
  • unstable_after: support nested unstable_after calls: #​65950
  • Fix revalidateTimings route for catchall index route: #​65843
  • fix(next): initial prefetch cache not set properly with different search params: #​65977
  • Add additional log to experimental ppr flag in next.config.js: #​65944
  • Change default of prerenderEarlyExit to true: #​65830
  • short-circuit OPTIONS requests to pages: #​65295
  • Turbopack: Implement next/font/local with BeforeResolvePlugin and show custom error message: #​65870
  • [Breaking] Disable automatic static generation for route handlers: #​65825
  • Fix router.refresh missing canonical url override: #​65999
  • Fix typo in JSDoc of ppr flag of next.config.js: #​66028
  • Revert webpack bundling layer changes for middleware/pages: #​66049
  • Upgrade lightningcss, disable grid prefixing: #​65986
  • [Breaking] disable client router cache for page segments: #​66039
  • Add dedicated client entry for Turbopack builds: #​65824
  • Update React from 04b0588 to 81c5ff2 : #​65869
  • implement unstable_rethrow: #​65831
  • chore(next/image): remove unused output parameter: #​66083
  • next-swc-napi: Enable "plugin" feature by default: #​66006
  • [turbopack] Use updated RawOutput API: #​65300
  • Skip setting to fetch cache when not modified: #​66055
  • [Memory] Add option to reduce memory usage caused by duplicate strings in webpack-sources: #​66003
  • Ensure metadata routes dont skip static optimization: #​66097
  • [unstable_after] fix occasional dev-mode crash in edge runtime pages: #​66099
  • fix: ensure prefetch data routes are always added when app has ppr enabled: #​66102
  • [Breaking] Disable automatic fetch caching: #​66004
  • Update React from 81c5ff2 to f994737: #​66093
  • fix: ensure prefetch data routes are always added when app has ppr enabled: #​66102
  • [Breaking] Disable automatic fetch caching: #​66004
  • Update React from 81c5ff2 to f994737: #​66093
  • [ppr] Remove canary requirement: #​66112
  • [ppr] Data route fixes: #​66109
  • [unstable_after] always use 'waitUntil' from '@​next/request-context' if available: #​66119
  • Don't fail the build if @types/ packages appear to be missing: #​66127
  • Stabilize swrDelta config: #​66108
  • Revert "Don't fail the build if @​types/ packages appear to be missing": #​66130
  • fix(next): global not-found not working on multi-root layouts: #​63053
  • chore(next): add keywords on package.json: #​64173
  • Fix DynamicServerError not being thrown in fetch: #​64511
  • fix: lib/helpers/install.ts to better support pnpm and properly respect root argument: #​64418
  • fix(next): Metadata.openGraph values not resolving basic values when type is set: #​63620
  • disable production chunking in dev: #​64488
  • update turbopack: #​64501
  • Turbopack: Allow client components to be imported in app routes: #​64520
  • Turbopack: don’t show long internal stack traces on build errors: #​64427
  • next/script: Correctly apply async and defer props: #​52939
  • chore(next/font): update @​capsizecss/metrics package: #​64528
  • feat: add information that revalidate interval is in seconds: #​64229
  • Typo "Minifer" in config.ts: #​64359
  • Enhance types for Node and Edge envionments: #​64454
  • feat: Add a validation for postcss with useLightningcss: #​64379
  • fix HMR for cases where chunking changes: #​64367
  • perf: improve Pages Router server rendering performance: #​64461
  • Fix cjs client components tree-shaking: #​64558
  • fix refresh behavior for discarded actions: #​64532
  • fix: filter out middleware requests in logging: #​64549
  • chore: remove unused rust dependencies: #​62176
  • fix(next-swc): correctly set wasm fallback for known target triples: #​64567
  • memoize layout router context: #​64575
  • fix incorrect refresh request when basePath is set: #​64589
  • fix TypeError edge-case for parallel slots rendered multiple times: #​64271
  • Fix ASL bundling for dynamic css: #​64451
  • Revert "fix(next): global not-found not working on multi-root layouts": #​64601
  • chore(test): run related E2E deploy tests on MRs: #​63763
  • Improve top level await coverage: #​64508
  • Upgrade typescript to 5.3: #​64043
  • add pathname normalizer for actions: #​64592
  • Fix experimental/testmode by removing console.log: #​64670
  • Don't output .test.ts files in next/font: #​63472
  • Fix reporting when performance.measure doesn't exist (Edge): #​64669
  • Reduce amount of data passed to collectBuildTraces: #​59665
  • fix(next-server): 'quiet' setting delegate for custom server: #​64512
  • Revert "chore(test): run related E2E deploy tests on MRs": #​64682
  • update turbopack: #​64686
  • Fix: resolve mixed re-exports module as cjs: #​64681
  • Revert "fix TypeError edge-case for parallel slots rendered multiple times": #​64690
  • Fix typo: 'serverComponentsExtenalPackages' should be 'serverComponentsExternalPackages': #​64705
  • prevent erroneous route interception during lazy fetch: #​64692
  • Add @appsignal/nodejs to the external packages list: #​64503
  • fix root page revalidation when redirecting in a server action: #​64730
  • Clean-up fetch metrics tracking: #​64746
  • [actions] Enforce body limit using Transform stream: #​64694
  • Turbopack: Don’t show stack traces for internal modules: #​64228
  • Reapply "chore(test): run related E2E deploy tests on MRs" (#​64682): #​64712
  • fix(fetch-cache): fix typo: #​64786
  • fix: remove traceparent from cachekey should not remove traceparent from original object: #​64727
  • fix interception route rewrite regex not supporting hyphenated segments: #​64805
  • Disable ncc cache instead of cache cleaning: #​64804
  • Move next-swc Turborepo config to packages/next-swc: #​64789
  • build: Update swc_core to v0.90.33: #​64553
  • Enable loading source maps for Next Server and React: #​64527
  • fix: mixing namespace import and named import client components: #​64809
  • fext(next): extend next.config for mdxRs support options: #​64801
  • skip test_e2e_deploy_related when triggered from a fork: #​64893
  • fix(fetch-cache): fix additional typo, add type & data validation: #​64799
  • feat(next-core): support parsing matcher config object: #​64678
  • Fix mixed exports in server component with barrel optimization: #​64894
  • fix: improve tsconfig extends checks: #​61413
  • Fix next/image usage in mdx: #​64875
  • fix dynamic route interception not working when deployed with middleware: #​64923
  • feat(turbopack): Handle fragments in requests: #​64232
  • feat(turbopack): Check for duplicate parallel routes: #​64181
  • Speed up createNext test suite isolation: #​64909
  • fix(rewrites): support external rewrite destination: #​64943
  • Ensure edge prerender-manifest is minimal: #​64946
  • remove special-cased prefetch kind in dev mode: #​64941
  • feat: support import attributes: #​59480
  • NextJS App router: add isolated-vm to server-external-packages.json: #​64749
  • Add next experimental-test command: #​64352
  • Revert "feat: support import attributes": #​65001
  • NODE_OPTIONS updates: #​65006
  • Update React from 14898b6 to c3048aa: #​64798
  • initialize ALS with cookies in middleware: #​65008
  • feat(next/image)!: remove squoosh in favor of sharp as optional dependency: #​63321
  • fix: Workaround acorn bug/version issue by using SWC: #​65021
  • build: Update @swc/core to v1.5.0: #​65022
  • Ensure escaped string are parsed in NODE_OPTIONS: #​65046
  • chore(fetch-cache): remove zod from fetch cache: #​65079
  • support breadcrumb style catch-all parallel routes: #​65063
  • Improve initial setup with new App Router TypeScript project: #​64826
  • Add experimental trace file field: #​65071
  • Fix playwright config merging for webServer property: #​65090
  • chore(logging): Disable info logging of critters in production: #​62776
  • [unstable_cache] Don't track dynamic fetches in an unstable_cache callback: #​65010
  • fix(page-static-info): refine warning message to emit once: #​65091
  • update redirect handling on forwarded action requests: #​65097
  • Tracing: allow opt-in flag to send build traces to url: #​65019
  • Turbopack: Allow client components from foreign code in app routes: #​64751
  • fix node.js module warning in middleware: #​65112
  • Fix: strip _rsc query for client navigation rsc request: #​65084
  • fix unhandled runtime error when notFound() triggered in generateMetadata w/ parallel routes: #​65102
  • Use vercel deployment url for metadataBase fallbacks: #​65089
  • Fix next/dynamic with babel and src dir: #​65177
  • update turbopack: #​65191
  • Fix crypto import in edge runtime with Turbopack: #​65171
  • Resolve global next Webpack alias last: #​65123
  • Add oslo, @​node-rs/argon2, and @​node-rs/bcrypt to external packages: #​65204
  • [trace] Reduce the size of .next/trace files: #​65101
  • Remove extra suspense boundary for default next/dynamic: #​64716
  • Only apply metadata manifest credentials for preview deployment: #​64940
  • fix(next): add missing browser.major type: #​65185
  • Turbopack: rename source map prefix: #​64965
  • fix(next/image): detect react@19 for fetchPriority prop: #​65235
  • Use POST for invokeIpcMethod: #​65238
  • fix redirect to url with semicolon: #​65165
  • Provide non-dynamic segments to catch-all parallel routes: #​65233
  • Fix an issue parsing catchall params: #​65277
  • Enable preloading entries by default: #​65289
  • Trace uploader: add worker spans to allowed events: #​65255
  • Update font data: #​65301
  • Update revalidateTag to batch tags in one request: #​65296
  • Revert "Remove extra suspense boundary for default next/dynamic": #​65309
  • Emit polyfill-nomodule.js into the build manifest polyfillFiles: #​65223
  • Remove broken #[turbo_tasks::value(transparent)] attributes: #​65336
  • Delete dead concatenate_output_assets function: #​65337
  • Upgrade Turbopack: #​65320
  • Pages router: Use attribute-based head children reconciler when strictNextHead is enabled: #​65408
  • Revert "Implement Turbopack trace server bindings": #​65419
  • use correct not-found component when triggered from a parallel route: #​65343
  • Implement Turbopack trace server bindings: #​65410
  • fix(next/image): bypass icns images: #​65414
  • [PPR] Enable incremental adoption: #​63847
  • fix: replace deprecated/removed functions in eslint-plugin-next: #​64251
  • docs: update revalidatePath & fix cache debug logic: #​65365
  • fix(next-core): mark turbopack embed fs to be internals: #​65420
  • fix(next/image): add missing svg test and refactor missing types: #​65345
  • build(edge): extract buildId into environment: #​64521
  • Revert "build(edge): extract buildId into environment": #​65425
  • fix(next/image): set max url length to 3072: #​65457
  • Support React 19 in App and Pages router: #​65058
  • Promote and rename server bundling options serverComponentsExternalPackages and bundlePagesExternals: #​65421
  • add experimental flag to allow forcing NODE_ENV=development in builds: #​65463
  • Support esm externals in app router: #​65041
  • fix: lazy load sharp: #​65484
  • make sure children is first in loader tree to fix head css bug on client navigation: #​65279
  • Re-land build(edge): extract buildId into environment: #​65426
  • improve versioned content map: #​65466
  • update turbopack: #​65503
  • Remove ineffective webpack rules and unused app-page context modules: #​65321
  • add page name to crashes: #​65504
  • Bump styled-jsx to 5.1.3: #​65485
  • Preload all chunks for next/dynamic in SSR: #​65486
  • fix!: add sharp timeout of 10 seconds: #​65517
  • Turbopack: new graph aggregation: #​65206
  • feat(next): revise server component error message: #​65468
  • chore: update prettier to 3.2.5: #​65092
  • Revert "Remove ineffective webpack rules and unused app-page context modules": #​65558
  • Remove auto appending xml extension to dynamic sitemap routes: #​65507
  • Remove rsc esm client module extra exports: #​65519
  • Handle nonce on Next.js injected script/link tags: #​65508
  • Fix multi-zone test by removing dependency list: #​65589
  • remove next-action header when following a redirect: #​65615
  • Remove @​next/font resolving for font loaders: #​65601
  • remove legacy deprecated warnings: #​65579
  • feat(turbopack): add support for bundlePagesRouterDependencies: #​65520
  • fix(next-swc): load wasm fallback if native bindings fail to load: #​65623
  • fix(next-swc): correct path interop to filepath for wasm: #​65633
  • Add proper deprecation/rename warnings for server bundling option: #​65575
  • feat!(next/image): change default Content-Disposition to attachment: #​65631
  • Pages router: Enable strict next/head children reconciler by default: #​65418
  • Apply react-server conditions to middleware: #​65424
  • fix(next-swc): Do not reuse compiler instance: #​65602
  • Show the new key of experimental config change warnings: #​65651
  • fix(next-swc): Fix SWC env target - include option: #​65693
  • Reapply "Implement Turbopack trace server bindings" (#​65419): #​65527
  • fix(resolve-metadata): allow for search params in canonical URL: #​65366
  • Remove missingSuspenseWithCSRBailout config: #​65688
  • Reland Remove ineffective webpack rules and unused app-page context modules: #​65694
  • Remove swc minify related code branches: #​65690
  • fix: load the tags manifest asynchronously: #​64563
  • Bump acorn to replace swc class properties transform: #​65715
  • fix: watch experimental/testmode in when running "pnpm dev": #​65689
  • Revert "chore: externalize undici for bundling": #​65727
  • [ppr] Request normalization fixes: #​65717
  • fix(next/image)!: error when src has leading or trailing space: #​65637
  • fext(next-swc): extend internal env flag to all native bindings: #​65748
  • Update font data: #​65719
  • fix(next): add alias to new react exports: #​65761
  • Update font data: #​65768
  • feat: remove font family hashing in next/font css: #​53608
  • Add script to script loader when strategy prop is undefined: #​65585
  • fix: ensure websockets are correctly passed: #​65759
  • Add clientTraceMetadata experimental option to propagate tracing data to the client: #​64256
  • Remove process auto polyfill in edge runtime: #​65751
  • feat: support import attributes: #​65749
  • Turbopack: Remove EcmascriptChunkingContext: #​65716
  • Error in build for middleware when import client-only: #​65792
  • fix(next): reject protocol-relative URLs in image optimization: #​65752
  • Fix broken HTML inlining of non UTF-8 decodable binary data from Flight payload: #​65664
  • Bundle the installed react for middleware: #​65811
  • fix middleware cookie initialization: #​65820
  • fix(next/image)!: set upstream timeout to 7 seconds: #​65821
  • feat(turbopack-ecmascript): use import attributes for annotations: #​59370
  • feat(next): experimental react compiler support: #​65804
  • Fix the runtime for rsc layer: #​65850
  • Ensure React Compiler only runs on first-party browser code: #​65851
  • fix: bump nft@0.27.1: #​65854
  • add effect packages into the optimized-by-default list: #​65465
  • Upgrade react@beta: #​65845
  • Ensure plugin-syntax-jsx doesn't have to be installed: #​65865
  • Update React from 4508873 to 04b0588: #​65864
  • Set default stale-while-revalidate header value to 1 year: #​65867
  • fix missing experimental warning for reactCompiler: #​65866
  • Error on mismatched minimal react version: #​65806
  • Revert "Set default stale-while-revalidate header value to 1 year": #​65887
  • Update turbopack & swc_core: #​65450
  • Revert "Fix broken HTML inlining of non UTF-8 decodable binary data f…: #​65906
  • experimental: unstable_after: #​65038
  • Docs: Replace "twitter.com" to "x.com": #​65917
  • fix(next/image): prefer sharp defaults, use mozjpeg for JPEG: #​65846
  • Update font data: #​65961
  • unstable_after: support nested unstable_after calls: #​65950
  • Fix revalidateTimings route for catchall index route: #​65843
  • fix(next): initial prefetch cache not set properly with different search params: #​65977
  • Add additional log to experimental ppr flag in next.config.js: #​65944
  • Change default of prerenderEarlyExit to true: #​65830
  • short-circuit OPTIONS requests to pages: #​65295
  • Turbopack: Implement next/font/local with BeforeResolvePlugin and show custom error message: #​65870
  • [Breaking] Disable automatic static generation for route handlers: #​65825
  • Fix router.refresh missing canonical url override: #​65999
  • Fix typo in JSDoc of ppr flag of next.config.js: #​66028
  • Revert webpack bundling layer changes for middleware/pages: #​66049
  • Upgrade lightningcss, disable grid prefixing: #​65986
  • [Breaking] disable client router cache for page segments: #​66039
  • Add dedicated client entry for Turbopack builds: #​65824
  • Update React from 04b0588 to 81c5ff2 : #​65869
  • implement unstable_rethrow: #​65831
  • chore(next/image): remove unused output parameter: #​66083
  • next-swc-napi: Enable "plugin" feature by default: #​66006
  • [turbopack] Use updated RawOutput API: #​65300
  • Skip setting to fetch cache when not modified: #​66055
  • [Memory] Add option to reduce memory usage caused by duplicate strings in webpack-sources: #​66003
  • Ensure metadata routes dont skip static optimization: #​66097
  • [unstable_after] fix occasional dev-mode crash in edge runtime pages: #​66099
  • fix: ensure prefetch data routes are always added when app has ppr enabled: #​66102
  • [Breaking] Disable automatic fetch caching: #​66004
  • Update React from 81c5ff2 to f994737: #​66093
  • feat(turbopack): Attempt to detect and warn about slow file IO: #​66057
  • update typescript plugin to support experimental_ppr: #​66141
  • add next-build-test binary / library: #​64121
  • add bash script to run a benchmark: #​64717
  • Handle next/navigation import in middleware: #​66175
  • [ppr] Data route fix: #​66190
  • Implement typeof window inlining for Turbopack: #​66128
  • Bump React types to latest 18.3.x: #​66181
  • Bump styled-jsx to 5.1.6: #​66185
  • Fix source map loading failure for path-to-regexp: #​66242
  • Bump React types to 19 rc: #​66186
  • Reland bunling webpack middleware changes (#​66049): #​66052
  • fix dev overlay version indicator style: #​66278
  • [ppr] Don't mark RSC requests as /_next/data requests: #​66249
  • enhance: ignore nextjs version fetch error in dev overlay: #​66271
  • Trigger error for stream on client when it is not finished as expected: #​65798
  • chore(next-font): bump @​capsizecss/metrics package to the latest: #​66302
  • refactor: remove isRSCRequestCheck: #​65587
  • feat: add copy button for runtime error: #​65921
  • Transform client reference in middleware layer: #​66294
  • feat(react-dev-overlay): Open nvim with line number: #​66358
  • Restore optimization to ignore legacy APIs in react-dom/server: #​66371
  • fix: ensure dynamic fetches are tracked correctly: #​66349
  • Update font data: #​66359
  • next-swc-napi: Remove "plugin" from default feature list: #​66380
  • Revert "Middleware RSC bundling changes": #​66422
  • chore: bump supported msw version to v2.3.0: #​66351
  • remove duplicate export workers: #​66388
  • refactor page export error tracking: #​66392
  • add experimental flag for retrying static generation: #​66393
  • Update rust toolchain to nightly-2024-05-31: #​66428
  • fix erroneous RSC calls on hash changes: #​66434
  • Improve JSDoc link for Metadata API: #​66455
  • Warn metadataBase missing in standalone mode or non vercel deployment: #​66296
  • fix: ensure route handlers properly track dynamic access: #​66446
  • Fix broken BrowserInterface type: #​66461
  • Polish copy button state and styles: #​66370
  • expose experimental option to set a memory limit for turbo: #​66101
  • avoid filtering the error message: #​65311
  • Fix next/navigation type augmentation: #​66489
  • fix: only generate prefetch rsc for ppr enabled routes: #​66395
  • add layerAssets property to FlightDataPath: #​66354
  • fix missing stylesheets when parallel routes are present: #​66300
  • fix css order for some edge cases in App Dir: #​66500
  • Fix fetch deduping in dev after reload: #​66507
  • optimize server actions: #​66523
  • fixing next/dynamic transform for turbopack: #​66527
  • improve order of spans in tracing: #​66516
  • add more tracing: #​66528
  • refactor: deprecate future directory: #​66432
  • fix 'loading' segment not being copied into new CacheNode: #​66538
  • fix NextRequest proxy in edge runtime: #​66551
  • Re-land Fix broken HTML inlining of non UTF-8 decodable binary data from Flight payload #​65664: #​65988
  • feat(turbopack): Introduce RcStr: #​66262
  • Remove unused state in Server Actions transform: #​66547
  • Add playwright-core to server-external-packages.json: #​66549
  • Update to turbopack-240605.2: #​66568
  • update turbopack: #​66575
  • Fix loading navigation with metadata and prefetch: #​66447
  • Update font data: #​66582
  • Fix Server Actions closure idents tracking: #​66601
  • Update to turbopack-240606.2: #​66606
  • update turbopack: #​66627
  • revert app-render changes related to determining RSC/Prefetch requests: #​66648
  • Revert "feat: Update swc_core to v0.92.10": #​66640
  • remove staticWorkerRequestDeduping flag & unused IPC code: #​66655
  • prevent duplicate RSC fetch when action redirects: #​66620
  • Update URL provided from unstable_cache: #​66651
  • ensure router cache updates reference the latest cache values: #​66681
  • Fix esm property def in flight loader: #​66286
  • Update React from f994737 to 1df34bd (19.0.0-rc.0): #​66533
  • fix(turbopack): remove tailwindcss from default external packages: #​66706
  • Append sitemap extension and optimize imafe metadata static generation: #​66477
  • feat(turbopack-ecmascript): cache external modules with wrapper: #​63337
  • [ppr] Enable static shell debugging in other environments: #​65483
  • Add timeout/retry handling for fetch cache: #​66652
  • Fix inconsistency with 404 getStaticProps cache-control: #​66674
  • [lint] Allow lint warnings to pass in CI: #​66140
  • Revert "Fix esm property def in flight loader": #​66727
  • Update React from 1df34bdf62 to 6230622a1a: #​66726
  • Prevent append of trailing slash in cases where path ends with a file extension: #​66636
  • Update font data: #​66730
  • Use addDependency to track metadata route file changes: #​66714
  • fix: app-router prefetch crash when an invalid URL is passed to Link: #​66755
  • Ensure urlPathname is always a pathname: #​63846
  • build: Update swc_core to v0.93.2: #​66698
  • chore: bump turbo to 2.0.3: #​66762
  • Revert "chore: bump turbo to 2.0.3": #​66775
  • use node js chunking context for evaluation: #​66710
  • refactor: simplified async storage wrappers: #​66767
  • Update devdependecy commander: #​66771
  • chore: bump turbo to 2.0.3: #​66784
  • Make InvalidImportResolvePlugin a BeforeResolvePlugin: #​66622
  • Fix: only inject clientTraceMetadata into html page once: #​66763
  • Use turbo-tasks-malloc on all platforms: #​66815
  • [ppr] Improve DX for static shell debugging in dev mode: #​66806
  • Reland "Middleware to use react-server condition": #​66534
  • Revert "Use turbo-tasks-malloc on all platforms": #​66884
  • fix: wait for playwright fixture to setup before running test: #​66842
  • Handle action middleware rewrite case: #​66852
  • Revert "Revert "Use turbo-tasks-malloc on all platforms" (#​66884)", fix aarch64 compilation in CI: #​66885
  • [Turbopack] improve memory measurement suite: #​66748
  • Fix: remove enegine requried pnpm version: #​66914
  • Remove worker condition name when resolving files in the Edge runtime: #​66808
  • small memory and tracing improvement: #​66899
  • build: Update swc_core to v0.95.2: #​66902
  • Testmode: use ipv4 address to reduce dependency on local system configuration: #​66968
  • Update font data: #​66969
  • Refactor internal routing headers to use request meta: #​66987
  • Remove lazyDataResolved flag: #​66578
  • refactor(next): package.json keywords back-end should be backend: #​66974
  • Fix internal route redirection with absolute urls outside basePath: #​64604
  • Expand test for AsyncLocalStorage to avoid throwing in old chrome: #​61873
  • fix caching of client chunks: #​66971
  • Run and report benchmarks: #​66851
  • refactor: remove hydration link appending console interception: #​67011
  • Use react-dom/server.edge instead of .browser in Next.js runtime: #​66954
  • feat(turbopack): add support for esm externals in app dir: #​64918
  • Add sassOption implementation to support sass-embedded: #​64577
  • Fix esm property def in flight loader: #​66990
  • Upgrade Turbopack: #​67017
  • fix: bad script tag in layout hydration error: #​66998
  • Ensure Turbopack build runs when experimental-compile option is used: #​67049
  • Remove handling on findDOMNode warning: #​67054
  • ensure accessing search params mark dynamic usage: #​67105
  • Add build diagnostics for saving debug information during a build: #​66187
  • chore: add detection for image more types: #​67112
  • dx: add pagePath info to missing component error: #​66916
  • Add experimental flag for providing entry paths: #​67134
  • Fix noindex is missing on static not-found page: #​67135
  • Refactor code: #​64429
  • Fix server action edge redirect with middleware rewrite: #​67148
  • chore: turbopack metadata routes normalizing: #​67159
  • codemod: add next/dynamic imports codemod: #​67126
  • Create React aliases for SVG components: #​67104
  • chore: fix react-is RC version pinning: #​66676
  • Remove extra suspense boundary for default next/dynamic: #​67014
  • Remove devdependency uuid: #​67190
  • make next/dynamic visit more incremental and cacheable: #​66912
  • Make synced react-is version more obvious: #​67189
  • fix: Narrow down from string | undefined to string: #​65248
  • Upgrade Turbopack: #​67209
  • [ppr] Handle corrupted postponed state: #​67021
  • fix(turbopack): add no-op resolveAbsolutePath to browser runtime: #​67215
  • feat: enable @​typescript-eslint/recommended in create-next-app --typescript: #​52845
  • fix missing command in next-codemod: #​67216
  • chore(docs): improve visual appearance of badges in README.md: #​67254
  • refactor: replace glob w/ fast-glob in eslint plugin: #​67261
  • reject actions with invalid RSC responses: #​67059
  • chore: bump pnpm to 9.4.0: #​64945
  • packages/next: opt ts-morph into serverExternalPackages: #​67284
  • fix(next/image): improve w and q query string validation for integers: #​67293
  • chore: throw when three dot character is detected in segment: #​67348
  • Add warn and telemetry for customized esmExternals: #​67339
  • perf: improve retrieving versionInfo on Turbo HMR: #​67309
  • fix(next/image): undo tight coupling between priority=true and fetchPriority=high: #​67351
  • use fetch priority for app prefetches: #​67356
  • fix prefetch bailout detection for nested loading segments: #​67358
  • fix(turbopack): build all parallel routes to make sure HMR works: #​67222
  • Update @swc/core npm package to v1.6.6: #​67379
  • feat: Pass module: "unknown" to SWC minfiier: #​66817
  • [chore] Update turbopack to turbopack-240703.1: #​67406
  • fix dynamic param extraction for interception routes: #​67400
  • Upgrade TypeScript to v5.5.2: #​67113
  • Fix typo in MDX documentation: #​67432
  • Transpile geist by default: #​67402
  • Turbopack + Relay: correctly implement artifact_directory to fix multi-project test: #​67403
  • fix(next/image): handle invalid url: #​67465
  • Bump minimum Node.js version to 18.18 (up from 18.17): #​67274
  • Update font data: #​67472
  • avoid merging global css in a way that leaks into other chunk groups: #​67373
  • refactor: avoid unnecessary after wrapper: #​67463
  • fix(next): add cross origin in react dom preload: #​67423
  • Remove obsolete isNodeDebugging option from next server: #​67492
  • Fix VS Code debugging: #​66254
  • Dedupe double logged server errors: #​67464
  • Turbopack build: Ensure Pages Router manifests are loaded with buildId: #​67317
  • next-build-test improvements: #​67460
  • Update font data: #​67574
  • Tweak the display for error trace: #​67572
  • Turbopack build: Ensure build manifest routes are sorted: #​67583
  • Clean up flight headers: #​67525
  • feat(next): next.config.ts: #​63051
  • Fix PPR navigations & revert layerAssets property from FlightData: #​67435
  • Update experimental trace handling to capture more deps: #​67599
  • Write out task statistics if NEXT_TURBOPACK_TASK_STATISTICS is set: #​67164
  • fix PPR navigations when visiting route with seeded cache: #​67439
  • Turbopack build: Add missing Compiled successfully message: #​67598
  • feat: type hint for env in dev mode: #​67157
  • perf(turbopack): only build last parallel route: #​67588
  • feat: instrumentation onRequestError: #​67539
  • Reduce console error patching: #​67433
  • Share the hydration error info extraction util: #​67639
  • Add prerender indicator for app router: #​67306
  • cleanup unused server util: #​67645
  • fix: typo prerender indicator link: #​67650
  • style: simplify string formatting: #​66772
  • build: upgrade edge-runtime: #​67565
  • Update swc_core to v0.96.9: #​67378
  • Move request header parsing for app-render into a dedicated function: #​67524
  • refactor: typedEnv is not readonly: #​67693
  • Report HMR latency when a Server Component changes: #​67699
  • refactor: merge the same util to detect nextjs navigation errors: #​67672
  • Move .next/chunks folder to .next/build/chunks: #​67610
  • Add render source to onRequestError context: #​67703
  • refactor <AppRouter /> render structure: #​64594
  • cleanup unused pages router method: #​67722
  • fix(turbopack): allow page segments that don't alter the path after catchall: #​67713
  • Convert secondary fetchServerResponse params into options object: #​67526
  • Server Components HMR Cache: #​67527
  • pages router: ensure x-middleware-cache is respected: #​67734
  • Fix typescript setup for packages/font and turbo/generators: #​67687
  • Turbopack build: Exclude .d.ts files as routes: #​67744
  • chore: Update @swc/core and @swc/heleprs: #​67757
  • feat: facebook metadata: #​65713
  • fix: unstable_cache should not cache new result in draft mode: #​67772
  • Fix edge preview props are not matched with cookie: #​67779
  • Wait for ✓ Ready log in NextInstance#start: #​67767
  • Ensure serverSourceMaps is in webpack cache key: #​67786
  • TypeScript plugin: Allow functions in action-like props: #​67211
  • update turbopack: #​67795
  • Drop edge prerender manifest: #​67787
  • perf: Optmize react_server_component transform: #​67335
  • Turbopack build: Implement app/global-error.tsx: #​67803
  • Ensure instrumentation register only call once: #​67805
  • Set @​next/font to private and remove peer deps field: #​67797
  • Handle server actions error in onRequestError: #​67769
  • Don’t show long internal Rust stack traces to users: #​67678
  • Align the typeEnv value type with default process env value type: #​67804
  • ensure component tree is only rendered once during SSG/revalidations: #​67680
  • refactor client router initialization: #​67821
  • Fix for typedRoutes when setting pageExtensions - for typedRoutes MDX support: #​67824
  • [Diagnostics] Record framework.json after creating and cleaning distDir: #​67819
  • Enable experimental.serverComponentsHmrCache by default: #​67800
  • Drop the experimental env var for onRequestError API: #​67856
  • Add additional handling for experimental tracing: #​67785
  • Update font data: #​67872
  • update turbopack: #​67874
  • Hide caniuse-lite outdated warning in terminal: #​67869
  • Support compiler.removeConsole with Turbopack: #​67849
  • remove extraneous field from FetchServerResponse: #​67865
  • refactor FetchServerResponse shape: #​67866
  • Support reactRemoveProperties with Turbopack: #​67853
  • prerendered pages should use static staleTime: #​67868
  • ensure cookies set in middleware can be read in a server action: #​67924
  • Log fetch requests during client-side navigation: #​67925
  • Fix fetch logging in edge runtime: #​67952
  • fix: merged middleware cookies should preserve options: #​67956
  • feat: disable development logging by setting logging: false in next config: #​67590
  • Add experimental flag for chunk failure handling during app navigation: #​67926
  • Do not limit the number of fetch requests that are logged: #​67957
  • Fix a bug in the webpack-sources patch that happens sometimes when using the webpack cache: #​67928
  • Ensure "[Fast Refresh] rebuilding" logs have a matching "[Fast Refresh] done" log in Webpack: #​67968
  • Fix logging option internal consuming: #​67972
  • Turbopack build: Implement reactProductionProfiling: #​67909
  • Update metadata ready tracking: #​67929
  • Fix next lint with async eslint-formatters: #​67860
  • refactor: move rust crates to the repo root directory: #​67780
  • Wait for pending Webpack Hot Updates before evaluating JS from RSC responses: #​67673
  • Stop handling hydration errors from unsupported React versions: #​67903
  • Update React from 6230622a1a-20240610 to dfd30974ab-20240613: #​66711
  • Prevent unnecessary rsc reloads on navigation: #​68049
  • update prefetching jsdoc & documentation: #​68047
  • Improve caching of next-app-loader to prevent more fs calls.: #​67792
  • Update Next Command name, add types & update variable wording: #​68007
  • Ensure experimental trace invalidates correctly: #​68076
  • Env follow-up for experimental trace: #​68086
  • log FetchMetrics during SSG to diagnostics dir: #​68078
  • remove unused preloadConfig flag: #​68082
  • refactor: isolate the params type: #​67981
  • Ignore serverComponentChanges in pages: #​66312
  • Fix global hash for experimental tracing: #​68122
  • Restructure trace experiment manifest: #​68131
  • Fix race condition with experimental tracing: #​68143
  • update turbopack: #​68129
  • Apply serverExternalPackages inside node_modules and add keyv: #​67948
  • [image, link] fix ref merging for callback refs that return a cleanup function: #​68123
  • Revert "[image, link] fix ref merging for callback refs that return a cleanup function": #​68176
  • Revert "Update metadata ready tracking": #​68200
  • Reapply "[image, link] fix ref merging for callback refs that return a cleanup function" (#​68176): #​68199
  • fix: properly patch lockfile against swc bindings: #​66515
  • Fix ImageResponse headers merging: #​67642
  • Update React from 6230622a1a-20240610 to 76002254-20240724: #​68149
  • fix: grammar in jsdoc: #​68253
  • Add telemetry for React Compiler usage: #​68079
  • Ensure we only handle app nav failure for actual error: #​68285
  • Drop @​babel/plugin-transform-classes by default: #​68290
  • Move request logging code out of NextNodeServer: #​68286
  • Fix hmr assetPrefix escaping and reuse logic from other files: #​67983
  • Add deployment id header for rsc payload if present: #​67255
  • Turbopack: Implement HMR for module-scoped environment variable changes: #​68209
  • Revert "Update React from 6230622-20240610 to 7600225-20240724 (#​68149)": #​68300
  • Log cached fetches during HMR refreshes if enabled in logging config: #​68287
  • Upgrade Turbopack: #​68327
  • next/form: #​68102
  • Remove legacy next/link prefetch={true} warning: #​68326
  • Drop react-dev-overlay from production bundle: #​68197
  • Update React from 6230622a1a-20240610 to 3208e73e-20240730: #​68330
  • Update metadata ready tracking (reland): #​68342
  • [form] typedRoutes support for action prop: #​68323
  • fix: allow empty string value for opengraph: #​68262
  • update turbopack: #​68354
  • fix renaming of page files, add handling of symlinked pages: #​68195
  • Remove quotation marks from object key : #​68337
  • Move static indicator into dev overlay: #​68369
  • Ensure we match comment minify behavior between terser and swc: #​68372
  • update turbopack: #​68399
  • chore: fix references for the new turbopack crates: #​68128
  • refactor: merge turbopack crates into next.js: #​68127
  • Allow users to use process.env.NEXT_SSG_FETCH_METRICS to control fetch metrics during SSG: #​68378
  • refactor: replace indexOf === 0 with startsWith: #​68116
  • feat: Enable tree shaking of turbopack: #​66689
  • Use font color for static indictor close icon: #​68417
  • Support @​next/mdx with Turbopack: #​68397
  • Update React from 3208e73e-20240730 to 06d0b89e-20240801: #​68444
  • Fix ncc clearing task: #​68468
  • Clean-up legacy terser code: #​68462
  • [ppr] Configuration for max react headers length: #​67715
  • Stabilize outputFileTracing configs: #​68464
  • Delete debug tarball file and add to gitignore: #​68478
  • ppr: prevent CacheNode.loading from being cleared on popstate: #​68488
  • Colocate cssnanon-preset-simple unit test with source: #​68508
  • Compile path-to-regexp via ncc: #​68465
  • Add env handling for experimental tracing: #​68516
  • chore: typo in bootrap to bootstrap: #​68517
  • Refactor ModuleOptionsContext API: #​67864
  • fix(turbopack): don't log errors when they are thrown: #​68331
  • Ensure client components are in experimental trace: #​68492
  • Ensure webpack cache does not conflict with experimental tracing: #​68515
  • Add store only mode for experimental tracing: #​68548
  • Move turbopack panic log to tmpdir: #​67930
  • Allow dev server to exit cleanly (SIGINT/SIGTERM): #​67165
  • Don't throw TurbopackInternalError if there are issues: #​68529
  • Handle more cases with env inlining: #​68590
  • make sure all the crates in turbopack are considered when caching: #​68593
  • refactor: cleanup types and logic in build: #​68125
  • Fix store only case for tracing: #​68601
  • Remove async module detection from client flight manifest: #​68584
  • fix: NPM Workspace throwsENOWORKSPACES error when fetching registry: #​68522
  • fix: normalize-asset-prefix adding leading slash when URL assetPrefix is provided: #​68518
  • Sitemap image tag support: #​68034
  • chore(next-swc): avoid deleting .gitignore when running "clean" script: #​68624
  • Fix favicon merging with customized icons: #​67982
  • Add tests for self-importing packages: #​68070
  • refactor static workers to help with parallelization & cache sharing: #​68546
  • Handle pruning mismatching cache for experimental trace: #​68635
  • Ensure next-server prepare only execute once: #​68616
  • fix app router prefetch deduping: #​68642
  • Turbopack HMR: Reload the page when server session changes: #​68630
  • Remove extraneous configs from cache manifest: #​68645
  • fix: HMR not works when assetPrefix set to URL: #​68622
  • Reject next image urls in image optimizer: #​68628
  • Check vendored @ampproject/toolbox-optimizer into version control: #​68466
  • Use proper react release channel for react-dom/static aliases: #​68663
  • Stop mangling server runtime in dev: #​68641
  • Ensure we hard error on invalid middleware config export: #​68638
  • Ensure we copy map file as well for experimental tracing: #​68676
  • chore: remove asset prefix warning log and update docs: #​68681
  • Update React from 06d0b89e-20240801 to 187dd6a7-20240806: #​68594
  • Prevent incompability with 'eval-source-map' and mangle: false: #​68688
  • Update font data: #​68639
  • Introduce prerenderAsyncStorage and refactor app-render: #​68637
  • chore: remove duplicate storeHydrationError call: #​68736
  • The patched fetch function should not buffer a streamed response: #​68447
  • fix(create-next-app): link to app dir docs in next-env.d.ts in app dir templates: #​68534
  • Fix pnpm build --filter next on a clean repository: #​68693
  • Rename url to path for onRequestError request arg: #​68672
  • misc: add dd-trace to server externals: #​68785
  • [after] remove createCacheScope: #​68744
  • Remove obsolete deleteAppClientCache() call from webpack plugin: #​68535
  • Clean up require.cache handling: #​68743
  • Fix duplicate logs for invalid config exports: #​68696
  • Always collect static icons for all segments: #​68712
  • [Turbopack] write action manifest atomically: #​68538
  • Add node-cron to server externals: #​68788
  • re-use loading from prefetch cache entries across searchParams: #​68340
  • Ensure bail out on ssr error in static generation: #​68764
  • rename fetchServerResponse response properties: #​68814
  • Only opt into navigation PPR flow if prefetched route was PPRed: #​68815
  • refactor: incremental cache cleanup: #​68602
  • unfork navigateReducer: #​68816
  • remove circular ExportError import from SSG worker: #​68858
  • re-order CacheNodeSeedData to put containing segment first: #​68847
  • Normalize vendored entrypoints: #​68502
  • fix(next): properly pass layout-level maxDuration config to the children page segments on build: #​68793
  • chore: fix typos in comments: #​68792
  • Fix issue with afterFiles rewrites not working when prefixed with assetPrefix: #​68694
  • refactor(turbo-tasks): Add TaskPersistence enum for task creation functions: #​68866
  • Remove invalid app router etag normalizing: #​68948
  • perf(turbo-tasks-macros): Move assert_returns_resolved_value into helper module: #​68867
  • fix i18n data pathname resolving: #​68947
  • refactor(turbo-tasks): Use an enum for strongly_consistent/ReadConsistency instead of a bool: #​68913
  • Update React from 187dd6a7-20240806 to 49496d49-20240814: #​68898
  • Lookup alias and import maps using Pattern instead of String: #​68274
  • perf(turbopack): improve app structure performance: #​67397
  • Simplify static indicator: #​68961
  • use setImmediate (if present) in edge react-dom/RSDW/RSDT: #​68952
  • Fix flying-shuttle full mode breaking instrumentation: #​68976
  • Update font data: #​68964
  • Revert "Ensure bail out on ssr error in static generation": #​68986
  • Add draft mode flag for multi-zone: #​68997
  • Reland "Ensure bail out on ssr error in static generation": #​68999
  • Update React from 49496d49-20240814 to 1eaccd82-20240816: #​68991
  • Improve Metadata JSDoc: #​69037
  • Include proper instrumentation entry in required files manifest: #​68983
  • Resolve route interception problem with (..)(..): #​69012
  • fix: Move tree shaking config to experimental.turbo: #​69050
  • Turbopack build: Fix metadata handling: #​69086
  • Remove references to removed react-dom/server APIs in Webpack shims: #​68987
  • misc: tweak fetch patch restoration timing during HMR to allow for userland fetch patching: #​68193
  • Remove unused react-dom/server.browser references: #​68988
  • refactor: fallback updates: #​68631
  • refactor: update fallbacks to use response cache: #​68603
  • Improve create not found tree and remove asNotFound: #​68910
  • bugfix: ensure rsc isn't reused for page segments when reusing loading data: #​69123
  • add support for css-in-js ressource mapping in experimental lightningcss-loader: #​64551
  • Stablize instrumentation.js: #​68853
  • Ensure vendored react-dom/server.browser is used: #​69142
  • Ensure assertion failures include all versions in rsc-basic tests: #​69138
  • bugfix: ensure prefetch aliasing doesn't apply URL redirect: #​69153
  • Remove optimizeFonts (Automatic font optimization) superseded by next/font: #​69137
  • Ensure fetch cache TTL is updated properly: #​69164
  • correctly rethrow instrumentation loading error: #​65251
  • disable prefetch aliasing in development: #​69168
  • refactor: create shared utils for mod resource: #​69145
  • remove action pathname normalizer: #​69181
  • Apply optimization for unused actions: #​69178
  • Improve SWC transform ID generation: #​69183
  • Update React from 1eaccd82-20240816 to eb3ad065-20240822: #​69196
  • [Tracing] Trace next-dev spans to represent the dev server: #​69206
  • Refactor unused import and object in Flight plugin: #​69266
  • refactor: group react dev overlay entry: #​69223
  • handle uncaught exceptions in worker: #​69335
  • Set max retries for build failures to zero: #​69340
  • send initialCanonicalUrl in array format to prevent crawler confusion: #​69370
  • remove unused argument to applyPatch: #​69376
  • Respect webpackIgnore and turboIgnore comments in the parser: #​68451
  • refactor path creation in walkTreeWithFlightRouterState: #​69383
  • Partial Fallback Prerendering: #​68958
  • Upgrade React from eb3ad065-20240822 to f90a6bcc-20240827: #​69415
  • chore: add logs to download-swc ci job: #​69425
  • Upgrade React from 19.0.0-rc-f90a6bcc-20240827 to 19.0.0-rc-7771d3a7-20240827: #​69417
  • Introduce dynamicIO experiment: #​67571
  • Add module id strategy option to next config: #​69319
  • cleanup FlightDataPath array access/slicing: #​69241
  • normalize flight data after receiving server response: #​69460
  • Support turbo: true option for custom server: #​69464
  • bugfix: aliased prefetches should flow through PPR handling: #​69476
  • fix: bump sharp@0.33.5: #​69524
  • fix: styledComponents schema: #​69230
  • Add browser devtool inspect url copy button to dev overlay: #​69357
  • Lazily init fetch dedupe cache: #​69492
  • Turbopack build: Fix middleware matchers implementation: #​69602
  • chore(metadata): add clarifying comment: #​69549
  • Remove unsupported providerImportSource option: #​69609
  • fix: clientComponentLoading span type: #​69295
  • Fix typos: #​69568
  • fix(eslint): allow typescript-eslint v8: #​68807
  • Allow external image urls with _next/image pathname to be rendered via Image component: #​69586
  • [Turbopack] gracefully stop turbo-tasks to allow persisting to complete: #​69661
  • fix: ensure absolute paths are handled correctly with --file option in next lint command for lint-staged compatibility: #​69220
  • dev-overlay: Implement CopyButton without useActionState or async transitions: #​69494
  • Update swc_core to v0.103.1: #​69605
  • Run link-ref tests in /app and /pages: #​69564
  • Partial Fallback Prerendering Route Shells: #​69282
  • Ensure externalized React entrypoints use vendored React in App Router: #​69610
  • Turbopack build: Implement --experimental-app-only flag: #​69722
  • Use vendored React version in Middleware and Instrumentation: #​69619
  • [Turbopack] refactoring/todos: #​69663
  • misc: typo in var name: #​69745
  • Partial Prerendering Basepath Fix: #​69520
  • pages bugfix: prevent cancellation errors from being logged: #​69766
  • Disable experimental.optimizeServer by default: #​69788
  • Fix middleware fallback: false case: #​69799
  • ensure aliased prefetches return correct segment key: #​69850
  • feat(turbopack): add experimental.turbo.root config option: #​69737
  • Turbopack dev/build: Initial browserslist passing: #​69781
  • [Turbopack] only subscribe to changes in dev mode: #​69862
  • HMR: Log unexpected Turbopack errors to a file: #​68698
  • fix: use correct protocol when -H and --experimental-https are enabled: #​69822
  • fix: remove unnecessary console in isDynamicPostpone: #​69457
  • Add ability to customize Cache-Control: #​69802
  • Support React 18 in Pages Router: #​69484
  • Revert "Support React 18 in Pages Router": #​69911
  • Pass client trace metadata to client in pages router: #​69620
  • Fix font size for build error version status: #​69811
  • feat(image-optimizer): use previously cached image cache entry if upstream image is identical: #​67257
  • [Turbopack] print invalid message correctly: #​69964
  • fix: correct metadata url suffix: #​69959
  • [Turbopack] add error for invalid exports: #​69819
  • handle empty query param issue in url redirects #​68039: #​68157
  • ensure prefetch entry is not mutated: #​69948
  • Remove invalid fallback revalidate value: #​69990
  • Update font data: #​70003
  • [Turbopack] stable Vcs without TraitRef::cell: #​70029
  • [Turbopack] fix HmrEntryModule: #​69965
  • [Turbopack] remove entries from versioned content map again: #​69913
  • Fix not-found case with incremental tracing: #​70041
  • Upgrade React from 7771d3a7-20240827 to 94e652d5-20240912: #​70037
  • breaking: remove geo and ip from NextRequest: #​68379
  • fix: Add import-in-the-middle to server-external-packages: #​68937
  • Ensure .d.ts files are not processed in babel-loader / swc-loader: #​66074
  • [Turbopack] [HMR] Allow Options to be returned by VersionedContentMap: #​69079
  • [Turbopack] report error to stderr when an error in a subscribtion happens: #​69977
  • Update experimental trace tracking: #​70044
  • fix(next): Fixed an error when next#dev runs in windows: #​70013
  • Upgrade React from 94e652d5-20240912 to 206df66e-20240912: #​70076
  • Add "@​sparticuz/chromium" to server-external-packages.json: #​69127
  • skip generating cert each time: #​67122
  • fix: clone response in first handler to prevent race: #​70082
  • fix: eslint-plugin-next glob: #​68773
  • Fix eslint root dirs test on Windows: #​70160
  • fix: rsc content-type header not matching with charset: #​70033
  • Fix startTime error on Android 9 with Chrome 74: #​67391
  • Fix regression in TS plugin: allow reset prop in error files: #​69777
  • Ensure we chunk revalidate tag requests: #​70189
  • fix(lint): no-html-link in appDir: #​68770
  • fix(next): skip conventional type check for _private folder convention: #​64177
  • Only wait for metadata when dynamicIO experiment is on: #​70192
  • chore: bump jscodeshift version: #​70203
  • Upgrade React from 206df66e-20240912 to a99d8e8d-20240916: #​70190
  • Fix vercel og package memory leak: #​70214
  • Replace URL.canParse: #​70215
  • Add support for dynamicIO experiment to route.ts modules: #​70208
  • [ppr] Allow fallback pages to be revalidated: #​70199
  • Re-add internal env for providing page paths: #​70235
  • feat: add polyfill of URL.canParse for browser compatibility: #​70228
  • Remove dependecy graceful-fs and types: #​67194
  • chore: add comments for polyfill imports and file paths: #​70233
  • Upgrade React from a99d8e8d-20240916 to 5dcb0097-20240918: #​70225
  • Run @next/codemod tests in CI: #​70248
  • Upgrade React from 5dcb0097-20240918 to e740d4b1-20240919: #​70260
  • bugfix: actions that redirect should reject the action promise: #​69945
  • Fix missing cache-control on SSR app route: #​70265
  • Remove unused app_structure from next-swc-napi: #​70282
  • fix: match file path url escaping during build and serve: #​70256
  • Rename loader_tree to app_page_loader_tree: #​70283
  • Rename app directory "components" to "modules": #​70285
  • Honor redirect type in server actions: #​70279
  • refactor: collect all isThenable/isPromise definitions: #​70293
  • feat(next/image): add support for decoding prop: #​70298
  • Improve server directive SWC transform: #​70257
  • Remove unused Server IDs tracking on the server graph: #​70317
  • relocate dynamic APIs: #​70300
  • Update root not found boundary to not introduce Server Component: #​70328
  • feat(next): codemod for removed geo and ip of NextRequest: #​70064
  • Mention app dir in TS setup tip: #​70337
  • Add additional fixes for experimental tracing: #​70356
  • Fix duplicate headers in response to static assets if overrides specified by user: #​70127
  • fix: change duplicated POST method to PUT method: #​70308
  • Externalize node binary modules for app router: #​70330
  • Support fallback params when the layout is a client component: #​70329
  • Codemod for Async Request API: #​69572
  • Extract createAppRouteCode from next-app-loader.ts: #​70352
  • [Type Definition] - Updates the manifest types to reflect the current specifications: #​68273
  • Fix middleware experimental trace case: #​70372
  • Fix legacy env config with experimental tracing: #​70380
  • Update font data: #​70377
  • add missing node modules to externals: #​70382
  • Avoid prefetch request before meta-tag-based redirect: #​70350
  • Turbopack: improve stack trace in overlay: #​70343
  • refactor: more precise types for req/res in withRequestStore: #​70357
  • Add test for TLA in client references: #​70022
  • Upgrade React from e740d4b1-20240919 to e4953922-20240919: #​70290
  • feat(next-codemod): add upgrade command: #​69935
  • refactor: reorganize client error listeners: #​70373
  • refactor: reorganize patch console: #​70374
  • types: improve napi binding typing using generated types: #​69680
  • Upgrade React from e4953922-20240919 to 5d19e1c8-20240923: #​70351
  • feat(next/image): add support for images.remotePatterns.search: #​70302
  • chore: throw error when trying to use next.config.mts/.cjs/.cts (not supported yet): #​70376
  • Fix legacy env case with experimental tracing: #​70411
  • chore: auto-format generated types with prettier: #​70405
  • refactor(next-codemod): migrate to commander and prompts: #​70409
  • chore: auto-format generated types with prettier: #​70405
  • refactor(next-codemod): migrate to commander and prompts: #​70409
  • Extend support of Pages router to React 18: #​70219
  • Basic implementation of cache-wrapper with RSC serialization: #​70435
  • fix: updated typescript types for React API's: #​70410
  • Fix type error from merge: #​70481
  • Ensure validator is included in vendored AMP validator: #​70482
  • [Breaking] Update Dynamic APIs to be async: #​68812
  • Use Server/Client Manifests from Singleton in encryption-utils: #​70485
  • refactor: remove ability to call getStaticPaths from app directory pages: #​70477
  • refactor: extracted zod configuration: #​70478
  • [ppr] Added fallback shell debugging: #​70528
  • Remove shouldRevalidateStale concept from CacheHandlers: #​70493
  • fallback shell should not error when dynamic due to params access even with dynamic = "error": #​70534
  • Add cache scope handling for dynamic IO for dev/build: #​70408
  • remove unimplemented onError errorInfo argument: #​70531
  • Add env for setting cache handler path: #​70537
  • Disable "use cache" outside of dynamicIO: #​70538
  • Include buildId in the cache breaker until we have hashed Action IDs: #​70542
  • Support dynamicIO in middlware routes and generateStaticParams: #​70544
  • Unwrap createServerReference, and pass additional parameters: #​69190
  • Turbopack build: Fix benchmark running with webpack: #​70533
  • [form] allow turning prefetching off: #​68305
  • [after] fix: execute revalidates added within unstable_after(): #​70458
  • Upgrade React from 778e1ed2-20240926 to 3edc000d-20240926: #​70560
  • Exclude Object and Promise prototype properties from shadowing for params and searchParams: #​70568
  • refactor prefetch alias handling: #​70532
  • refactor: handle onlyHashChange logic sooner: #​70569
  • Updates our sync property access for params and searchParams to allow value: #​70570
  • codemod: improve dynamic API cases: #​70517
  • Auto rotate Server Reference hash salt periodically: #​70516
  • remove leftover console.log introduced in #​70532: #​70615
  • Add connection() as a new dynamic API: #​69949
  • Fix: Set busboy defParamCharset to utf8: #​70348
  • Update dynamicIO experiment to use React canary: #​70571
  • refactor: remove unnecessary page segment check in ppr-navigations: #​70572
  • Wire AsyncLocalStorage within a cached context: #​70573
  • Fix revalidateTag() behaviour when invoked in server components: #​70446
  • next-upgrade: Ensure install packages works on exotic package revisions: #​70625
  • Error consistently during prospective prerender: #​70631
  • next-upgrade: Infer React types version from runtime version: #​70626
  • next-upgrade(refactor): Improve type coverage: #​70627
  • next-upgrade: Remove extraneous if no channel is specified: #​70628
  • next-upgrade: select codemods by canary version: #​70630
  • next-upgrade: Hide install output by default: #​70632
  • next-upgrade: Allow custom selection of codemods: #​70634
  • next-upgrade: Allow choosing same codemods that are available in the currently used version: #​70635
  • Upgrade React from 3edc000d-20240926 to 2d16326d-20240930: #​70629
  • fix: fix warnings from invalid api's called from edge runtime: #​70639
  • Update font data: #​70653
  • refactor: added more strict app segment config parsing: #​70479
  • next-upgrade: Stop interleaving user-input with long tasks: #​70636
  • Replace depricated apple-mobile-web-app-capable with `mobile-web-ap…: #​70363
  • Fix interpolation of dynamic params in intercepting route pathnames: #​70667
  • bugfix: only replace with full prefetch if existing data was partial: #​70650
  • next-upgrade: Default to release channel that's used: #​70638
  • feat(turbopack): add support for polling file watcher: #​69684
  • chore: improve accessibility of static indicator: #​70612
  • initially visited static pages should respect static staletime: #​70640
  • codemod: improve dynamic api codemod cases: #​70593
  • feat(next/image): add images.localPatterns config: #​70529
  • Recommend React.use() to unwrap async APIs in the browser: #​70677
  • Change default SWR delta value to 1 year: #​70674
  • [form] pages dir support: #​68333
  • chore(docs): refactor README.md: #​70503
  • Fix missing await of params when metadata is used: #​70698
  • condense warnings for direct access of dynamic APIs: #​70682
  • Allow silencing direct access of dynamic APIs to unblock internal sync: #​70705
  • Separate the rendering of viewport from metadata: #​70685
  • codemod: fix merging react imports logic: #​70706
  • Rename StaticGenerationStore to WorkStore: #​70721
  • fix: Do not omit alt on getImgProps return type, ImgProps: #​70608
  • fix(next/image): handle undefined images.localPatterns config in images-manifest.json: #​70730
  • Run unstable_cache inside a CacheStore context: #​70740
  • Expand PrerenderStore to include the legacy mode static generation too: #​70741
  • Reapply "Dedupe sync access warning on the Server by callsite" (#​70672): #​70738
  • Add RSC module ID mapping to the Client Manifest: #​70524
  • [i18n] Routing fix: #​70761
  • fix broken lock mechanism: #​70764
  • client router cache should still be cleared if server action revalidates + redirects: #​70715
  • ensure handleUnlock is called even for non-cached responses: #​70766
  • [dynamicIO] Error when dynamic behavior is outside of a Suspense boundary: #​70734
  • [Turbopack] add new backend: #​69667
  • Fix client reference access causing metadata missing: #​70732
  • Move reactLoadableManifest/assetPrefix to workStore: #​70768
  • Unwrap registerServerReference function: #​70563
  • Error if reading Request Store inside Prerender: #​70775
  • codemod: handle the async api type: #​70785
  • Create spans for createServerReference and registerServerReference: #​70564
  • Do not invoke server actions twice when dynamicIO is enabled: #​70784
  • feat: decouple cookies and action state from redirect error: #​70769
  • refactor: added more strict app segment config validation: #​70480
  • Fix recently re-introduced unique "key" prop warnings: #​70807
  • Run Middleware within WorkStore: #​70808
  • ensure export workers that are killed bubble up to parent process: #​70997
  • next-upgrade: Ensure correct React and types version are resolved when upgrading to Next.js rc: #​70981
  • codemod: leave comment on spread props: #​70979
  • docs: add app-dir-runtime-config-experimental-edge codemod: #​71008
  • docs: add next-dynamic-access-named-export codemod: #​71012
  • chore(next-upgrade): use process exit instead of throwing: #​71018
  • chore(next-upgrade): improve revision usage messages: #​71019
  • Revert "chore(next-upgrade): use process exit instead of throwing (#​7…: #​71021
  • Disable server action transform in pages router: #​71028
  • chore(next-codemod): view current Next.js version, skip if already on or higher: #​71034
  • codemod: comment on reexport: #​71017
  • move workUnitAsyncStorage back into "client/components": #​71046
  • codemod: type cast async api calls in non entry file exports: #​71040
  • codemod upgrade: show link of migration guide after upgrade: #​71036
  • Defensively install patches: #​71043
  • fix(next/turbopack): Always preserve import attributes with esm modules: #​71051
  • codemod: fix type only react import: #​71053
  • types-plugin: enahnce type checking on interface params: #​71059
  • Move WorkStore and ActionStore to /server/app-render: #​70934
  • [Turbopack] Implement support for webpack’s stats.json: #​70996
  • chore(next-codemod): add verbose option to transform: #​71079
  • chore: polish warning for esmExternals: #​71082
  • go back to ignoring revalidates from render: #​71088
  • [Turbopack] add support for collectibles to new backend: #​70798
  • codemod: do not await on invalid prop: #​71089
  • chore(next-codemod): move app-dir-runtime-config-experimental-edge to 13.1.2: #​71081
  • Add cacheLife() / cacheTag() APIs: #​71064
  • Eagerly Pass Implicit Tags: #​71105
  • chore(next-codemod): add prompts for (un)installing packages: #​71038
  • [Turbopack] formatIssue is expensive, so avoid it if possible: #​71117
  • add phase tracking to workUnitStore: #​71030
  • [Turbopack] add unstable prefix to persistent caching option and force to provide an expected level of stability: #​71090
  • codemod: make parser more comptible: #​71122
  • Don't warn on well-known properties in searchParams: #​71142
  • Add source map support for server components/actions in the browser: #​71042
  • show webpack/turbopack compilation duration for next build: #​71146
  • tweak static indicator style & behavior: #​71128
  • feat(next-upgrade): suggest React codemod: #​71016
  • prevent revalidateTag/Path during render: #​71093
  • fix(turbopack): Fix NextEcmascriptClientReferenceTransition: #​70603
  • turn withRequestStore into createRequestStore: #​71107
  • Initial implementation of per-segment prefetch request handling: #​71113
  • Upgrade React from 2d16326d-20240930 to 70fb1363-20241010: #​71118
  • Revert "chore(next-codemod): move app-dir-runtime-config-experimental-edge to 13.1.2": #​71157
  • feat: block compilation on codemod comments and ask to remove: #​71103
  • Scope request store in render: #​71109
  • Reject hanging promises: #​70994
  • fix: allow custom app routes for metadata conventions: #​71153
  • chore(next-codemod): suggest pre-release codemods by their "stable" version: #​71158
  • misc(next-codemod): inform user whether current version is higher or on target version: #​71160
  • Update loading cache handler: #​71121
  • prevent cookies from being set in the wrong phase: #​71094
  • avoid accessing performance APIs if fetch is untracked: #​71164
  • Handle source map requests for Turbopack client chunks: #​71168
  • fix: getStaticProps appears instead of generateStaticParams during app router build: #​71033
  • Rename swrDelta config to expireTime: #​71159
  • tweak shadow on static indicator & update docs copy: #​71171
  • [dynamicIO] track Prerender environment name during dev: #​71165
  • chore: update migration comments: #​71169
  • Add support for "use cache" in route handlers: #​70897
  • For route handlers, call loadComponents also during next build: #​71202
  • Handle thrown values that aren't Error instances in App router: #​71210
  • fix: add newrelic to server-external-packages.json: #​71066
  • chore: delete redundant blank spaces in packages directory: #​71189
  • Do not create client reference manifest for metadata route handlers: #​71225
  • Upgrade React from 70fb1363-20241010 to cd22717c-20241013: #​71223
  • Cache in CacheScopeStore in use cache: #​71221
  • Encode binary cache keys as ucs-2 strings: #​71224
  • Hide stack for bad input by default: #​71253
  • [after] after is not dynamic anymore: #​71231
  • codemod: ensure install commands run in terminal: #​71255
  • codemod: install types into dev dependencies: #​71257
  • codemod: polish end message: #​71259
  • chore: Ensure Next.js is built with a specified version of TypeScript: #​71256
  • more detailed time display: #​71248
  • Propagate expire/stale times the same way we do with revalidate: #​71228
  • Update global cache handler ref: #​71263
  • Handle URL-encoded Turbopack client chunks when resolving source maps: #​71274
  • [BREAKING] Support ESLint v9 in plugin, config and next lint: #​71218
  • Make cacheLife profiles configurable: #​71232
  • [dynamicIO] warn in debug mode when prospective renders error: #​71266
  • codemod: prettier the version logging at the beginning: #​71264
  • Fix missing key in LoadingBoundary: #​71222
  • codemod: install core deps based on package.json group: #​71265
  • Set Next-Router-Stale-Time header from collected stale times: #​71279
  • Respect stale time header in client prefetch cache: #​71280
  • Mark revalidate: 0 on fetch or use cache as never resolving promise in Dynamic I/O: #​71285
  • static indicator shouldn't show for force-dynamic: #​71284
  • Implement cacheScope by caching a Promise: #​71286
  • codemod: update react-is if needed: #​71276
  • chore: remove experimental warning for next-config-ts: #​71297
  • fix(next): eslint v9 not picking up config: #​71298
  • Add support for 'use cache' in route handlers using the Edge runtime: #​71258
  • Re-add canary gates for certain experimental features: #​71307
  • Fix symbol for cache: #​71270
Documentation Changes
  • Add WorkOS to list of auth solutions: #​64395
  • docs (mdx): update tree to include mdx-components.tsx file: #​64376
  • Update 02-server-actions-and-mutations.mdx: #​64248
  • Update 04-cypress.mdx: #​64375
  • Update 13-debugging.mdx: #​64344
  • docs: clarify Internationalization (i18n) Routing: #​63853
  • docs(pages): update slug value for optional catch all routes: #​64381
  • Fix optimizePackageImports docs for Pages Router: #​64439
  • Adds MDX Components file convention page and updates MDX page: #​63568
  • docs: fix config variable usage in memory docs: #​64469
  • Fix missing PagesOnly in 05-mdx: #​64505
  • chore(docs): Add example usage of PixelBin custom image loader: #​64074
  • docs(09-authentication): fixes link to NextAuth.js: #​64457
  • Improve auth docs : #​63140
  • Docs: Fix broken link: #​64581
  • docs: clarify runtime: #​64593
Example Changes
  • Add TypeGen to Sanity example: #​64198
  • Update Sanity example deps and tsconfig: #​64570
  • chore: fix a wrong link for with-service-worker example: #​64666
  • Update Nav.tsx: #​64818
  • Update with-storybook example: #​64911
  • bug fix on a pull request #​64911: #​64925
  • Update Sanity example deps: #​64939
  • deps updated for with-mongodb-mongoose example: #​64928
  • Docs: Explain why Layouts (RSCs) can't access pathname: #​64785
  • fix(examples): blog-starter href, remove redundant public folder: #​65025
  • Ensure latest canary of Next.js is installed in repros: #​64967
  • Ensure latest canary of Next.js is installed in repros: #​65197
  • feat(examples): add with-turso: #​61291
  • Fix export function name on docs/routing/layouts-and-templates: #​65240
  • Fixes with-supertokens example: #​65267
  • @​emotion/cache version fix: #​65422
  • update reproduction templates to use correct React: #​65624
  • Resolve grammatical errors in examples: #​65644
  • Update middleware example to App Router: #​65618
  • update cache handler version and added better logic for opting out of…: #​65330
  • Update Sanity example deps and implementation: #​65744
  • update convex README.md: #​65765
  • chore: Bump react-modal to 3.16.2 in with-router-as-modal example: #​65841
  • Update Google Analytics example for App Router: #​66021
  • fix(examples): blog-starter href, remove redundant public folder: #​65025
  • Ensure latest canary of Next.js is installed in repros: #​64967
  • Ensure latest canary of Next.js is installed in repros: #​65197
  • feat(examples): add with-turso: #​61291
  • Fix export function name on docs/routing/layouts-and-templates: #​65240
  • Fixes with-supertokens example: #​65267
  • @​emotion/cache version fix: #​65422
  • update reproduction templates to use correct React: #​65624
  • Resolve grammatical errors in examples: #​65644
  • Update middleware example to App Router: #​65618
  • update cache handler version and added better logic for opting out of…: #​65330
  • Update Sanity example deps and implementation: #​65744
  • update convex README.md: #​65765
  • chore: Bump react-modal to 3.16.2 in with-router-as-modal example: #​65841
  • Update Google Analytics example for App Router: #​66021
  • adopt modern & supported Apollo Client patterns in the with-apollo example: #​65316
  • Update with-react-hook-form example: #​66253
  • chore(examples): update reproduction template: #​66301
  • Update to with-supertokens example: #​66320
  • refactor: rename API endpoint to '/api/protected-api' for comment: #​66456
  • Update Sanity example deps and prepare for next v15: #​66158
  • Update with-supertokens example: #​66827
  • fix: Prevent MongoDB client promise being cached: #​66977
  • Prepare for easier shadcn ui install: #​66469
  • Updated with-sitemap example for App Router: #​66995
  • Example/update blog starter: #​66926
  • fix: fix entry point for storybook, add storybook static ouput to gitignore: #​67207
  • examples(with-mdx): update to MDX 3: #​62503
  • Revert "examples(with-mdx): update to MDX 3": #​67249
  • add more examples to run-for-change script: #​67250
  • Fix Dead Links in @​neshca/cache-handler-redis example README.md: #​67415
  • Update redirects example for App router: #​67065
  • Updated layout-component with new feature layout.js: #​67447
  • [Multi Zones] Update the with-zones example to use App Router: #​67636
  • fix: missing file when build docker: #​67718
  • Examples: updated the example of dynamic-routing to utilize the App Router: #​67684
  • Updated basic-export example with app router: #​67760
  • Migrated the active-class-name Example to App router: #​67622
  • Downgrade react and react-dom to 19.0.0-rc.0: #​67788
  • Examples: updated the example of head-elements to utilize the App Router: #​67829
  • Examples: updated the example of analyze-bundles to utilize the App Router: #​67843
  • fix[examples]: update example cache-handler-redis: #​67350
  • Examples: Updated the example of headers to utilize the App Router: #​67920
  • Updated/Migrated next-css example to the App Router: #​67942
  • [examples] fix: ant-design unstyled hydration issue: #​68000
  • Update cookie handling for Supabase SSR package: #​67413
  • Examples:Updated with-slate example to App Router: #​68060
  • Updated nested-components example to use App Router: #​68065
  • Examples: Updated the example of catch all routes to utilize the App Router: #​68270
  • docs: Custom Server for App Router: #​68167
  • update react remove properties to support app route: #​68324
  • Update Sanity example deps and fix readme typo: #​68359
  • Migrated svg-components to App-router: #​68394
  • with-mongodb update to add both App and Pages Router examples: #​68461
  • fix: ENV warn info: #​68486
  • Migrated 'with-absolute-imports' to App-router Convention: #​68666
  • Updated radix-ui example to use App Router: #​68711
  • updated the example of api-routes to utilize the App Router: #​68771
  • fix: inngest example for latest version: #​68600
  • Compose refactor: #​68503
  • Improve TypeGen in Sanity Example: #​68580
  • Update page.tsx - Fixing hydration error: #​66868
  • fix: cache-handler example should reconnect to redis after errors: #​68221
  • (Examples) Adds with-google-tag-manager example that uses @next/third-parties: #​57364
  • Fix linting from #​57364: #​68951
  • examples: avoid duplicate css insert for ant design: #​57947
  • docs(examples): fix next-translate prod hydration error in layout: #​52653
  • (Example) Remove redirects plugin from Sitecore XM Cloud example: #​69094
  • Supabase: improve sign in and sign up, add reset password: #​69066
  • Add Meilisearch example: #​53251
  • updated the example of custom-routes-proxying to utilize the App Router: #​68941
  • examples: update "ENV key value" format format to "ENV key=value": #​69053
  • fix: ENV warning: #​69091
  • Reduce TypeGen boilerplate in Sanity Example: #​69134
  • Examples - Updated with-windcss example for App Router: #​69365
  • examples: Supabase | ui.shadcn, App Router Layouts: #​69308
  • Fix: Example Template | with-supabase - wrong file name breaking build: #​69394
  • Fix/ Examples use-supabase | Multiple improvements : #​69407
  • examples: Updating WordPress example to Next 14: #​62447
  • Add cms-umbraco example: #​52777
  • Example: Updated the example of rewrites to utilize the App Router: #​69495
  • docs: Use useFormState over useActionState: #​69547
  • updated the example of modularize-imports to utilize the App Router: #​69771
  • updated the example of with-xstate to utilize the App Router: #​69960
  • Updated the example of with-eslint to utilize the App Router.: #​70018
  • Remove stores params: #​69796
  • Fix example URL for api-routes -> route-handlers: #​69642
  • Update with web worker example to utilize the App Router: #​70058
  • fix(examples): typo command name: #​70094
  • fix: button className in with_supabase example: #​70121
  • fix(examples): remove version attribute post deprecation: #​70108
  • Update examples/github-pages/README.md: #​70057
  • remove unsafe-inline from with-strict-csp: #​69497
  • chore/ examples use-supabase | update rate limit note: #​69423
  • examples(with-supabase): typo on env file name: #​69291
  • fix(examples/with-docker): remove not needed files from docker context: #​68668
  • updated the example of with-videojs to utilize the App Router: #​70226
  • updated the example of with-three-js to utilize the App Router: #​70287
  • Updated the example of with-vercel-fetch to utilize the App Router.: #​70069
  • Updated the example of ssr-caching to utilize the App Router.: #​69560
  • Updated the example of ssr-caching to utilize the App Router.: #​69560
  • fix(example): Change hostname in docker multiple env examples: #​70105
  • Updated the example of with-draft-js to utilize the App Router.: #​70045
  • Fix Stackblitz preview link on with-opentelemetry example: #​70543
  • [Multi-Zones] Update example and documentation with most recent practices for Multi-Zones: #​70565
  • updated the environment variables examples to utilize the App router: #​70392
  • chore(examples): updated the example of with-styled-components: #​70796
  • chore(examples):updated the example of with-stitches to utlize the App router: #​71007
  • docs(typo): fix typo in cms-sanity example README.md: #​71211
Credits

Huge thanks to @​huozhi, @​shuding, @​wyattjoh, @​PaulAsjes, @​mcnaveen, @​timneutkens, @​stipsan, @​aktoriukas, @​sirTangale, @​greatvivek11, @​sokra, @​anatoliik-lyft, @​wbinnssmith, @​coltonehrman, @​hungdoansy, @​kxlow, @​ztanner, @​manovotny, @​leerob, @​ryota-murakami, @​ijjk, @​pnutmath, @​feugy, @​Jeffrey-Zutt, @​wiesson, @​eps1lon, @​devjiwonchoi, @​Ethan-Arrowood, @​kenji-webdev, @​domdomegg, @​samcx, @​Jaaneek, @​evanwinter, @​kdy1, @​balazsorban44, @​feedthejim, @​ForsakenHarmony, @​kwonoj, @​delbaoliveira, @​xiaohanyu, @​dvoytenko, @​bobaaaaa, @​bgw, @​gaspar09, @​souporserious, @​unflxw, @​kiner-tang, @​Ehren12, @​EffectDoplera, @​IAmKushagraSharma, @​Auxdible, @​sean-rallycry, @​jeanmax1me, @​unstubbable, @​NilsJacobsen, @​adiguno, @​ryan-nauman, @​zsh77, @​KagamiChan, @​steveluscher, @​MehfoozurRehman, @​vkryachko, @​chentsulin, @​samijaber, @​begalinsaf, @​FluxCapacitor2, @​lukahartwig, @​brianshano, @​pavelglac, @​styfle, @​symant233, @​HristovCodes, @​karlhorky, @​jonluca, @​jonathan-ingram, @​mknichel, @​sopranopillow, @​Gomah, @​imddc, @​notrab, @​gabrielrolfsen, @​remorses, @​AbhiShake1, @​agadzik, @​rishabhpoddar, @​rezamauliadi, @​IncognitoTGT, @​webtinax, @​BunsDev, @​nisabmohd, @​z0n, @​bennettdams, @​joeshub, @​n1ckoates, @​srkirkland, @​RiskyMH, @​coopbri, @​okoyecharles, @​diogocapela, @​dnhn, @​typeofweb, @​davidsa03, @​imranolas, @​lubieowoce, @​maxhaomh, @​mirasayon, @​blvdmitry, @​hwangstar156, @​lforst, @​emmerich, @​christian-bromann, @​Lsnsh, @​datner, @​hiro0218, @​flybayer, @​ianmacartney, @​ypessoa, @​ryohidaka, @​icyJoseph, @​Arinji2, @​lovell, @​nsams, @​Nayeem-XTREME, @​JamBalaya56562, @​Arindam200, @​gaojude, @​qqww08, @​todor0v, @​tokkiyaa, @​arlyon, @​lorensr, @​Juneezee, @​Sayakie, @​IGassmann, @​bosconian-dynamics, @​phryneas, @​akazwz, @​atik-persei, @​shubh73, @​alpedia0, @​chogyejin, @​notomo, @​ArnoldVanN, @​dhruv-kaushik, @​kevva, @​Kahitar, @​anay-208, @​boris-szl, @​devnyxie, @​LorisSigrist, @​M-YasirGhaffar, @​Lada496, @​kippmr, @​torresgol10, @​pkiv, @​Netail, @​jontewks, @​ArnaudFavier, @​chrisjstott, @​mratlamwala, @​mayank1513, @​karlkeefer, @​kshehadeh, @​Marukome0743, @​a89529294, @​anku255, @​KeisukeNagakawa, @​andrii-bodnar, @​aldosch, @​versecafe, @​steadily-worked, @​cfrank, @​QiuranHu, @​farsabbutt, @​joostmeijles, @​saltcod, @​archanaagivale30, @​crutchcorn, @​crebelskydico, @​Maaz-Ahmed007, @​jophy-ye, @​remcohaszing, @​JoshuaKGoldberg, @​creativoma, @​GyoHeon, @​SukkaW, @​MaxLeiter, @​neila-a, @​stylessh, @​Teddir, @​ManuLpz4, @​Julian-Louis, @​syi0808, @​mert-duzgun, @​amannn, @​MonstraG, @​hamirmahal, @​tariknh, @​Kikobeats, @​LichuAcu, @​Kuboczoch, @​himself65, @​Sam-Phillemon9493, @​Shruthireddy04, @​Hemanshu-Upadhyay, @​timfuhrmann, @​controversial, @​pathliving, @​mischnic, @​mauroaccornero, @​NavidNourani, @​allanchau, @​ekremkenter, @​yurivangeffen, @​gnoff, @​darthmaim, @​gdborton, @​Willem-Jaap, @​KentoMoriwaki, @​TrevorSayre, @​marlier, @​Luluno01, @​xixixao, @​domin-mnd, @​niketchandivade, @​N2D4, @​kjugi, @​luciancah, @​mud-ali, @​codeSTACKr, @​luojiyin1987, @​mehmetozguldev, @​ronanru, @​tknickman, @​joelhooks, @​khawajaJunaid, @​rubyisrust, @​abdull-haseeb, @​bewinsnw, @​housseindjirdeh, @​li-jia-nan, @​aralroca, @​s-ekai, @​ah100101, @​jantimon, @​jordienr, @​iscekic, @​Strift, @​slimbde, @​nauvalazhar, @​HughHzyb, @​guisehn, @​wesbos, @​OlyaPolya, @​paarthmadan, @​AhmedBaset, @​dineshh-m, @​avdeev, @​Bhavya031, @​MildTomato, @​Bjornnyborg, @​amikofalvy, @​yosefbeder, @​kjac, @​woutvanderploeg, @​Ocheretovich, @​ProchaLu, @​luismiramirez, @​omahs, @​theoludwig, @​abhi12299, @​sommeeeer, @​lumirlumir, @​royalfig, @​iampoul, @​molebox, @​txxxxc, @​zce, @​mamuso, @​kahlstrm, @​vercel-release-bot, @​zhawtof, @​PapatMayuri, @​PlagueFPS, @​IDNK2203, @​jericopulvera, @​liby, @​CannonLock, @​timfish, @​whatisagi, @​none23, @​haouvw, @​Pyr33x, @​SouthLink, @​frydj, @​CrutchTheClutch, @​sleevezip, @​r34son, @​yunsii, @​md-rejoyan-islam, @​kartheesan05, @​nattui, @​KonkenBonken, @​weicheng95, @​brekk, @​Francoscopic, @​B33fb0n3, @​ImDR, @​nurullah, @​hdodov, @​ebCrypto, @​soedirgo, @​floriangosse, @​Tim-Zj, @​raeyoung-kim, @​erwannbst, @​DerTimonius, @​hirotomoyamada, @​Develliot, @​chandanpasunoori, @​vicb, @​ankur-dwivedi, @​kidonng, @​baeharam, @​AnaTofuZ, @​coderfin, @​xugetsu, @​alessiomaffeis, @​kutsan, @​jordyfontoura, @​sebmarkbage, @​tranvanhieu01012002, @​jlbovenzo, @​Luk-z, @​jaredhan418, @​bangseongbeom, @​penicillin0, @​neoFinch, @​DeepakBalaraman, @​Manoj-M-S, @​Unsleeping, @​lonr, @​Aerilym, @​ytori, @​acdlite, @​actopas, @​n-ii-ma, @​adcichowski, @​mobeigi, @​JohnGemstone, and @​jjm2317 for helping!

v14.2.21

Compare Source

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

Core Changes
Misc Changes
Credits

Huge thanks to @​unstubbable, @​ztanner, and @​styfle for helping!

v14.2.20

Compare Source

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

Core Changes
Credits

Huge thanks to @​wyattjoh for helping!

v14.2.19

Compare Source

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

Core Changes
  • ensure worker exits bubble to parent process (#​73433)
  • Increase max cache tags to 128 (#​73125)
Misc Changes
  • Update max tag items limit in docs (#​73445)
Credits

Huge thanks to @​ztanner and @​ijjk for helping!

v14.2.18

Compare Source

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

Core Changes
Credits

Huge thanks to @​huozhi and @​ijjk for helping!

v14.2.17

Compare Source

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

Core Changes
  • Fix: revert the bad node binary handling (#​72356)
  • Ensure pages/500 handles cache-control as expected (#​72050) (#​72110)
  • fix unhandled runtime error from generateMetadata in parallel routes (#​72153)
Credits

Huge thanks to @​huozhi, @​ztanner, and @​ijjk for helping!

v14.2.16

Compare Source

v14.2.15

Compare Source

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

Core Changes
  • support breadcrumb style catch-all parallel routes #​65063
  • Provide non-dynamic segments to catch-all parallel routes #​65233
  • Fix client reference access causing metadata missing #​70732
  • feat(next/image): add support for decoding prop #​70298
  • feat(next/image): add images.localPatterns config #​70529
  • fix(next/image): handle undefined images.localPatterns config in images-manifest.json
  • fix: Do not omit alt on getImgProps return type, ImgProps #​70608
  • [i18n] Routing fix #​70761
Credits

Huge thanks to @​ztanner, @​agadzik, @​huozhi, @​styfle, @​icyJoseph and @​wyattjoh for helping!

v14.2.14

Compare Source

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

Core Changes
  • Fix: clone response in first handler to prevent race (#​70082) (#​70649)
  • Respect reexports from metadata API routes (#​70508) (#​70647)
  • Externalize node binary modules for app router (#​70646)
  • Fix revalidateTag() behaviour when invoked in server components (#​70446) (#​70642)
  • Fix prefetch bailout detection for nested loading segments (#​70618)
  • Add missing node modules to externals (#​70382)
  • Feature: next/image: add support for images.remotePatterns.search (#​70302)
Credits

Huge thanks to @​styfle, @​ztanner, @​ijjk, @​huozhi and @​wyattjoh for helping!

v14.2.13

Compare Source

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

Core Changes
  • Fix missing cache-control on SSR app route (#​70265)
  • feat: add polyfill of URL.canParse for browser compatibility (#​70228)
  • Fix vercel og package memory leak (#​70214)
  • Fix startTime error on Android 9 with Chrome 74 (#​67391)
Credits

Huge thanks to @​raeyoung-kim, @​huozhi, @​devjiwonchoi, and @​ijjk for helping!

v14.2.12

Compare Source

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

Core Changes
  • update prefetching jsdoc & documentation (#​68047)
  • Ensure we chunk revalidate tag requests (#​70189)
  • (backport) fix(eslint): allow typescript-eslint v8 (#​70090)
  • [ppr] Don't mark RSC requests as /_next/data requests (backport of #​66249) (#​70083)
Credits

Huge thanks to @​alvarlagerlof, @​wyattjoh, @​delbaoliveira, and @​ijjk for helping!

v14.2.11

Compare Source

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

Core Changes
Credits

Huge thanks to @​huozhi, @​devjiwonchoi, and @​ijjk for helping!

v14.2.10

Compare Source

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

Core Changes
Credits

Huge thanks to @​huozhi and @​ijjk for helping!

v14.2.9

Compare Source

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

Core Changes
  • Revert "Fix esm property def in flight loader (#​66990)" (#​69749)
  • Disable experimental.optimizeServer by default to fix failed server action (#​69788)
  • Fix middleware fallback: false case (#​69799)
  • Fix status code for /_not-found route (#​64058) (#​69808)
  • Fix metadata prop merging (#​69807)
  • create-next-app: fix font file corruption when using import alias (#​69806)
Credits

Huge thanks to @​huozhi, @​ztanner, @​ijjk, and @​lubieowoce for helping!

v14.2.8

Compare Source

What's Changed

[!NOTE]
This release is backporting bug fixes and minor improvements. It does not include all pending features/changes on canary.

Support esmExternals in app directory
Reading cookies set in middleware in components and actions
  • initialize ALS with cookies in middleware (#​65008)
  • fix middleware cookie initialization (#​65820)
  • ensure cookies set in middleware can be read in a server action (#​67924)
  • fix: merged middleware cookies should preserve options (#​67956)
Metadata and icons
  • support facebook-specific metadata (fb:app_id, fb:admins) in generateMetaData (#​65713)
  • Always collect static icons for all segments (#​68712)
  • Fix favicon merging with customized icons (#​67982)
  • Warn metadataBase missing in standalone mode or non vercel deployment (#​66296)
Parallel routes fixes
  • fix missing stylesheets when parallel routes are present (#​69507)
Draft mode and edge improvements
next/image fixes
  • Allow external image urls with _next/image pathname to be rendered via Image component (#​69586)
Server actions improvements
  • optimize server actions (#​66523)
  • Apply optimization for unused actions (#​69178)
  • Improve SWC transform ID generation (#​69183)
Other changes
  • Ensure we match comment minify behavior between terser and swc (#​68372)
  • send initialCanonicalUrl in array format to prevent crawler confusion (#​69509)
Create-next-app updates

Full Changelog: https://github.com/vercel/next.js/compare/v14.2.7...v14.2.8


Huge thanks to everyone who contributed to this release: @​abhi12299, @​delbaoliveira, @​eps1lon, @​ForsakenHarmony, @​huozhi, @​ijjk, @​JoshuaKGoldberg, @​leerob, @​lubieowoce, @​Netail, @​ronanru, @​samcx, @​shuding, @​sokra, @​stylessh, @​timfuhrmann, @​wbinnssmith, @​wyattjoh, @​ypessoa, @​ztanner

v14.2.7

Compare Source

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

Core Changes
  • Revert "chore: externalize undici for bundling" (#​65727)
  • Refactor internal routing headers to use request meta (#​66987)
  • fix(next): add cross origin in react dom preload (#​67423)
  • build: upgrade edge-runtime (#​67565)
  • GTM dataLayer parameter should take an object, not an array of strings (#​66339)
  • fix: properly patch lockfile against swc bindings (#​66515)
  • Add deployment id header for rsc payload if present (#​67255)
  • Update font data (#​68639)
  • fix i18n data pathname resolving (#​68947)
  • pages router: ensure x-middleware-cache is respected (#​67734)
  • Fix bad modRequest in flight entry manifest #​68888
  • Reject next image urls in image optimizer #​68628
  • Fix hmr assetPrefix escaping and reuse logic from other files #​67983
Credits

Huge thanks to @​kjugi, @​huozhi, @​ztanner, @​SukkaW, @​marlier, @​Kikobeats, @​syi0808, @​ijjk, and @​samcx for helping!

v14.2.6

Compare Source

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

Core Changes
  • Ensure fetch cache TTL is updated properly (#​69164)

v14.2.5

Compare Source

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

Core Changes
  • avoid merging global css in a way that leaks into other chunk groups (#​67373)
  • Fix server action edge redirect with middleware rewrite (#​67148)
  • fix(next): reject protocol-relative URLs in image optimization (#​65752)
  • fix(next-swc): correct path interop to filepath for wasm (#​65633)
  • Use addDependency to track metadata route file changes (#​66714)
  • Fix noindex is missing on static not-found page (#​67135)
  • perf: improve retrieving versionInfo on Turbo HMR (#​67309)
  • fix(next/image): handle invalid url (#​67465)
  • fix(next): initial prefetch cache not set properly with different search params (#​65977)
  • fix: Backport class properties fix (#​67377)
  • Upgrade acorn (#​67592)
Misc
  • Log stdio for pull-turbo-cache script (#​66759)
  • Ensure turbo is setup when building in docker (#​66804)
Credits

Huge thanks to @​devjiwonchoi, @​ijjk, @​emmerich, @​huozhi, @​kdy1, @​kwonoj, @​styfle, and @​sokra for helping!

v14.2.4

Compare Source

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

Core Changes
  • fix: ensure route handlers properly track dynamic access (#​66446)
  • fix NextRequest proxy in edge runtime (#​66551)
  • Fix next/dynamic with babel and src dir (#​65177)
  • Use vercel deployment url for metadataBase fallbacks (#​65089)
  • fix(next/image): detect react@19 for fetchPriority prop (#​65235)
  • Fix loading navigation with metadata and prefetch (#​66447)
  • prevent duplicate RSC fetch when action redirects (#​66620)
  • ensure router cache updates reference the latest cache values (#​66681)
  • Prevent append of trailing slash in cases where path ends with a file extension (#​66636)
  • Fix inconsistency with 404 getStaticProps cache-control (#​66674)
  • Use addDependency to track metadata route file changes (#​66714)
  • Add timeout/retry handling for fetch cache (#​66652)
  • fix: app-router prefetch crash when an invalid URL is passed to Link (#​66755)
Credits

Huge thanks to @​ztanner, @​ijjk, @​wbinnssmith, @​huozhi, and @​lubieowoce for helping!

nodejs/node (node)

v22.12.0: 2024-12-03, Version 22.12.0 'Jod' (LTS), @​ruyadorno

Compare Source

Notable Changes
require(esm) is now enabled by default

Support for loading native ES modules using require() had been available on v20.x and v22.x under the command line flag --experimental-require-module, and available by default on v23.x. In this release, it is now no longer behind a flag on v22.x.

This feature is still experimental, and we are looking for user feedback to make more final tweaks before fully stabilizing it. For this reason, on v22.x, when the Node.js instance encounters a native ES module in require() for the first time, it will emit an experimental warning unless require() comes from a path that contains node_modules. If there happens to be any regressions caused by this feature, users can report it to the Node.js issue tracker. Meanwhile this feature can also be disabled using --no-experimental-require-module as a workaround.

With this feature enabled, Node.js will no longer throw ERR_REQUIRE_ESM if require() is used to load a ES module. It can, however, throw ERR_REQUIRE_ASYNC_MODULE if the ES module being loaded or its dependencies contain top-level await. When the ES module is loaded successfully by require(), the returned object will either be a ES module namespace object similar to what's returned by import(), or what gets exported as "module.exports" in the ES module.

Users can check process.features.require_module to see whether require(esm) is enabled in the current Node.js instance. For packages, the "module-sync" exports condition can be used as a way to detect require(esm) support in the current Node.js instance and allow both require() and import to load the same native ES module. See the documentation for more details about this feature.

Contributed by Joyee Cheung in #​55085

Added resizable ArrayBuffer support in Buffer

When a Buffer is created using a resizable ArrayBuffer, the Buffer length will now correctly change as the underlying ArrayBuffer size is changed.

const ab = new ArrayBuffer(10, { maxByteLength: 20 });
const buffer = Buffer.from(ab);
console.log(buffer.byteLength); 10
ab.resize(15);
console.log(buffer.byteLength); 15
ab.resize(5);
console.log(buffer.byteLength); 5

Contributed by James Snell in #​55377

Update root certificates to NSS 3.104

This is the version of NSS that shipped in Firefox 131.0 on 2024-10-01.

Certificates added:

  • FIRMAPROFESIONAL CA ROOT-A WEB
  • TWCA CYBER Root CA
  • SecureSign Root CA12
  • SecureSign Root CA14
  • SecureSign Root CA15

Contributed by Richard Lau in #​55681

Other Notable Changes
  • [4920869935] - (SEMVER-MINOR) assert: make assertion_error use Myers diff algorithm (Giovanni Bucci) #​54862
  • [ccffd3b819] - doc: enforce strict policy to semver-major releases (Rafael Gonzaga) #​55732
  • [acc6806900] - doc: add jazelly to collaborators (Jason Zhang) #​55531
  • [88d91e8bc2] - esm: mark import attributes and JSON module as stable (Nicolò Ribaudo) #​55333
  • [98bfc7dce5] - (SEMVER-MINOR) http: add diagnostic channel http.client.request.created (Marco Ippolito) #​55586
  • [337f61fb25] - (SEMVER-MINOR) lib: add UV_UDP_REUSEPORT for udp (theanarkh) #​55403
  • [1628c48ad6] - (SEMVER-MINOR) net: add UV_TCP_REUSEPORT for tcp (theanarkh) #​55408
  • [457e73f4c9] - (SEMVER-MINOR) sqlite: add support for SQLite Session Extension (Bart Louwers) #​54181
Commits

v22.11.0: 2024-10-29, Version 22.11.0 'Jod' (LTS), @​richardlau

Compare Source

Notable Changes

This release marks the transition of Node.js 22.x into Long Term Support (LTS) with the codename 'Jod'. The 22.x release line now moves into "Active LTS" and will remain so until October 2025. After that time, it will move into "Maintenance" until end of life in April 2027.

Other than updating metadata, such as the process.release object, to reflect that the release is LTS, no further changes from Node.js 22.10.0 are included.

OpenSSL 3.x

Official binaries for Node.js 22.x currently include OpenSSL 3.0.x (more specifically, the quictls OpenSSL fork). OpenSSL 3.0.x is the currently designated long term support version that is scheduled to be supported until 7th September 2026, which is within the expected lifetime of Node.js 22.x. We are expecting upstream OpenSSL to announce a successor long term support version prior to that date and since OpenSSL now follows a semantic versioning-like versioning scheme we expect to be able to update to the next long term supported version of OpenSSL during the lifetime of Node.js 22.x.

v22.10.0: 2024-10-16, Version 22.10.0 (Current), @​aduh95

Compare Source

Notable Changes
New "module-sync" exports condition

This release introduces a "module-sync" exports condition that's enabled when require(esm) is enabled, so packages can supply a synchronous ES module to the Node.js module loader, no matter if it's being required or imported. This is similar to the "module" condition that bundlers have been using to support require(esm) in Node.js, and allows dual-package authors to opt into ESM-first only on newer versions of Node.js that supports require(esm) to avoid the dual-package hazard.

{
  "type": "module",
  "exports": {
    "node": {
      // On new version of Node.js, both require() and import get
      // the ESM version
      "module-sync": "./index.js",
      // On older version of Node.js, where "module-sync" and require(esm) are
      // not supported, use the CJS version to avoid dual-package hazard.
      // When package authors think it's time to drop support for older versions of
      // Node.js, they can remove the exports conditions and just use "main": "index.js".
      "default": "./dist/index.cjs"
    },
    // On any other environment, use the ESM version.
    "default": "./index.js"
  }
}

Or if the package is only meant to be run on Node.js and wants to fallback to CJS on older versions that don't have require(esm):

{
  "type": "module",
  "exports": {
    // On new version of Node.js, both require() and import get the ESM version
    "module-sync": "./index.js",
    // On older version of Node.js, where "module-sync" and require(esm) are
    // not supported, use the CJS version to avoid dual-package hazard.
    // When package authors think it's time to drop support for older versions of
    // Node.js, they can remove the exports conditions and just use "main": "index.js".
    "default": "./dist/index.cjs"
  }
}

For package authors: this only serves as a feature-detection mechanism for packages that wish to support both CJS and ESM users during the period when some active Node.js LTS versions support require(esm) while some older ones don't. When all active Node.js LTS lines support require(esm), packages can simplify their distributions by bumping the major version, dropping their CJS exports, and removing the module-sync exports condition (with only main or default targetting the ESM exports). If the package needs to support both bundlers and being run unbundled on Node.js during the transition period, use both module-sync and module and point them to the same ESM file. If the package already doesn't want to support older versions of Node.js that doesn't support require(esm), don't use this export condition.

For bundlers/tools: they should avoid implementing this stop-gap condition. Most existing bundlers implement the de-facto bundler standard module exports condition, and that should be enough to support users who want to bundle ESM from CJS consumers. Users who want both bundlers and Node.js to recognize the ESM exports can use both module/module-sync conditions during the transition period, and can drop module-sync+module when they no longer need to support older versions of Node.js. If tools do want to support this condition, it's recommended to make the resolution rules in the graph pointed by this condition match the Node.js native ESM rules to avoid divergence.

We ended up implementing a condition with a different name instead of reusing "module", because existing code in the ecosystem using the "module" condition sometimes also expect the module resolution for these ESM files to work in CJS style, which is supported by bundlers, but the native Node.js loader has intentionally made ESM resolution different from CJS resolution (e.g. forbidding import './noext' or import './directory'), so it would be breaking to implement a "module" condition without implementing the forbidden ESM resolution rules. For now, this just implements a new condition as semver-minor so it can be backported to older LTS.

Contributed by Joyee Cheung in #​54648.

node --run is now stable

This CLI flag runs a specified command from a package.json's "scripts" object.

For the following package.json:

{
  "scripts": {
    "test": "node --test-reporter junit --test ./test"
  }
}

You can run node --run test and that would start the test suite.

Contributed by Yagiz Nizipli in #​53763.

Other notable changes
  • [f0b441230a] - (SEMVER-MINOR) crypto: add KeyObject.prototype.toCryptoKey (Filip Skokan) #​55262
  • [349d2ed07b] - (SEMVER-MINOR) crypto: add Date fields for validTo and validFrom (Andrew Moon) #​54159
  • [bebc95ed58] - doc: add abmusse to collaborators (Abdirahim Musse) #​55086
  • [914db60159] - (SEMVER-MINOR) http2: expose nghttp2_option_set_stream_reset_rate_limit as an option (Maël Nison) #​54875
  • [f7c3b03759] - (SEMVER-MINOR) lib: propagate aborted state to dependent signals before firing events (jazelly) #​54826
  • [32261fc98a] - (SEMVER-MINOR) module: support loading entrypoint as url (RedYetiDev) #​54933
  • [06957ff355] - (SEMVER-MINOR) module: implement flushCompileCache() (Joyee Cheung) #​54971
  • [2dcf70c347] - (SEMVER-MINOR) module: throw when invalid argument is passed to enableCompileCache() (Joyee Cheung) #​54971
  • [f9b19d7c44] - (SEMVER-MINOR) module: write compile cache to temporary file and then rename it (Joyee Cheung) #​54971
  • [e95163b170] - (SEMVER-MINOR) process: add process.features.require_module (Joyee Cheung) #​55241
  • [4050f68e5d] - (SEMVER-MINOR) process: add process.features.typescript (Aviv Keller) #​54295
  • [86f7cb802d] - (SEMVER-MINOR) test_runner: support custom arguments in run() (Aviv Keller) #​55126
  • [b62f2f8259] - (SEMVER-MINOR) test_runner: add 'test:summary' event (Colin Ihrig) #​54851
  • [d7c708aec5] - (SEMVER-MINOR) test_runner: add support for coverage via run() (Chemi Atlow) #​53937
  • [5fda4a1498] - (SEMVER-MINOR) worker: add markAsUncloneable api (Jason Zhang) #​55234
Commits

v22.9.0: 2024-09-17, Version 22.9.0 (Current), @​RafaelGSS

Compare Source

New API to retrieve execution Stack Trace

A new API getCallSite has been introduced to the util module. This API allows users to retrieve the stacktrace of the current execution. Example:

const util = require('node:util');

function exampleFunction() {
  const callSites = util.getCallSite();

  console.log('Call Sites:');
  callSites.forEach((callSite, index) => {
    console.log(`CallSite ${index + 1}:`);
    console.log(`Function Name: ${callSite.functionName}`);
    console.log(`Script Name: ${callSite.scriptName}`);
    console.log(`Line Number: ${callSite.lineNumber}`);
    console.log(`Column Number: ${callSite.column}`);
  });
  // CallSite 1:
  // Function Name: exampleFunction
  // Script Name: /home/example.js
  // Line Number: 5
  // Column Number: 26

  // CallSite 2:
  // Function Name: anotherFunction
  // Script Name: /home/example.js
  // Line Number: 22
  // Column Number: 3

  // ...
}

// A function to simulate another stack layer
function anotherFunction() {
  exampleFunction();
}

anotherFunction();

Thanks to Rafael Gonzaga for making this work on #​54380.

Disable V8 Maglev

We have seen several crashes/unexpected JS behaviors with maglev on v22 (which ships V8 v12.4). The bugs lie in the codegen so it would be difficult for users to work around them or even figure out where the bugs are coming from. Some bugs are fixed in the upstream while some others probably remain.

As v22 will get stuck with V8 v12.4 as LTS, it will be increasingly difficult to backport patches for them even if the bugs are fixed. So disable it by default on v22 to reduce the churn and troubles for users.

Thanks to Joyee Cheung for making this work on #​54384

Exposes X509_V_FLAG_PARTIAL_CHAIN to tls.createSecureContext

This releases introduces a new option to the API tls.createSecureContext. For now on users can use tls.createSecureContext({ allowPartialTrustChain: true }) to treat intermediate (non-self-signed) certificates in the trust CA certificate list as trusted.

Thanks to Anna Henningsen for making this work on #​54790

Other Notable Changes
  • [5c9599af5a] - src: create handle scope in FastInternalModuleStat (Joyee Cheung) #​54384
  • [e2307d87e8] - (SEMVER-MINOR) stream: relocate the status checking code in the onwritecomplete (YoonSoo_Shin) #​54032
Deprecations
  • [8433032948] - repl: doc-deprecate instantiating node:repl classes without new (Aviv Keller) #​54842
  • [8c4c85cf31] - zlib: deprecate instantiating classes without new (Yagiz Nizipli) #​54708
Commits

v22.8.0: 2024-09-03, Version 22.8.0 (Current), @​RafaelGSS

Compare Source

New JS API for compile cache

This release adds a new API module.enableCompileCache() that can be used to enable on-disk code caching of all modules loaded after this API is called. Previously this could only be enabled by the NODE_COMPILE_CACHE environment variable, so it could only set by end-users. This API allows tooling and library authors to enable caching of their own code. This is a built-in alternative to the v8-compile-cache/v8-compile-cache-lib packages, but have better performance and supports ESM.

Thanks to Joyee Cheung for working on this.

New option for vm.createContext() to create a context with a freezable globalThis

Node.js implements a flavor of vm.createContext() and friends that creates a context without contextifying its global object when vm.constants.DONT_CONTEXTIFY is used. This is suitable when users want to freeze the context (impossible when the global is contextified i.e. has interceptors installed) or speed up the global access if they don't need the interceptor behavior.

Thanks to Joyee Cheung for working on this.

Support for coverage thresholds

Node.js now supports requiring code coverage to meet a specific threshold before the process exits successfully. To use this feature, you need to enable the --experimental-test-coverage flag.

You can set thresholds for the following types of coverage:

  • Branch coverage: Use --test-coverage-branches=<threshold>
  • Function coverage: Use --test-coverage-functions=<threshold>
  • Line coverage: Use --test-coverage-lines=<threshold>

<threshold> should be an integer between 0 and 100. If an invalid value is provided, a TypeError will be thrown.

If the code coverage fails to meet the specified thresholds for any category, the process will exit with code 1.

For instance, to enforce a minimum of 80% line coverage and 60% branch coverage, you can run:

$ node --experimental-test-coverage --test-coverage-lines=80 --test-coverage-branches=60 example.js

Thanks Aviv Keller for working on this.

Other Notable Changes
  • [1f2cc2fa47] - (SEMVER-MINOR) src,lib: add performance.uvMetricsInfo (Rafael Gonzaga) #​54413
  • [1e01bdc0d0] - (SEMVER-MINOR) net: exclude ipv6 loopback addresses from server.listen (Giovanni Bucci) #​54264
  • [97fa075c2e] - (SEMVER-MINOR) test_runner: support running tests in process (Colin Ihrig) #​53927
  • [858b583c88] - (SEMVER-MINOR) test_runner: defer inheriting hooks until run() (Colin Ihrig) #​53927
Commits

v22.7.0: 2024-08-22, Version 22.7.0 (Current), @​RafaelGSS

Compare Source

Experimental transform types support

With the new flag --experimental-transform-types it is possible to enable the transformation of TypeScript-only syntax into JavaScript code.

This feature allows Node.js to support TypeScript syntax such as Enum and namespace.

Thanks to Marco Ippolito for making this work on #​54283.

Module syntax detection is now enabled by default.

Module syntax detection (the --experimental-detect-module flag) is now enabled by default. Use --no-experimental-detect-module to disable it if needed.

Syntax detection attempts to run ambiguous files as CommonJS, and if the module fails to parse as CommonJS due to ES module syntax, Node.js tries again and runs the file as an ES module. Ambiguous files are those with a .js or no extension, where the nearest parent package.json has no "type" field (either "type": "module" or "type": "commonjs"). Syntax detection should have no performance impact on CommonJS modules, but it incurs a slight performance penalty for ES modules; add "type": "module" to the nearest parent package.json file to eliminate the performance cost. A use case unlocked by this feature is the ability to use ES module syntax in extensionless scripts with no nearby package.json.

Thanks to Geoffrey Booth for making this work on #​53619.

Performance Improvements to Buffer

Performance of Node.js Buffers have been optimized through multiple MR's with significant improvements to the Buffer.copy and Buffer.write methods. These are used throughout the codebase and should give a nice boost across the board.

Thanks to Robert Nagy for making this work on #​54311, #​54324, and #​54087.

Other Notable Changes
  • [911de7dd6d] - (SEMVER-MINOR) inspector: support Network.loadingFailed event (Kohei Ueno) #​54246
  • [9ee4b16bd8] - (SEMVER-MINOR) lib: rewrite AsyncLocalStorage without async_hooks (Stephen Belanger) #​48528
Commits

v22.6.0: 2024-08-06, Version 22.6.0 (Current), @​RafaelGSS

Compare Source

Experimental TypeScript support via strip types

Node.js introduces the --experimental-strip-types flag for initial TypeScript support. This feature strips type annotations from .ts files, allowing them to run without transforming TypeScript-specific syntax. Current limitations include:

  • Supports only inline type annotations, not features like enums or namespaces.
  • Requires explicit file extensions in import and require statements.
  • Enforces the use of the type keyword for type imports to avoid runtime errors.
  • Disabled for TypeScript in node_modules by default.

Thanks Marco Ippolito for working on this.

Experimental Network Inspection Support in Node.js

This update introduces the initial support for network inspection in Node.js. Currently, this is an experimental feature, so you need to enable it using the --experimental-network-inspection flag. With this feature enabled, you can inspect network activities occurring within a JavaScript application.

To use network inspection, start your Node.js application with the following command:

$ node --inspect-wait --experimental-network-inspection index.js

Please note that the network inspection capabilities are in active development. We are actively working on enhancing this feature and will continue to expand its functionality in future updates.

Thanks Kohei Ueno for working on this.

Other Notable Changes
Commits

v22.5.1: 2024-07-19, Version 22.5.1 (Current), @​richardlau

Compare Source

Notable Changes

This release fixes a regression introduced in Node.js 22.5.0. The problem is known to display the following symptoms:

  • Crash with FATAL ERROR: v8::Object::GetCreationContextChecked No creation context available #​53902
  • npm errors with npm error Exit handler never called! npm/cli#7657
  • yarn hangs or outputs Usage Error: Couldn't find the node_modules state file - running an install might help (findPackageLocation) yarnpkg/berry#6398
Commits

v22.5.0: 2024-07-17, Version 22.5.0 (Current), @​RafaelGSS prepared by @​aduh95

Compare Source

Notable Changes
Commits

v22.4.1: 2024-07-08, Version 22.4.1 (Current), @​RafaelGSS

Compare Source

This is a security release.

Notable Changes
  • CVE-2024-36138 - Bypass incomplete fix of CVE-2024-27980 (High)
  • CVE-2024-22020 - Bypass network import restriction via data URL (Medium)
  • CVE-2024-22018 - fs.lstat bypasses permission model (Low)
  • CVE-2024-36137 - fs.fchown/fchmod bypasses permission model (Low)
  • CVE-2024-37372 - Permission model improperly processes UNC paths (Low)
Commits

v22.4.0: 2024-07-02, Version 22.4.0 (Current), @​targos

Compare Source

Notable Changes
Experimental Web Storage API
  • [9e30724b53] - (SEMVER-MINOR) deps,lib,src: add experimental web storage (Colin Ihrig) #​52435
API stability updates
Other Notable Changes
  • [df4762722c] - doc: doc-only deprecate OpenSSL engine-based APIs (Richard Lau) #​53329
  • [ad5282e196] - inspector: fix disable async hooks on Debugger.setAsyncCallStackDepth (Joyee Cheung) #​53473
  • [e95af740fc] - (SEMVER-MINOR) lib: add diagnostics_channel events to module loading (RafaelGSS) #​44340
  • [50733a1abe] - (SEMVER-MINOR) util: support --no- for argument with boolean type for parseArgs (Zhenwei Jin) #​53107
Commits

v22.3.0: 2024-06-11, Version 22.3.0 (Current), @​RafaelGSS

Compare Source

Notable Changes
Commits

v22.2.0: 2024-05-15, Version 22.2.0 (Current), @​targos

Compare Source

Notable Changes
  • [fb85d38e80] - (SEMVER-MINOR) cli: allow running wasm in limited vmem with --disable-wasm-trap-handler (Joyee Cheung) #​52766
  • [23a0d3339f] - doc: add pimterry to collaborators (Tim Perry) #​52874
  • [7d7a762156] - (SEMVER-MINOR) fs: allow 'withFileTypes' to be used with globs (Aviv Keller) #​52837
  • [8748dd6477] - (SEMVER-MINOR) inspector: introduce the --inspect-wait flag (Kohei Ueno) #​52734
  • [9a7ae9b6c4] - lib,src: remove --experimental-policy (Rafael Gonzaga) #​52583
  • [1f7c2a93fc] - (SEMVER-MINOR) perf_hooks: add deliveryType and responseStatus fields (Matthew Aitken) #​51589
  • [2f59529dc5] - (SEMVER-MINOR) test_runner: support test plans (Colin Ihrig) #​52860
  • [6b4dac3eb5] - (SEMVER-MINOR) zlib: expose zlib.crc32() (Joyee Cheung) #​52692
Commits

v22.1.0: 2024-05-02, Version 22.1.0 (Current), @​targos prepared by @​aduh95

Compare Source

module: implement NODE_COMPILE_CACHE for automatic on-disk code caching

This patch implements automatic on-disk code caching that can be enabled via an environment variable NODE_COMPILE_CACHE=/path/to/cache/dir.

When set, whenever Node.js compiles a CommonJS or a ECMAScript Module, it will use on-disk V8 code cache persisted in the specified directory to speed up the compilation. This may slow down the first load of a module graph, but subsequent loads of the same module graph may get a significant speedup if the contents of the modules do not change. Locally, this speeds up loading of test/fixtures/snapshot/typescript.js from ~130ms to ~80ms.

To clean up the generated code cache, simply remove the directory. It will be recreated the next time the same directory is used for NODE_COMPILE_CACHE.

Compilation cache generated by one version of Node.js may not be used by a different version of Node.js. Cache generated by different versions of Node.js will be stored separately if the same directory is used to persist the cache, so they can co-exist.

Caveat: currently when using this with V8 JavaScript code coverage, the coverage being collected by V8 may be less precise in functions that are deserialized from the code cache. It's recommended to turn this off when running tests to generate precise coverage.

Contributed by Joyee Cheung in #​52535.

Other Notable Changes
  • [44ee04cf9f] - buffer: improve base64 and base64url performance (Yagiz Nizipli) #​52428
  • [3c37ce5710] - (SEMVER-MINOR) dns: add order option and support ipv6first (Paolo Insogna) #​52492
  • [3026401be1] - events,doc: mark CustomEvent as stable (Daeyeon Jeong) #​52618
  • [64428dc1c9] - (SEMVER-MINOR) lib, url: add a windows option to path parsing (Aviv Keller) #​52509
  • [d79ae74f71] - (SEMVER-MINOR) net: add CLI option for autoSelectFamilyAttemptTimeout (Paolo Insogna) #​52474
  • [43fa6a1a45] - (SEMVER-MINOR) src: add string_view overload to snapshot FromBlob (Anna Henningsen) #​52595
  • [c6fe433d42] - src,permission: throw async errors on async APIs (Rafael Gonzaga) #​52730
  • [e247a61d15] - (SEMVER-MINOR) test_runner: add --test-skip-pattern cli option (Aviv Keller) #​52529
  • [9b18df9dcb] - (SEMVER-MINOR) url: implement parse method for safer URL parsing (Ali Hassan) #​52280
Commits

v22.0.0: 2024-04-24, Version 22.0.0 (Current), @​RafaelGSS and @​marco-ippolito

Compare Source

We're excited to announce the release of Node.js 22! Highlights include require()ing ESM graphs, WebSocket client, updates of the V8 JavaScript engine, and more! As a reminder, Node.js 22 will enter long-term support (LTS) in October, but until then, it will be the "Current" release for the next six months. We encourage you to explore the new features and benefits offered by this latest release and evaluate their potential impact on your applications.

Other Notable Changes
Semver-Major Commits
Semver-Minor Commits
  • [128c60d906] - (SEMVER-MINOR) cli: implement node --run <script-in-package-json> (Yagiz Nizipli) #​52190
  • [f69946b905] - (SEMVER-MINOR) deps: update simdutf to 5.0.0 (Daniel Lemire) #​52138
  • [828ad42eee] - (SEMVER-MINOR) deps: update undici to 6.3.0 (Node.js GitHub Bot) #​51462
  • [05f8172188] - (SEMVER-MINOR) deps: update undici to 6.2.1 (Node.js GitHub Bot) #​51278
  • [a0c466810a] - (SEMVER-MINOR) doc: deprecate fs.Stats public constructor (Marco Ippolito) #​51879
  • [151d365ad1] - (SEMVER-MINOR) fs: expose glob and globSync (Moshe Atlow) #​51912
  • [5f7fad2605] - (SEMVER-MINOR) module: support require()ing synchronous ESM graphs (Joyee Cheung) #​51977
  • [009665fb56] - (SEMVER-MINOR) report: add --report-exclude-network option (Ethan Arrowood) #​51645
  • [80f86e5d02] - (SEMVER-MINOR) src: add C++ ProcessEmitWarningSync() (Joyee Cheung) #​51977
  • [78be0d0f1c] - (SEMVER-MINOR) src: add uv_get_available_memory to report and process (theanarkh) #​52023
  • [b34512e38e] - (SEMVER-MINOR) src: preload function for Environment (Cheng Zhao) #​51539
  • [7d258db1d7] - (SEMVER-MINOR) stream: support typed arrays (IlyasShabi) #​51866
  • [5276c0d5d4] - (SEMVER-MINOR) test_runner: add suite() (Colin Ihrig) #​52127
  • [84de97a61e] - (SEMVER-MINOR) test_runner: support forced exit (Colin Ihrig) #​52038
  • [aac5ad901d] - (SEMVER-MINOR) test_runner: add test:complete event to reflect execution order (Moshe Atlow) #​51909
  • [9a1e01c4ce] - (SEMVER-MINOR) util: support array of formats in util.styleText (Marco Ippolito) #​52040
  • [7f2d61f82a] - (SEMVER-MINOR) v8: implement v8.queryObjects() for memory leak regression testing (Joyee Cheung) #​51927
  • [d1d5da22e4] - (SEMVER-MINOR) vm: harden module type checks (Chengzhong Wu) #​52162
Semver-Patch Commits
facebook/react (react)

v19.0.0

Compare Source

Below is a list of all new features, APIs, deprecations, and breaking changes. Read React 19 release post and React 19 upgrade guide for more information.

Note: To help make the upgrade to React 19 easier, we’ve published a react@18.3 release that is identical to 18.2 but adds warnings for deprecated APIs and other changes that are needed for React 19. We recommend upgrading to React 18.3.1 first to help identify any issues before upgrading to React 19.

New Features
React
  • Actions: startTransition can now accept async functions. Functions passed to startTransition are called “Actions”. A given Transition can include one or more Actions which update state in the background and update the UI with one commit. In addition to updating state, Actions can now perform side effects including async requests, and the Action will wait for the work to finish before finishing the Transition. This feature allows Transitions to include side effects like fetch() in the pending state, and provides support for error handling, and optimistic updates.
  • useActionState: is a new hook to order Actions inside of a Transition with access to the state of the action, and the pending state. It accepts a reducer that can call Actions, and the initial state used for first render. It also accepts an optional string that is used if the action is passed to a form action prop to support progressive enhancement in forms.
  • useOptimistic: is a new hook to update state while a Transition is in progress. It returns the state, and a set function that can be called inside a transition to “optimistically” update the state to expected final value immediately while the Transition completes in the background. When the transition finishes, the state is updated to the new value.
  • use: is a new API that allows reading resources in render. In React 19, use accepts a promise or Context. If provided a promise, use will suspend until a value is resolved. use can only be used in render but can be called conditionally.
  • ref as a prop: Refs can now be used as props, removing the need for forwardRef.
  • Suspense sibling pre-warming: When a component suspends, React will immediately commit the fallback of the nearest Suspense boundary, without waiting for the entire sibling tree to render. After the fallback commits, React will schedule another render for the suspended siblings to “pre-warm” lazy requests.
React DOM Client
  • <form> action prop: Form Actions allow you to manage forms automatically and integrate with useFormStatus. When a <form> action succeeds, React will automatically reset the form for uncontrolled components. The form can be reset manually with the new requestFormReset API.
  • <button> and <input> formAction prop: Actions can be passed to the formAction prop to configure form submission behavior. This allows using different Actions depending on the input.
  • useFormStatus: is a new hook that provides the status of the parent <form> action, as if the form was a Context provider. The hook returns the values: pending, data, method, and action.
  • Support for Document Metadata: We’ve added support for rendering document metadata tags in components natively. React will automatically hoist them into the <head> section of the document.
  • Support for Stylesheets: React 19 will ensure stylesheets are inserted into the <head> on the client before revealing the content of a Suspense boundary that depends on that stylesheet.
  • Support for async scripts: Async scripts can be rendered anywhere in the component tree and React will handle ordering and deduplication.
  • Support for preloading resources: React 19 ships with preinit, preload, prefetchDNS, and preconnect APIs to optimize initial page loads by moving discovery of additional resources like fonts out of stylesheet loading. They can also be used to prefetch resources used by an anticipated navigation.
React DOM Server
  • Added prerender and prerenderToNodeStream APIs for static site generation. They are designed to work with streaming environments like Node.js Streams and Web Streams. Unlike renderToString, they wait for data to load for HTML generation.
React Server Components
  • RSC features such as directives, server components, and server functions are now stable. This means libraries that ship with Server Components can now target React 19 as a peer dependency with a react-server export condition for use in frameworks that support the Full-stack React Architecture. The underlying APIs used to implement a React Server Components bundler or framework do not follow semver and may break between minors in React 19.x. See docs for how to support React Server Components.
Deprecations
  • Deprecated: element.ref access: React 19 supports ref as a prop, so we’re deprecating element.ref in favor of element.props.ref. Accessing will result in a warning.
  • react-test-renderer: In React 19, react-test-renderer logs a deprecation warning and has switched to concurrent rendering for web usage. We recommend migrating your tests to @​testing-library/react or @​testing-library/react-native
Breaking Changes

React 19 brings in a number of breaking changes, including the removals of long-deprecated APIs. We recommend first upgrading to 18.3.1, where we've added additional deprecation warnings. Check out the upgrade guide for more details and guidance on codemodding.

React
  • New JSX Transform is now required: We introduced a new JSX transform in 2020 to improve bundle size and use JSX without importing React. In React 19, we’re adding additional improvements like using ref as a prop and JSX speed improvements that require the new transform.
  • Errors in render are not re-thrown: Errors that are not caught by an Error Boundary are now reported to window.reportError. Errors that are caught by an Error Boundary are reported to console.error. We’ve introduced onUncaughtError and onCaughtError methods to createRoot and hydrateRoot to customize this error handling.
  • Removed: propTypes: Using propTypes will now be silently ignored. If required, we recommend migrating to TypeScript or another type-checking solution.
  • Removed: defaultProps for functions: ES6 default parameters can be used in place. Class components continue to support defaultProps since there is no ES6 alternative.
  • Removed: contextTypes and getChildContext: Legacy Context for class components has been removed in favor of the contextType API.
  • Removed: string refs: Any usage of string refs need to be migrated to ref callbacks.
  • Removed: Module pattern factories: A rarely used pattern that can be migrated to regular functions.
  • Removed: React.createFactory: Now that JSX is broadly supported, all createFactory usage can be migrated to JSX components.
  • Removed: react-test-renderer/shallow: This has been a re-export of react-shallow-renderer since React 18. If needed, you can continue to use the third-party package directly. We recommend using @​testing-library/react or @​testing-library/react-native instead.
React DOM
  • Removed: react-dom/test-utils: We’ve moved act from react-dom/test-utils to react. All other utilities have been removed.
  • Removed: ReactDOM.render, ReactDOM.hydrate: These have been removed in favor of the concurrent equivalents: ReactDOM.createRoot and ReactDOM.hydrateRoot.
  • Removed: unmountComponentAtNode: Removed in favor of root.unmount().
  • Removed: ReactDOM.findDOMNode: You can replace ReactDOM.findDOMNode with DOM Refs.
Notable Changes
React
  • <Context> as a provider: You can now render <Context> as a provider instead of <Context.Provider>.
  • Cleanup functions for refs: When the component unmounts, React will call the cleanup function returned from the ref callback.
  • useDeferredValue initial value argument: When provided, useDeferredValue will return the initial value for the initial render of a component, then schedule a re-render in the background with the deferredValue returned.
  • Support for Custom Elements: React 19 now passes all tests on Custom Elements Everywhere.
  • StrictMode changes: useMemo and useCallback will now reuse the memoized results from the first render, during the second render. Additionally, StrictMode will now double-invoke ref callback functions on initial mount.
  • UMD builds removed: To load React 19 with a script tag, we recommend using an ESM-based CDN such as esm.sh.
React DOM
  • Diffs for hydration errors: In the case of a mismatch, React 19 logs a single error with a diff of the mismatched content.
  • Compatibility with third-party scripts and extensions: React will now force a client re-render to fix up any mismatched content caused by elements inserted by third-party JS.
TypeScript Changes

The most common changes can be codemodded with npx types-react-codemod@latest preset-19 ./path-to-your-react-ts-files.

  • Removed deprecated TypeScript types:
    • ReactChild (replacement: React.ReactElement | number | string)
    • ReactFragment (replacement: Iterable<React.ReactNode>)
    • ReactNodeArray (replacement: ReadonlyArray<React.ReactNode>)
    • ReactText (replacement: number | string)
    • VoidFunctionComponent (replacement: FunctionComponent)
    • VFC (replacement: FC)
    • Moved to prop-types: Requireable, ValidationMap, Validator, WeakValidationMap
    • Moved to create-react-class: ClassicComponentClass, ClassicComponent, ClassicElement, ComponentSpec, Mixin, ReactChildren, ReactHTML, ReactSVG, SFCFactory
  • Disallow implicit return in refs: refs can now accept cleanup functions. When you return something else, we can’t tell if you intentionally returned something not meant to clean up or returned the wrong value. Implicit returns of anything but functions will now error.
  • Require initial argument to useRef: The initial argument is now required to match useState, createContext etc
  • Refs are mutable by default: Ref objects returned from useRef() are now always mutable instead of sometimes being immutable. This feature was too confusing for users and conflicted with legit cases where refs were managed by React and manually written to.
  • Strict ReactElement typing: The props of React elements now default to unknown instead of any if the element is typed as ReactElement
  • JSX namespace in TypeScript: The global JSX namespace is removed to improve interoperability with other libraries using JSX. Instead, the JSX namespace is available from the React package: import { JSX } from 'react'
  • Better useReducer typings: Most useReducer usage should not require explicit type arguments.
    For example,
    -useReducer<React.Reducer<State, Action>>(reducer)
    +useReducer(reducer)
    
    or
    -useReducer<React.Reducer<State, Action>>(reducer)
    +useReducer<State, Action>(reducer)
    
All Changes
React
React DOM
React DOM Server
ReactTestRenderer
React Reconciler
React-Is
useSyncExternalStore

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This MR will be recreated if closed unmerged. Get config help if that's undesired.


  • [ ] If you want to rebase/retry this MR, check this box

This MR has been generated by Renovate Bot.

Edited by Renovate BOT

Merge request reports

Loading