Change8

Migrating to ESLint v10.0.0

Version v10.0.0 introduces 22 breaking changes. This guide details how to update your code.

Released: 2/6/2026

22
Breaking Changes
7
Migration Steps
27
Affected Symbols

⚠️ Check Your Code

If you use any of these symbols, you need to read this guide:

SourceCodeResultsMetaminimatchRuleFixerradix rulefunc-names ruleLintMessageTestCaseErrorjitieslint:recommendedno-shadow-restricted-namesScopeManagerno-invalid-regexp ruleArray.fromAsyncarray-callback-return ruleno-implied-eval ruleno-shadow ruleRuleTestermax-params rulerequire-yield ruleno-useless-constructor ruleParserOptionsScopeverifyverifyAndFixloadESLintshouldUseFlatConfig

Breaking Changes

Issue #1

Estimate rule-tester failure location.

Solution

No explicit fix provided, this is a change in error reporting behavior.

Issue #2

`chalk` was replaced with `styleText`, and `color` was added to `ResultsMeta`.

Solution

Update code that relies on `chalk` for styling or expects `color` to be present in `ResultsMeta`.

Issue #3

JSX reference tracking was enabled.

Solution

No explicit fix provided, this affects how JSX references are handled internally.

Issue #4

`name` was added to configs.

Solution

No explicit fix provided, this is an addition to config structure.

Issue #5

Deprecated `SourceCode` methods were removed.

Solution

Update code to use the replacement methods for the removed `SourceCode` methods.

Issue #6

Dependency `minimatch` was updated to v10.

Solution

Ensure compatibility with `minimatch` v10 if direct interaction with its API occurred.

Issue #7

Stricter rule tester assertions for valid test cases.

Solution

Review and update `RuleTester` valid test cases to meet stricter assertion requirements.

Issue #8

Deprecated rule context methods were removed.

Solution

Update custom rules to use non-deprecated rule context methods.

Issue #9

Support for `.eslintrc.*` files was removed (enforcing flat config usage).

Solution

Migrate configuration from `.eslintrc.*` files to the flat config format (e.g., `eslint.config.js`).

Issue #10

Use `ScopeManager#addGlobals()` instead of previous methods for global scope management.

Solution

Update code that manages global variables in scopes to use `ScopeManager#addGlobals()`.

Issue #11

`no-invalid-regexp` option now requires `uniqueItems: true` for its configuration.

Solution

If using options for `no-invalid-regexp`, ensure `uniqueItems: true` is explicitly set if needed.

Issue #12

Program range now spans the entire source text.

Solution

No explicit fix provided, this changes how ranges are calculated internally.

Issue #13

Asserted that 'text' is a string across all `RuleFixer` methods.

Solution

Ensure that the text argument passed to `RuleFixer` methods is always a string.

Issue #14

Deprecated options `"always"` and `"as-needed"` for the `radix` rule.

Solution

Update configurations for the `radix` rule to use supported options instead of the deprecated ones.

Issue #15

`func-names` schema was tightened.

Solution

Review and update configurations or custom rules interacting with the `func-names` schema.

Issue #16

`eslint-env` comments are now reported as errors instead of warnings/info.

Solution

If you rely on `eslint-env` comments not causing errors, you may need to adjust expectations or configuration.

Issue #17

Deprecated `LintMessage#nodeType` and `TestCaseError#type` were removed.

Solution

Update code relying on `nodeType` in messages or `type` in test errors.

Issue #18

Support for `jiti` versions older than 2.2.0 was dropped.

Solution

Ensure your `jiti` dependency is at version 2.2.0 or newer.

Issue #19

`eslint:recommended` configuration was updated.

Solution

Review changes in `eslint:recommended` and adjust local configurations if necessary.

Issue #20

`v10_*` and inactive `unstable_*` flags were removed.

Solution

Remove usage of any flags starting with `v10_` or inactive `unstable_` prefixes.

Issue #21

`no-shadow-restricted-names` now reports `globalThis` by default.

Solution

If you do not want `globalThis` to trigger this rule, configure the rule options accordingly.

Issue #22

Required Node.js versions are now `^20.19.0 || ^22.13.0 || >=24`.

Solution

Upgrade your Node.js environment to meet the specified version requirements.

Migration Steps

  1. 1
    Migrate configuration from `.eslintrc.*` files to the flat config format (e.g., `eslint.config.js`) due to removal of `.eslintrc` support.
  2. 2
    Update custom rules to use non-deprecated rule context methods following the removal of deprecated methods.
  3. 3
    Review and update `RuleTester` valid test cases to meet stricter assertion requirements.
  4. 4
    Ensure that the text argument passed to `RuleFixer` methods is always a string.
  5. 5
    Update configurations for the `radix` rule to use supported options instead of the deprecated `"always"` or `"as-needed"` options.
  6. 6
    Upgrade your Node.js environment to meet the specified version requirements: `^20.19.0 || ^22.13.0 || >=24`.
  7. 7
    Ensure your `jiti` dependency is at version 2.2.0 or newer.

Release Summary

This release introduces significant breaking changes, including the removal of `.eslintrc` support in favor of flat config, removal of several deprecated APIs, and stricter RuleTester assertions. New features focus on improving rule accuracy for modern JavaScript features like `Array.fromAsync`.

Need More Details?

View the full release notes and all changes for ESLint v10.0.0.

View Full Changelog