unstale

npm / @eslint/js

@eslint/js

What changed in @eslint/js 9 to 10, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

42 breaking2 new APIs and options5 behavior and defaults1 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli on npm

@eslint/js 104 changes

Breaking changes 3

  • Enabled in eslint:recommended, so projects using that config may report new lint errors.

    10.0.0upgrade guide

  • Enabled in eslint:recommended, so projects using that config may report new lint errors.

    10.0.0upgrade guide

  • Enabled in eslint:recommended, so projects using that config may report new lint errors.

    10.0.0upgrade guide

Fixes and other changes 1

  • The name property has been restored to ESLint core configs exported from @eslint/js; FlatCompat users should update @eslint/eslintrc for compatibility.

    10.0.0upgrade guide

@eslint/js 946 changes

Breaking changes 39

  • The no-invalid-regexp option now matches flags case-sensitively.

    9.0.0upgrade guide

  • The allow option now only accepts an array of strings.

    9.0.0upgrade guide

  • The formatter was removed from core; install eslint-formatter-checkstyle to use it.

    9.0.0upgrade guide

  • The deprecated property was removed.

    9.0.0upgrade guide

  • The formatter was removed from core; install eslint-formatter-compact to use it.

    9.0.0upgrade guide

  • Deprecated source, comment, token, parser-services, scope, ancestor, and variable-usage methods were removed from context and moved to SourceCode, with some replacements requiring a node argument.

    9.0.0upgrade guide

  • Flat config no longer accepts the "eslint:all" string in its config array; use the @eslint/js preset instead.

    9.0.0upgrade guide

  • The preset enables no-constant-binary-expression, no-empty-static-block, no-new-native-nonconstructor, and no-unused-private-class-members, and removes no-extra-semi, no-inner-declarations, no-mixed-spaces-and-tabs, and no-new-symbol.

    9.0.0upgrade guide

  • Flat config no longer accepts the "eslint:recommended" string in its config array; use the @eslint/js preset instead.

    9.0.0upgrade guide

  • Flat config is now the default; eslintrc is deprecated and is no longer searched for automatically.

    9.0.0upgrade guide

  • Multiple configuration comments for the same rule are no longer silently accepted: the first applies and subsequent ones are reported as lint errors.

    9.0.0upgrade guide

  • Variables followed by a colon and value are ignored as invalid; variable names must be comma-separated.

    9.0.0upgrade guide

  • The temporary FlatESLint class is now named ESLint, and the v8 ESLint class is named LegacyESLint.

    9.0.0upgrade guide

  • Rules exported as functions are no longer supported; rules must use an object with a create() method.

    9.0.0upgrade guide

  • The formatter was removed from core; install eslint-formatter-jslint-xml to use it.

    9.0.0upgrade guide

  • The formatter was removed from core; install eslint-formatter-junit to use it.

    9.0.0upgrade guide

  • The method is no longer available; configure parsers through flat config languageOptions instead.

    9.0.0upgrade guide

  • The method is no longer available; define rules through flat config plugins instead.

    9.0.0upgrade guide

  • The method is no longer available; define rules through flat config plugins instead.

    9.0.0upgrade guide

  • The method is no longer available.

    9.0.0upgrade guide

  • The config argument must use flat config format.

    9.0.0upgrade guide

  • The config argument must use flat config format.

    9.0.0upgrade guide

  • Rules that receive options must specify meta.schema; ESLint throws an error when options are passed to a rule without it.

    9.0.0upgrade guide

  • The rule schema now rejects options; the rule does not accept any options.

    9.0.0upgrade guide

  • By default, the rule additionally reports -(-foo) and foo - 0; configure allow with ["-", "- -"] to retain the previous behavior.

    9.0.0upgrade guide

  • With flat config, running the CLI without patterns lints the current directory; with eslintrc, it errors. Use --pass-on-no-patterns to retain the previous exit-zero behavior.

    9.0.0upgrade guide

  • The caughtErrors option now defaults to all, so caught errors are checked for being used.

    9.0.0upgrade guide

  • The option now defaults to true, so unnecessary computed member names in classes are flagged by default.

    9.0.0upgrade guide

  • ESLint v9 requires Node.js v18.18.0 or above, v20.9.0 or above, or v21 and above; earlier versions are no longer supported.

    9.0.0upgrade guide

  • Rules set to warn are no longer executed unless --max-warnings is used, which can improve performance and affect rules that modify data used by other rules.

    9.0.0upgrade guide

  • The rule was removed; use replacement rules in eslint-plugin-jsdoc for equivalent linting.

    9.0.0upgrade guide

  • RuleTester replaces FlatRuleTester, while the v8 RuleTester is removed; the new tester uses flat-config defaults for ecmaVersion and sourceType.

    9.0.0upgrade guide

  • RuleTester now validates autofix outputs, error and suggestion fields, suggestion uniqueness and syntax, duplicate test cases, filename and only types, and unsubstituted message placeholders.

    9.0.0upgrade guide

  • The deprecated method was removed; use getCommentsBefore, getCommentsAfter, or getCommentsInside instead.

    9.0.0upgrade guide

  • The formatter was removed from core; install eslint-formatter-tap to use it.

    9.0.0upgrade guide

  • The formatter was removed from core; install eslint-formatter-unix to use it.

    9.0.0upgrade guide

  • The rule was removed; use replacement rules in eslint-plugin-jsdoc for equivalent linting.

    9.0.0upgrade guide

  • The no-unused-vars option no longer applies to catch arguments; use caughtErrorsIgnorePattern to ignore catch-clause variable names.

    9.0.0upgrade guide

  • The formatter was removed from core; install eslint-formatter-visualstudio to use it.

    9.0.0upgrade guide

New APIs and options 2

  • Adds blockScopeFunctions, which by default allows block-level functions in strict mode when ecmaVersion is 2015 or above.

    9.0.0upgrade guide

  • The rule schema now accepts one option: an object with a boolean allowInParentheses property.

    9.0.0upgrade guide

Behavior and default changes 5

  • Code path information is now calculated before rule traversal, so it is complete regardless of when a rule accesses it.

    9.0.0upgrade guide

  • A configuration comment specifying only severity now retains options configured for that rule in the config file.

    9.0.0upgrade guide

  • Set this environment variable to false to continue using the deprecated eslintrc config format.

    9.0.0upgrade guide

  • Multiple paths entries with the same name now all apply, allowing different restrictions and messages for imported names.

    9.0.0upgrade guide

  • The CLI now writes the output file even when the output is empty.

    9.0.0upgrade guide