Eslint Updates & Release Notes

Follow

35 updates curated from 37 sources by the Releasebot Team. Last updated: Jul 17, 2026

Get this feed:
  • Jul 16, 2026
    • Date parsed from source:
      Jul 16, 2026
    • First seen by Releasebot:
      Jul 17, 2026
    Eslint logo

    Eslint

    Automating ESLint migrations with Codemod

    Eslint releases official Codemod-powered migration tools for v8 to v9 and v9 to v10 upgrades, giving users new codemods for config, custom rules, RuleTester, and API updates while still flagging some manual review steps.

    ESLint and Codemod are partnering to deliver official codemods for ESLint migrations.

    We are excited to announce a partnership between ESLint and Codemod to create a better migration experience for ESLint users, starting with the ESLint v8 to v9 and v9 to v10 migrations. All official ESLint codemods live in eslint/codemods and on the Codemod Registry. Community members are encouraged to open issues for missing codemods or contribute new ones through pull requests. Once reviewed and merged by maintainers, codemods are automatically published to the Codemod Registry through GitHub Actions.

    What is Codemod?

    Codemod is an open source platform for building, sharing, and running automated code migrations at scale. It is an OpenJS Foundation partner, and its tooling has been adopted by projects such as React, Node.js, Express, React Router, Nuxt.js, pnpm, Webpack, MSW, i18next, and more.

    Its platform includes JSSG (JS ast-grep), a codemod runtime and workflow engine that supports multi-step transformations and combines deterministic, compiler-aware transformations with AI-powered steps to deliver the right balance of reliability, efficiency, and flexibility. The source code for the Codemod CLI and engine is available on GitHub.

    Key features of Codemod include:

    • Workspace-wide semantic analysis
    • Cross-file refactors
    • Multi-language support
    • Repository-scale performance
    • A simple, agent-friendly API
    • Built-in AST inspection through MCP
    • Secure sandboxed execution
    • Metrics and codebase mining
    • Native support for multi-file transformations

    Check out the Codemod docs to learn more about JSSG (JS ast-grep), Codemod’s open source toolkit for building codemods, and explore its features.

    ESLint v8 to v9 migration

    For v8 to v9 migration, we’ve released two codemods: one to help upgrade ESLint config, and another for custom rules.

    Migrating configuration with @eslint/v8-to-v9-config

    npx codemod @eslint/v8-to-v9-config

    Unlike the original ESLint Configuration Migrator, this codemod runs as a workspace migration. It can:

    • Extract eslintConfig from package.json and generate eslint.config.mjs
    • Clean up duplicate /* eslint / comments and invalid / exported */ comments in source files
    • Remove deprecated require-jsdoc and valid-jsdoc rule references from inline comments
    • Migrate those JSDoc rules to eslint-plugin-jsdoc using jsdoc({ config: "flat/recommended", ... })
    • Add a // TODO: Migrate settings manually comment when custom settings need review
    • Handle several ESLint v9 rule option changes, including no-unused-vars, no-useless-computed-key, no-sequences, no-constructor-return, camelcase, and no-restricted-imports
    • Convert env to languageOptions.globals using the globals package
    • Map excludedFiles to per-config ignores
    • Move noInlineConfig and reportUnusedDisableDirectives to linterOptions
    • Import parser packages and plugins
    • Use defineConfig and globalIgnores from @eslint/config-helpers
    • Merge ignore patterns from both .eslintignore and .gitignore

    For JavaScript config files, the codemod works from the AST and can resolve simple bindings such as const values, identifiers, and spreads. More advanced logic, such as functions, conditionals, and dynamic require() calls, still needs manual review. The workflow also supports options such as --target, eslintConfigCustomName, and codeFormattingCommandEnabled, and prompts you to install required packages after it runs.

    The codemod does not migrate --ext CLI usage, so you still need to create a config entry for the file extensions you previously passed on the command line. Learn more on @eslint/v8-to-v9-config’s registry page and in the configuration migration guide.

    Migrating custom rules with @eslint/v8-to-v9-custom-rules

    npx codemod @eslint/v8-to-v9-custom-rules

    Important: Run this codemod only in directories containing ESLint rule files. It may incorrectly transform other JavaScript files that export functions.

    The codemod supports CommonJS (module.exports = function (context) { ... }), ES Modules (export default function (context) { ... }), indirect exports (function rule() {} and module.exports = rule), higher-order wrappers such as wrapRule(function (context) { ... }), and rules created with @typescript-eslint/utils.RuleCreator.

    It performs a comprehensive migration of custom ESLint rules from v8 to v9, including:

    • Removed context methods — migrates calls to sourceCode equivalents (for example, context.getSource() → sourceCode.getText()), including methods that moved with different signatures such as getScope(), getAncestors(), getDeclaredVariables(), and markVariableAsUsed()
    • context methods becoming properties — migrates getSourceCode(), getFilename(), getPhysicalFilename(), and getCwd() to their property equivalents with compatibility fallbacks
    • Removed context.getComments() — converts node-specific calls to getCommentsBefore / getCommentsInside / getCommentsAfter(node)
    • Removed CodePath#currentSegments — adds code path tracking logic (verify the result matches your rule’s needs)
    • Function-style rules are no longer supported — converts to the object format with meta and create

    The codemod also moves module.exports.schema into meta, converts old-style context.report(node, message) calls to object format, detects fixable rules, and adds fixable: "code" to meta.

    It does not cover context.parserOptions and context.parserPath, because those properties are not removed until ESLint v10.0.0. Prefer context.languageOptions (and context.languageOptions.parser when you need the parser) instead.

    Not every change can be fully automated. After running the codemod:

    1. Review TODO comments. Search for TODO in your migrated files. If a rule uses context.options, the codemod may leave a placeholder like schema: [] // TODO: Define schema - this rule uses context.options that you need to replace with a valid JSON schema.
    2. Review comment method changes. getCommentsBefore(), getCommentsInside(), and getCommentsAfter() require a node argument, and no-argument context.getComments() calls should use sourceCode.getAllComments().
    3. Review skipped higher-order wrappers. If a wrapper passes configuration as the second argument (for example, wrapRule(rule, config)), confirm whether any manual migration is needed.
    4. Test your custom rules by running your rule test suite (for example, npm test).

    Learn more on @eslint/v8-to-v9-custom-rules’s registry page. For the full list of API changes and how to adopt them manually, see the ESLint v9 migration guide and the blog post for v9 custom rules.

    ESLint v9 to v10 migration

    Upgrade your ESLint project from v9 to v10 with the following codemod:

    npx codemod @eslint/v9-to-v10

    This recipe includes four individual codemods, each of which can also be run independently:

    • @eslint/v9-to-v10-config: Remove legacy env vars and CLI flags
    • @eslint/v9-to-v10-custom-rules: Replace removed context and SourceCode methods
    • @eslint/v9-to-v10-ruletester: Cleanup RuleTester test cases
    • @eslint/v9-to-v10-linter-api: Fix Linter/ESLint API usage

    Check out Codemod Registry to learn more about this recipe and its codemods. For more details about what’s new in v10 and how to adopt the new features, refer to the official ESLint upgrade guide.

    Conclusion

    Upgrading across major ESLint versions has often meant carefully translating configs, custom rules, and related APIs by hand. With this partnership, official Codemod workflows give you a faster starting point for the v8 to v9 and v9 to v10 migrations, while still leaving room for the manual review steps that complex projects need.

    You can try the codemods today through the Codemod Registry, and find the source in eslint/codemods. If you run into a gap, open an issue or contribute a new codemod. For questions about the migrations themselves, see the v9 and v10 upgrade guides, or stop by Discord to talk with the team.

    Original source
  • Jul 10, 2026
    • Date parsed from source:
      Jul 10, 2026
    • First seen by Releasebot:
      Jul 10, 2026
    Eslint logo

    Eslint

    ESLint v9.39.5 released

    Eslint ships v9.39.5 as a patch release that fixes bugs and prevents crashes in host environments where require.cache is unavailable, including Yarn Plug’n’Play. It also includes documentation and maintenance updates.

    We just pushed ESLint v9.39.5, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release.

    Highlights

    This release backports a fix originally released in v10.3.0 that prevents ESLint from crashing in host environments where require.cache is unavailable, such as Yarn Plug’n’Play.

    Bug Fixes

    • 253be16 fix: handle unavailable require cache (backport of #20812 to v9.x) (#21065) (Eric)

    Documentation

    • 74930ed docs: switch build to Node.js 24 (#20894) (Milos Djermanovic)
    • eaec8bb docs: Add ESLint v9.x EOL notice (#20828) (Milos Djermanovic)

    Chores

    • 458205f chore: update @eslint/eslintrc and @eslint/js for v9.39.5 (#21077) (Francesco Trotta)
    • 202117b chore: package.json update for @eslint/js release (Jenkins)
    • d9eb6ed test: disable warning for vm.constants.USE_MAIN_CONTEXT_DEFAULT_LOADER (#21074) (Francesco Trotta)
    • 7b431a7 chore: override re2 dependency for @metascraper/helpers (#21068) (Milos Djermanovic)
    • daf7791 chore: pin [email protected] (#20895) (Milos Djermanovic)
    • daee8ba ci: use pnpm in eslint-flat-config-utils type integration test (#20829) (Milos Djermanovic)
    • 116d4be ci: unpin Node.js 25.x in CI (#20619) (Copilot)
    Original source
  • All of your release notes in one feed

    Join Releasebot and get updates from Eslint and hundreds of other software products.

    Create account
  • Jul 10, 2026
    • Date parsed from source:
      Jul 10, 2026
    • First seen by Releasebot:
      Jul 10, 2026
    Eslint logo

    Eslint

    ESLint v10.7.0 released

    Eslint ships v10.7.0 with new rule options, smarter suggestions, and bug fixes. The release adds constructor callback nesting checks, custom error class handling in preserve-caught-error, and improved no-compare-neg-zero guidance, while tightening several rules and docs.

    We just pushed ESLint v10.7.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.

    Highlights

    New option checkConstructorCallCallbacks in max-nested-callbacks

    The max-nested-callbacks rule now supports a checkConstructorCallCallbacks option. When enabled, the rule also counts callback functions passed to constructor calls with new, such as new Promise((resolve) => {}), when calculating nesting depth.

    For example, with { "max": 1, "checkConstructorCallCallbacks": true }, the rule reports the following code as exceeding the allowed callback nesting depth:

    run(() => {
      new Promise(resolve => resolve());
    });
    

    New option errorClassNames in preserve-caught-error

    The preserve-caught-error rule now supports an errorClassNames option. This option lets you specify additional custom error class names that must preserve the original caught error by passing it as a cause.

    For example, with { "errorClassNames": ["MyError"] }, the following code is reported because the thrown MyError does not include the original error as a cause, just like built-in error types must:

    try {
      doSomething();
    } catch (error) {
      throw new MyError("something went wrong");
    }
    

    Suggestions for no-compare-neg-zero

    The no-compare-neg-zero rule now supports suggestions. Where appropriate, it suggests replacing -0 with 0 or using Object.is() instead of operators such as === or !==. For example, for an expression such as x === -0, the rule suggests x === 0 to preserve the existing comparison behavior, and Object.is(x, -0) to distinguish -0 from +0.

    Features

    • cf2a9bf feat: add errorClassNames option to preserve-caught-error rule (#21032) (sethamus)
    • f8b873a feat: max-nested-callbacks option for constructor callbacks (#21063) (fnx)
    • 557fde8 feat: support computed Number.parseInt member access in radix rule (#21041) (Pixel)
    • 0b4a73b feat: add suggestions to no-compare-neg-zero (#21034) (den$)
    • 96cdd42 feat: report invalid signed numeric values in radix rule (#21030) (Pixel)

    Bug Fixes

    • 3e7bf15 fix: apply ignoreClassesWithImplements to class expressions (#21069) (Pixel)
    • 0d7d70c fix: insert cause outside wrapping parens in preserve-caught-error (#21062) (Mahin Anowar)
    • 75ec753 fix: handle static template literals in eqeqeq rule (#21058) (Pixel)
    • b717a22 fix: prevent eqeqeq null option from reporting non-equality operators (#21057) (Pixel)
    • e35b05f fix: avoid no-invalid-regexp false positive for shadowed RegExp (#21051) (Pixel)
    • a3172b6 fix: avoid no-control-regex false positive for shadowed RegExp (#21050) (Pixel)
    • d1f637e fix: parenthesize sequence expression operands in no-implicit-coercion (#21045) (spokodev)
    • 8859baf fix: avoid prefer-numeric-literals false positive for shadowed globals (#21047) (한국)
    • a9e5961 fix: use-isnan false positive on shadowed NaN/Number (#20958) (sethamus)
    • 8a240a7 fix: avoid false positives in radix rule for spread arguments (#21044) (Pixel)

    Documentation

    • c30d808 docs: Update README (GitHub Actions Bot)
    • 5139800 docs: document ESLint migration codemods in v9 and v10 guides (#20980) (Alex Bit)
    • 04174cb docs: Update README (GitHub Actions Bot)
    • 026e130 docs: update semver policy for bug fixes (#21048) (Milos Djermanovic)
    • 9d42fef docs: Update README (GitHub Actions Bot)
    • b230159 docs: Update README (GitHub Actions Bot)
    • 0129972 docs: correct **/.js glob to **/*.js in config files guide (#21036) (EduardF1)

    Chores

    • 9489379 chore: update dependency @eslint/eslintrc to ^3.3.6 (#21076) (renovate[bot])
    • 81a4774 chore: updates for v9.39.5 release (Jenkins)
    • 9835414 chore: enable $ExpectType annotations in all TypeScript files (#21071) (Francesco Trotta)
    • 72adf6b chore: restrict markdownlint-cli2 updates in renovate (#21067) (lumir)
    • 833ec10 chore: update dependency prettier to v3.9.4 (#21061) (renovate[bot])
    • 7ea106d chore: update ecosystem plugins (#21059) (ESLint Bot)
    • 8fb550e chore: add prettier update commit to .git-blame-ignore-revs (#21056) (lumir)
    • e4e1166 chore: update dependency prettier to v3.9.1 (#21055) (renovate[bot])
    • 0493f53 chore: update prettier to v3.9.0 (#21054) (Pixel)
    • 1056a99 chore: update dependency prettier to v3.8.5 (#21049) (renovate[bot])
    • 4d4155d ci: run ecosystem tests on pull requests (#21027) (sethamus)
    • 993539f chore: update dependency @eslint/json to ^2.0.1 (#21042) (renovate[bot])
    • 53f8b69 test: add error locations to no-constant-binary-expression (#21039) (lumir)
    • 5ab71d5 refactor: clean up radix rule internals (#21015) (Pixel)
    • a80a9a4 chore: update ecosystem plugins (#21035) (ESLint Bot)
    • 7c9a029 ci: add Node.js 26 to CI (#20847) (lumir)
    Original source
  • Jun 26, 2026
    • Date parsed from source:
      Jun 26, 2026
    • First seen by Releasebot:
      Jun 30, 2026
    Eslint logo

    Eslint

    ESLint v10.6.0 released

    Eslint ships v10.6.0 with new features and bug fixes in a minor release.

    We just pushed ESLint v10.6.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.

    Original source
  • Jun 26, 2026
    • Date parsed from source:
      Jun 26, 2026
    • First seen by Releasebot:
      Jun 27, 2026
    Eslint logo

    Eslint

    ESLint v10.6.0 released

    Eslint releases v10.6.0, a minor update that adds new rule options and refinements, improves correctness in edge cases, and fixes several bugs for more consistent linting behavior.

    We just pushed ESLint v10.6.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.

    Highlights

    New option checkRelationalComparisons in no-constant-binary-expression

    ESLint v10.6.0 introduces a new option checkRelationalComparisons for the no-constant-binary-expression rule. When enabled, the rule reports relational comparisons using <, <=, >, or >= whose result is always constant based on their literal operands.

    For example:

    const value = "a" > "b"; // always `false`
    
    while (0 <= 0) {
      // always `true`
      /* ... */
    }
    

    Rule refinements

    The following rules have been tweaked to improve correctness and ensure more consistent or intuitive behavior in edge cases:

    • max-classes-per-file
    • max-nested-callbacks
    • no-constant-binary-expression
    • no-extra-boolean-cast
    • no-promise-executor-return
    • no-throw-literal
    • prefer-exponentiation-operator
    • prefer-promise-reject-errors
    • radix

    Features

    • b1f9106 feat: detect Symbol() and BigInt() in no-constant-binary-expression (#20981) (Taejin Kim)
    • f291007 feat: add checkRelationalComparisons to no-constant-binary-expression (#20948) (sethamus)

    Bug Fixes

    • 6b05784 fix: prefer-exponentiation-operator invalid autofix at statement start (#20997) (Milos Djermanovic)
    • bb9eb2a fix: account for shadowed Boolean in no-extra-boolean-cast (#21013) (den$)
    • 8fd8741 fix: don’t report shadowed undefined in radix rule (#21011) (Pixel)
    • 5784980 fix: don’t report shadowed undefined in no-throw-literal (#21010) (Pixel)
    • 9cd1e6d fix: suppress invalid class suggestion in no-promise-executor-return (#21008) (Pixel)
    • d4eb2dc fix: don’t report shadowed undefined in prefer-promise-reject-errors (#21006) (Pixel)
    • 2360464 fix: prefer-promise-reject-errors false positives for shadowed Promise (#21003) (den$)
    • 63d52d2 fix: restore max-classes-per-file report range (#21002) (Pixel)
    • 7feaff0 fix: callback detection logic for IIFEs in max-nested-callbacks (#20979) (fnx)
    • 399a2ec fix: don’t report inner non-callbacks in max-nested-callbacks (#20995) (Milos Djermanovic)

    Documentation

    • a83683d docs: Update README (GitHub Actions Bot)
    • f5449f9 docs: document userland patterns for global assertionOptions in RuleT… (#20986) (playgirl)
    • bea49f7 docs: Update README (GitHub Actions Bot)
    • e5f70f9 docs: update code-path diagrams (#20984) (Tanuj Kanti)
    • 8890c2d docs: add TypeScript config guidance for MCP server (#20796) (Pierluigi Lenoci)
    • 3eb3d9b docs: Update README (GitHub Actions Bot)
    • c5bb59c docs: Update README (GitHub Actions Bot)
    • eb3c97c docs: fix grammar in prefer-const rule description (#20983) (lumir)

    Chores

    • 6a42034 ci: run ecosystem tests on main branch (#20891) (sethamus)
    • 3dbacdb ci: bump actions/checkout from 6 to 7 (#21014) (dependabot[bot])
    • c3abfca chore: correct JSDoc param types in html formatter (#21018) (Minseon Kim)
    • a832320 ci: split ecosystem tests into separate jobs (#21001) (xbinaryx)
    • 27166e7 chore: update ecosystem plugins (#21005) (ESLint Bot)
    • 865d76e ci: bump pnpm/action-setup from 6.0.8 to 6.0.9 (#20989) (dependabot[bot])
    • 27a88c9 chore: update dependency markdown-it to v14 in root (#20994) (Milos Djermanovic)
    • 970cea6 chore: update dependency markdown-it to v14 (#20993) (Milos Djermanovic)
    • b482120 chore: update dependency prettier to v3.8.4 (#20990) (renovate[bot])
    • 6993fb3 chore: update ecosystem plugins (#20985) (ESLint Bot)
    Original source
  • Similar to Eslint with recent updates:

  • Jun 12, 2026
    • Date parsed from source:
      Jun 12, 2026
    • First seen by Releasebot:
      Jun 16, 2026
    Eslint logo

    Eslint

    ESLint v10.5.0 released

    Eslint ships v10.5.0 with new lint rule reporting improvements and bug fixes. It tightens error highlights to smaller code ranges, corrects max-depth and max-nested-callbacks calculations, and may surface more linting errors in existing code.

    We just pushed ESLint v10.5.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.

    Highlights

    • Five core rules now highlight smaller ranges of code to avoid shadowing other problems in editors.
      • Rules max-lines-per-function, max-nested-callbacks, and max-statements now highlight only the function header instead of the entire function.
      • Rules max-depth and no-with now highlight only the first keyword.
    • Several errors in the calculations have been corrected in the max-depth and max-nested-callbacks rules. These bug fixes can result in reporting more linting errors in existing code.

    Features

    • 5ca8c52 feat: correct stack tracking in max-nested-callbacks (#20973) (Pixel998)
    • b565783 feat: report no-with violations at the with keyword (#20971) (Pixel998)
    • 2ce032f feat: report max-lines-per-function violations at function head (#20966) (Pixel998)
    • 732cb3e feat: report max-nested-callbacks violations at function head (#20967) (Pixel998)
    • f9c138a feat: report max-depth violations on keywords (#20943) (Pixel998)
    • bdb496c feat: correct max-depth handling for else-if chains (#20944) (Pixel998)
    • c296873 feat: update error loc in max-statements to function header (#20907) (Taejin Kim)

    Documentation

    • 8ae1b5b docs: Update README (GitHub Actions Bot)
    • ca7eb90 docs: update Node.js prerequisites to include ICU support (#20962) (Francesco Trotta)
    • f99b47a docs: Update README (GitHub Actions Bot)
    • acf03d4 docs: clarify precedence of parserOptions over languageOptions (#20926) (sethamus)

    Chores

    • b18bf58 chore: update ecosystem plugins (#20959) (ESLint Bot)
    • c2d1444 refactor: replace areAllSegmentsUnreachable with !isAnySegmentReachable (#20951) (Taejin Kim)
    • 243b8c5 chore: enhance config-rule to support oneOf, anyOf, and nested schemas (#20788) (kuldeep kumar)
    • 217b2a9 test: add unit tests for ParserService (#20949) (Taejin Kim)
    • 72003e7 test: add location information to error messages in max-statements (#20945) (lumir)
    • 7797c26 refactor: deduplicate isAnySegmentReachable across rules (#20890) (Taejin Kim)
    • 67c46fa chore: update ecosystem plugins (#20938) (ESLint Bot)
    • 95d8c7a chore: update dependency @eslint/json to v2 (#20934) (renovate[bot])
    • cf9e496 chore: update @arethetypeswrong/cli to 0.18.3 (#20933) (Pixel998)
    • fb6d396 test: run type tests with TypeScript 7 (#20868) (sethamus)
    Original source
  • May 29, 2026
    • Date parsed from source:
      May 29, 2026
    • First seen by Releasebot:
      May 31, 2026
    Eslint logo

    Eslint

    ESLint v10.4.1 released

    Eslint ships v10.4.1, a patch release that fixes several bugs, improves rule and type behavior, and updates documentation and ecosystem testing around the core linting experience.

    We just pushed ESLint v10.4.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release.

    Bug Fixes

    • e557467 fix: update @eslint/plugin-kit version to 0.7.2 (#20930) (Francesco Trotta)
    • d4ce898 fix: propagate failures from delegated commands (#20917) (Minh Vu)
    • f4f3507 fix: prefer-arrow-callback invalid autofix with newline after async (#20916) (kuldeep kumar)
    • c5bc78b fix: false positive for reference in finally block (#20655) (Tanuj Kanti)
    • 27538c0 fix: add missing CodePath and CodePathSegment types (#20853) (Pixel998)

    Documentation

    • 61b0add docs: remove deprecated rule from related rules of max-params (#20921) (Tanuj Kanti)
    • 305d5b9 docs: remove deprecated rules from related rules section (#20911) (Tanuj Kanti)
    • 49b0202 docs: fix display: none of ad (#20901) (Tanuj Kanti)
    • 9067f94 docs: switch build to Node.js 24 (#20893) (Milos Djermanovic)
    • c91b041 docs: Update README (GitHub Actions Bot)
    • e349265 docs: clarify semver strings in rule deprecation objects (#20885) (Milos Djermanovic)

    Chores

    • b0e466b test: add data property to invalid tests cases for rules (#20924) (Tanuj Kanti)
    • f78838b test: add CodePath type coverage (#20904) (Pixel998)
    • 1daa4bd chore: update eslint-plugin-eslint-comments test data to latest commit (#20922) (Francesco Trotta)
    • 002942c ci: declare contents:read on update-readme workflow (#20919) (Arpit Jain)
    • 64bca24 chore: update ecosystem plugins (#20912) (ESLint Bot)
    • 6d7c832 chore: ignore fflate updates in renovate (#20908) (Pixel998)
    • b2c8638 ci: bump pnpm/action-setup from 6.0.7 to 6.0.8 (#20889) (dependabot[bot])
    • a9b8d7f chore: increase maxBuffer for ecosystem tests (#20881) (sethamus)
    • b702ead chore: update ecosystem update PR settings (#20884) (Pixel998)
    • 507f60e chore: update ecosystem plugins (#20882) (ESLint Bot)
    • 92f5c5b test: add unit test for message-count (#20878) (kuldeep kumar)
    • df32108 chore: add @eslint/markdown and typescript-eslint ecosystem tests (#20837) (sethamus)
    • 327f91d chore: use includeIgnoreFile internally (#20876) (Kirk Waiblinger)
    • f0dc4bd chore: pin [email protected] (#20877) (Milos Djermanovic)
    • 0f4bd25 ci: run Discord alert for ecosystem test failures (#20873) (Copilot)
    Original source
  • May 15, 2026
    • Date parsed from source:
      May 15, 2026
    • First seen by Releasebot:
      May 16, 2026
    Eslint logo

    Eslint

    ESLint v10.4.0 released

    Eslint releases v10.4.0 with a new includeIgnoreFile() helper for config files, plus bug fixes and a small set of feature and documentation updates that improve ignore handling and linting behavior.

    We just pushed ESLint v10.4.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.

    Highlights

    New includeIgnoreFile() helper

    This release introduces the includeIgnoreFile() helper for configuration files that allows for including patterns from .gitignore files or any other files with gitignore-style patterns.

    Previously available in the external package @eslint/compat, the new includeIgnoreFile helper function is exported from the eslint/config entrypoint and provides an extended API that allows multiple files to be included and patterns to be interpreted relative to the location of those files, which is a common use case for nested .gitignore files.

    // eslint.config.js
    import { defineConfig, includeIgnoreFile } from "eslint/config";
    import { fileURLToPath } from "node:url";
    const rootGitignorePath = fileURLToPath(new URL(".gitignore", import.meta.url));
    const nestedGitignorePath = fileURLToPath(new URL("some/other/folder/.gitignore", import.meta.url));
    export default defineConfig([
    includeIgnoreFile(
    [rootGitignorePath, nestedGitignorePath],
    {
    // option to interpret patterns relative to the locations of the specified files
    gitignoreResolution: true,
    }
    ),
    {
    // your overrides
    },
    ]);

    Please see the Include .gitignore Files section for more details.

    Features

    • 1a45ec5 feat: check sequence expressions in for-direction (#20701) (kuldeep kumar)
    • 450040b feat: add includeIgnoreFile() to eslint/config (#20735) (Kirk Waiblinger)

    Bug Fixes

    • 544c0c3 fix: escape code path DOT labels in debug output (#20866) (Pixel998)
    • 6799431 fix: update dependency @eslint/config-helpers to ^0.6.0 (#20850) (renovate[bot])
    • f078fef fix: handle non-array deprecated rule replacements (#20825) (xbinaryx)

    Documentation

    • 7e52a71 docs: add mention of @eslint-react/eslint-plugin (#20869) (Pavel)
    • db3468b docs: tweak wording around ambiguous CJS-vs-ESM config (#20865) (Kirk Waiblinger)
    • 9084664 docs: Update README (GitHub Actions Bot)
    • 9cc7387 docs: Update README (GitHub Actions Bot)
    • 3d7b548 docs: Update README (GitHub Actions Bot)
    • 191ec3c docs: Update README (GitHub Actions Bot)

    Chores

    • 6616856 chore: upgrade knip to v6 (#20875) (Pixel998)
    • d13b084 ci: ensure auto-created PRs run CI (#20860) (lumir)
    • e71c7af ci: bump pnpm/action-setup from 6.0.5 to 6.0.7 (#20862) (dependabot[bot])
    • d84393d test: add unit tests for SuppressionsService.applySuppressions() (#20863) (kuldeep kumar)
    • 24db8cb test: add tests for SuppressionsService.save() (#20802) (kuldeep kumar)
    • 2ef0549 chore: update ecosystem plugins (#20857) (github-actions[bot])
    • a429791 ci: remove eslint-webpack-plugin types integration test (#20668) (Milos Djermanovic)
    • 9e37386 chore: replace recast with range approach in code-sample-minimizer (#20682) (Copilot)
    • 0dd1f9f test: disable warning for vm.constants.USE_MAIN_CONTEXT_DEFAULT_LOADER (#20845) (Francesco Trotta)
    • 9da3c7b refactor: remove deprecated meta.language and migrate meta.dialects (#20716) (Pixel998)
    • 2099ed1 refactor: add meta.defaultOptions to more rules, enable linting (#20800) (xbinaryx)
    • f1dfbc9 chore: update ecosystem plugins (#20836) (github-actions[bot])
    • c759413 ci: bump pnpm/action-setup from 6.0.3 to 6.0.5 (#20843) (dependabot[bot])
    • 5b817d6 test: add unit tests for lib/shared/ast-utils (#20838) (kuldeep kumar)
    • 1c13ae3 test: add unit tests for lib/shared/severity (#20835) (kuldeep kumar)
    Original source
  • May 1, 2026
    • Date parsed from source:
      May 1, 2026
    • First seen by Releasebot:
      May 1, 2026
    Eslint logo

    Eslint

    ESLint v10.3.0 released

    Eslint ships v10.3.0 with new suggestions for the no-unused-private-class-members rule, helping remove unused private class members, plus several bug fixes and documentation updates.

    We just pushed ESLint v10.3.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.

    Highlights

    no-unused-private-class-members Suggestions

    The no-unused-private-class-members rule now provides suggestions to remove reported unused private class members.

    For example, for the following code, in which the rule reports #doSomethingElse as unused:

    class C {
      /**
       * My public method.
       */
      doSomething() {
      }
      /**
       * My private method.
       */
      #doSomethingElse() {
      }
    }
    

    It will now suggest removing #doSomethingElse. After applying the suggestion, the method and related comment will be removed:

    class C {
      /**
       * My public method.
       */
      doSomething() {
      }
    }
    

    Features

    • feat: add suggestions for no-unused-private-class-members (#20773) (sethamus)

    Bug Fixes

    • fix: handle unavailable require cache (#20812) (Simon Podlipsky)
    • fix: rule suggestions cause continuation in class body (#20787) (Milos Djermanovic)

    Documentation

    • docs: fix typos in docs and comments (#20809) (Tanuj Kanti)
    • docs: Update README (GitHub Actions Bot)

    Chores

    • ci: use pnpm in eslint-flat-config-utils type integration test (#20826) (Francesco Trotta)
    • chore: clean up typos in comments and JSDoc (#20821) (Pixel998)
    • chore: add missing continue-on-error to ecosystem-tests.yml (#20818) (Josh Goldberg ✨)
    • ci: bump pnpm/action-setup from 6.0.1 to 6.0.3 (#20815) (dependabot[bot])
    • chore: update ilshidur/action-discord action to v0.4.0 (#20811) (renovate[bot])
    • chore: pin peter-evans/create-pull-request action to 5f6978f (#20810) (renovate[bot])
    • chore: add initial ecosystem plugin tests workflow (#19643) (Josh Goldberg ✨)
    • test: Add unit tests for SuppressionsService.prune() (#20797) (kuldeep kumar)
    • test: add unit tests for ForkContext (#20778) (kuldeep kumar)
    • test: add unit tests for SuppressionsService.suppress() method (#20765) (kuldeep kumar)
    • chore: update dependency prettier to v3.8.3 (#20782) (renovate[bot])
    • chore: update TypeScript to v6 (#20677) (sethamus)
    • ci: bump pnpm/action-setup from 6.0.0 to 6.0.1 (#20781) (dependabot[bot])
    • test: add unit tests for IdGenerator (#20775) (kuldeep kumar)
    Original source
  • Apr 17, 2026
    • Date parsed from source:
      Apr 17, 2026
    • First seen by Releasebot:
      Apr 18, 2026
    Eslint logo

    Eslint

    ESLint v10.2.1 released

    Eslint ships v10.2.1 as a patch release with bug fixes for code path analysis, async promise executor false positives, and clearer validation errors, plus documentation and test updates.

    We just pushed ESLint v10.2.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release.

    Bug Fixes

    • 14be92b fix: model generator yield resumption paths in code path analysis (#20665) (sethamus)
    • 84a19d2 fix: no-async-promise-executor false positives for shadowed Promise (#20740) (xbinaryx)
    • af764af fix: clarify language and processor validation errors (#20729) (Pixel998)
    • e251b89 fix: update eslint (#20715) (renovate[bot])

    Documentation

    • ca92ca0 docs: reuse markdown-it instance for markdown filter (#20768) (Amaresh S M)
    • 57d2ee2 docs: Enable Eleventy incremental mode for watch (#20767) (Amaresh S M)
    • c1621b9 docs: fix typos in code-path-analyzer.js (#20700) (Ayush Shukla)
    • 1418d52 docs: Update README (GitHub Actions Bot)
    • 39771e6 docs: Update README (GitHub Actions Bot)
    • 71e0469 docs: fix incomplete JSDoc param description in no-shadow rule (#20728) (kuldeep kumar)
    • 22119ce docs: clarify scope of for-direction rule with dead code examples (#20723) (Amaresh S M)
    • 8f3fb77 docs: document meta.docs.dialects (#20718) (Pixel998)

    Chores

    • 7ddfea9 chore: update dependency prettier to v3.8.2 (#20770) (renovate[bot])
    • fac40e1 ci: bump pnpm/action-setup from 5.0.0 to 6.0.0 (#20763) (dependabot[bot])
    • 7246f92 test: add tests for SuppressionsService.load() error handling (#20734) (kuldeep kumar)
    • 4f34b1e chore: update pnpm/action-setup action to v5 (#20762) (renovate[bot])
    • 51080eb test: processor service (#20731) (kuldeep kumar)
    • e7e1889 chore: remove stale babel-eslint10 fixture and test (#20727) (kuldeep kumar)
    • 4e1a87c test: remove redundant async/await in flat config array tests (#20722) (Pixel998)
    • 066eabb test: add rule metadata coverage for languages and docs.dialects (#20717) (Pixel998)
    Original source
  • Apr 3, 2026
    • Date parsed from source:
      Apr 3, 2026
    • First seen by Releasebot:
      Apr 4, 2026
    Eslint logo

    Eslint

    ESLint v10.2.0 released

    Eslint ships v10.2.0 with language-aware rules via meta.languages, letting rule authors declare supported languages and triggering runtime errors on unsupported ones. It also adds Temporal support, updates globals, and fixes several bugs.

    We just pushed ESLint v10.2.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.

    Highlights

    Language-aware rules

    ESLint v10.2.0 adds support for language-aware rules through the new meta.languages property. Rule authors can now explicitly declare which languages a rule supports, and ESLint will throw a runtime error if that rule is enabled for an unsupported language, as specified by the language configuration option.

    Here is an example of a rule that only supports the JavaScript language:

    const rule = {
      meta: {
        type: "problem",
        docs: {
          description: "Example JavaScript rule",
        },
        languages: ["js/js"],
      },
      create(context) {
        return {};
      },
    };
    

    Currently, none of the ESLint built-in rules restrict the languages they are designed to work with, but this may change in the future.

    More information about the meta.languages property can be found in the custom rules documentation.

    Temporal support

    With the Temporal proposal now at TC39 stage 4, ESLint v10.2.0 recognizes Temporal as a built-in global. As a result, the no-undef rule no longer flags Temporal under the default configuration:

    /* eslint no-undef: "error" */
    const now = Temporal.Now.instant();
    // OK
    

    In addition, the no-obj-calls rule now reports direct calls to the global Temporal object:

    /* eslint no-obj-calls: "error" */
    Temporal();
    // Error: 'Temporal' is not a function.
    

    Features

    • feat: Add meta.languages support to rules (#20571) (Copilot)
    • feat: add Temporal to no-obj-calls (#20675) (Pixel998)
    • feat: add Temporal to ES2026 globals (#20672) (Pixel998)

    Bug Fixes

    • fix: update first-party dependencies (#20714) (Francesco Trotta)

    Documentation

    • docs: add language to configuration objects (#20712) (Francesco Trotta)
    • docs: Update README (GitHub Actions Bot)
    • docs: remove sourceType from ts playground link (#20477) (Tanuj Kanti)
    • docs: Update README (GitHub Actions Bot)
    • docs: Update README (GitHub Actions Bot)
    • docs: add Major Releases section to Manage Releases (#20269) (Milos Djermanovic)
    • docs: update eslint versions in examples (#20664) (루밀LuMir)
    • docs: update ESM Dependencies policies with note for own-usage packages (#20660) (Milos Djermanovic)

    Chores

    • refactor: extract no unmodified loop condition (#20679) (kuldeep kumar)
    • chore: update dependency markdownlint-cli2 to ^0.22.0 (#20697) (renovate[bot])
    • test: add unit tests for unicode utilities (#20622) (Manish chaudhary)
    • ci: remove --legacy-peer-deps from types integration tests (#20667) (Milos Djermanovic)
    • chore: update dependency npm-run-all2 to v8 (#20663) (renovate[bot])
    • chore: add prettier update commit to .git-blame-ignore-revs (#20662) (루밀LuMir)
    • chore: update dependency eslint-plugin-regexp to ^3.1.0 (#20659) (Milos Djermanovic)
    • chore: update dependency eslint-plugin-eslint-plugin to ^7.3.2 (#20661) (Milos Djermanovic)
    • test: Add tests for eslintrc-style keys (#20645) (kuldeep kumar)
    Original source
  • Mar 20, 2026
    • Date parsed from source:
      Mar 20, 2026
    • First seen by Releasebot:
      Mar 21, 2026
    Eslint logo

    Eslint

    ESLint v10.1.0 released

    Eslint ships v10.1.0 with API support for bulk suppressions, letting IDEs and other Node.js API consumers apply suppressions in lint results. The minor release also fixes several bugs and improves the overall release experience.

    We just pushed ESLint v10.1.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.

    Highlights

    API Support for Bulk Suppressions

    ESLint v10.1.0 introduces API support for the bulk suppressions feature that was previously only available in the CLI.

    ESLint API consumers, such as IDEs, can now pass the applySuppressions: true option to the ESLint constructor. With this option, suppressions from the suppressions file are automatically applied to results from ESLint#lintFiles() and ESLint#lintText() methods.

    const eslint = new ESLint({
      applySuppressions: true,
      // optional, defaults to `eslint-suppressions.json`
      suppressionsLocation: "./config/my-suppressions.json",
    });
    

    Please see the Bulk Suppressions - Usage with the Node.js API section for more details.

    Features

    • feat: apply fix for no-var in TSModuleBlock (#20638) (Tanuj Kanti)
    • feat: Implement api support for bulk-suppressions (#20565) (Blake Sager)

    Bug Fixes

    • fix: Prevent no-var autofix when a variable is used before declaration (#20464) (Amaresh S M)
    • fix: update eslint (#20597) (renovate[bot])

    Documentation

    • docs: use correct JSDoc link in require-jsdoc (#20641) (mkemna-clb)
    • docs: add deprecation notice partial (#20639) (Milos Djermanovic)
    • docs: update v9 migration guide for @eslint/js usage (#20540) (fnx)
    • docs: note that globalReturn applies only with sourceType: "script" (#20630) (Milos Djermanovic)
    • docs: merge ESLint option descriptions into type definitions (#20608) (Francesco Trotta)
    • docs: Update README (GitHub Actions Bot)
    • docs: open playground link in new tab (#20602) (Tanuj Kanti)
    • docs: Add AI Usage Policy (#20510) (Nicholas C. Zakas)

    Chores

    • chore: update dependency eslint-plugin-unicorn to ^63.0.0 (#20584) (Milos Djermanovic)
    • chore: update prettier to 3.8.1 (#20651) (루밀LuMir)
    • chore: update dependency @eslint/json to ^1.2.0 (#20652) (renovate[bot])
    • chore: update dependency c8 to v11 (#20650) (renovate[bot])
    • chore: update dependency @eslint/json to v1 (#20649) (renovate[bot])
    • chore: update dependency markdownlint-cli2 to ^0.21.0 (#20646) (renovate[bot])
    • chore: remove trunk (#20478) (sethamus)
    • test: fix CLI test for empty output file (#20640) (kuldeep kumar)
    • ci: bump pnpm/action-setup from 4.3.0 to 4.4.0 (#20636) (dependabot[bot])
    • test: fix RuleTester test without test runners (#20631) (Francesco Trotta)
    • test: Add tests for isValidWithUnicodeFlag (#20601) (Manish chaudhary)
    • ci: unpin Node.js 25.x in CI (#20615) (Copilot)
    • chore: update pnpm/action-setup digest to b906aff (#20610) (renovate[bot])
    Original source
  • Mar 6, 2026
    • Date parsed from source:
      Mar 6, 2026
    • First seen by Releasebot:
      Mar 7, 2026
    Eslint logo

    Eslint

    ESLint v10.0.3 released

    Eslint releases patch v10.0.3 with bug fixes and a minimatch upgrade to ^10.2.4. The update improves file recognition and includes docs and housekeeping changes to support the release.

    We just pushed ESLint v10.0.3, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release.

    Highlights

    This release sets the minimatch dependency version used in ESLint to ^10.2.4. This change avoids a bug in a previous minimatch release that could cause ESLint to not recognize certain files.

    Bug Fixes

    • e511b58 fix: update eslint ( #20595 ) (renovate[bot])
    • f4c9cf9 fix: include variable name in no-useless-assignment message ( #20581 ) (sethamus)
    • ee9ff31 fix: update dependency minimatch to ^10.2.4 ( #20562 ) (Milos Djermanovic)

    Documentation

    • 9fc31b0 docs: Update README (GitHub Actions Bot)
    • 4efaa36 docs: add info box for eslint-plugin-eslint-comments ( #20570 ) (DesselBane)
    • 23b2759 docs: add v10 migration guide link to Use docs index ( #20577 ) (Pixel998)
    • 80259a9 docs: Remove deprecated eslintrc documentation files ( #20472 ) (Copilot)
    • 9b9b4ba docs: fix typo in no-await-in-loop documentation ( #20575 ) (Pixel998)
    • e7d72a7 docs: document TypeScript 5.3 minimum supported version ( #20547 ) (sethamus)

    Chores

    • ef8fb92 chore: package.json update for eslint-config-eslint release (Jenkins)
    • e8f2104 chore: updates for v9.39.4 release (Jenkins)
    • 5cd1604 refactor: simplify isCombiningCharacter helper ( #20524 ) (Huáng Jùnliàng)
    • 70ff1d0 chore: eslint-config-eslint require Node ^20.19.0 || ^22.13.0 || >=24 ( #20586 ) (Milos Djermanovic)
    • e32df71 chore: update eslint-plugin-eslint-comments, remove legacy-peer-deps ( #20576 ) (Milos Djermanovic)
    • 53ca6ee chore: disable eslint-comments/no-unused-disable rule ( #20578 ) (Milos Djermanovic)
    • e121895 ci: pin Node.js 25.6.1 ( #20559 ) (Milos Djermanovic)
    • efc5aef chore: update tsconfig.json in eslint-config-eslint ( #20551 ) (Francesco Trotta)
    Original source
  • Mar 6, 2026
    • Date parsed from source:
      Mar 6, 2026
    • First seen by Releasebot:
      Mar 7, 2026
    Eslint logo

    Eslint

    ESLint v9.39.4 released

    Eslint releases patch update v9.39.4 focused on bug fixes and security patches. It updates minimatch and related dependencies to fix file recognition and a security issue, plus fixes to eslint/eslintrc and ajv and a small docs note. This maintenance release adds stability with no new features.

    We just pushed ESLint v9.39.4, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release.

    Highlights

    This release sets the
    minimatch
    dependency version used in ESLint to
    ^3.1.5
    . This change avoids a bug in a previous minimatch release that could cause ESLint to not recognize certain files. A transitive dependency on minimatch was also updated to
    ^3.1.5
    to include a fix for a recently published security issue.

    Bug Fixes

    • f18f6c8
      fix: update dependency minimatch to ^3.1.5 (
      #20564
      ) (Milos Djermanovic)
    • a3c868f
      fix: update dependency @eslint/eslintrc to ^3.3.4 (
      #20554
      ) (Milos Djermanovic)
    • 234d005
      fix: minimatch security vulnerability patch for v9.x (
      #20549
      ) (Andrej Beles)
    • b1b37ee
      fix: update
      ajv
      to
      6.14.0
      to address security vulnerabilities (
      #20538
      ) (루밀LuMir)

    Documentation

    • 4675152
      docs: add deprecation notice partial (
      #20520
      ) (Milos Djermanovic)

    Chores

    • b8b4eb1
      chore: update dependencies for ESLint v9.39.4 (
      #20596
      ) (Francesco Trotta)
    • 71b2f6b
      chore: package.json update for @eslint/js release (Jenkins)
    • 1d16c2f
      ci: pin Node.js 25.6.1 (
      #20563
      ) (Milos Djermanovic)

    Francesco Trotta
    ESLint Technical Steering Committee

    Original source
  • Feb 23, 2026
    • Date parsed from source:
      Feb 23, 2026
    • First seen by Releasebot:
      Feb 24, 2026
    Eslint logo

    Eslint

    ESLint v10.0.2 released

    ESLint releases patch 10.0.2 with key bug fixes and a security update. It upgrades ajv to 6.14.0 to address vulnerabilities and includes documentation tweaks and dependency bumps for a smoother sprint.

    We just pushed ESLint v10.0.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release.

    Highlights

    This release updates the ajv dependency to v6.14.0 which includes the fix for a recently published security issue.

    Bug Fixes

    • 2b72361 fix: update ajv to 6.14.0 to address security vulnerabilities (#20537) (루밀LuMir)

    Documentation

    • 13eeedb docs: link rule type explanation to CLI option --fix-type (#20548) (Mike McCready)
    • 98cbf6b docs: update migration guide per Program range change (#20534) (Huáng Jùnliàng)
    • 61a2405 docs: add missing semicolon in vars-on-top rule example (#20533) (Abilash)

    Chores

    • 951223b chore: update dependency @eslint/eslintrc to ^3.3.4 (#20553) (renovate[bot])
    • 6aa1afe chore: update dependency eslint-plugin-jsdoc to ^62.7.0 (#20536) (Milos Djermanovic)
    Original source
Releasebot

Curated by the Releasebot team

Releasebot is an aggregator of official product update announcements from hundreds of software vendors and thousands of sources.

Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.