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