Skip to content

Releases: eslint/eslint

v9.0.0-rc.0

22 Mar 20:58

Choose a tag to compare

v9.0.0-rc.0 Pre-release
Pre-release

Breaking Changes

  • 09bd7fe feat!: move AST traversal into SourceCode (#18167) (Nicholas C. Zakas)

Features

  • b8fb572 feat: add reportUnusedFallthroughComment option to no-fallthrough rule (#18188) (Kirk Waiblinger)

Bug Fixes

  • ae8103d fix: load plugins in the CLI in flat config mode (#18185) (Francesco Trotta)

Documentation

  • 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)

Build Related

  • b91f9dc build: fix TypeError in prism-eslint-hooks.js (#18209) (Francesco Trotta)

Chores

  • 297416d chore: package.json update for eslint-9.0.0-rc.0 (#18223) (Francesco Trotta)
  • d363c51 chore: package.json update for @eslint/js release (Jenkins)
  • 1b841bb chore: fix some comments (#18213) (avoidaway)
  • 29c3595 chore: remove repetitive words (#18193) (cuithon)
  • acc2e06 chore: Introduce Knip (#18005) (Lars Kappert)

v9.0.0-beta.2

08 Mar 21:22

Choose a tag to compare

v9.0.0-beta.2 Pre-release
Pre-release

Breaking Changes

  • 79a95eb feat!: disallow multiple configuration comments for same rule (#18157) (Milos Djermanovic)

Features

  • 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)

Bug Fixes

  • e37153f fix: improve error message for invalid rule config (#18147) (Nitin Kumar)
  • af6e170 fix: stop linting files after an error (#18155) (Francesco Trotta)

Documentation

  • 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)

Chores

v9.0.0-beta.1

23 Feb 22:04

Choose a tag to compare

v9.0.0-beta.1 Pre-release
Pre-release

Features

  • 74124c2 feat: add suggestions to use-isnan in indexOf & lastIndexOf calls (#18063) (StyleShit)

Bug Fixes

  • 0cb4914 fix: validate options when comment with just severity enables rule (#18133) (Milos Djermanovic)

Documentation

  • 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)

Build Related

  • c9f2f33 build: changelog update for 8.57.0 (#18144) (Milos Djermanovic)

Chores

v8.57.0

23 Feb 20:39

Choose a tag to compare

Features

  • 1120b9b feat: Add loadESLint() API method for v8 (#18098) (Nicholas C. Zakas)
  • dca7d0f feat: Enable eslint.config.mjs and eslint.config.cjs (#18066) (Nitin Kumar)

Bug Fixes

  • 2196d97 fix: handle absolute file paths in FlatRuleTester (#18064) (Nitin Kumar)
  • 69dd1d1 fix: Ensure config keys are printed for config errors (#18067) (Nitin Kumar)
  • 9852a31 fix: deep merge behavior in flat config (#18065) (Nitin Kumar)
  • 4c7e9b0 fix: allow circular references in config (#18056) (Milos Djermanovic)

Documentation

  • 84922d0 docs: Show prerelease version in dropdown (#18139) (Nicholas C. Zakas)
  • 5b8c363 docs: Switch to Ethical Ads (#18117) (Milos Djermanovic)
  • 77dbfd9 docs: show NEXT in version selectors (#18052) (Milos Djermanovic)

Chores

v9.0.0-beta.0

09 Feb 23:54

Choose a tag to compare

v9.0.0-beta.0 Pre-release
Pre-release

Breaking Changes

  • 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 ✨)

Features

  • 53f0f47 feat: Add loadESLint() API method for v9 (#18097) (Nicholas C. Zakas)
  • 2d11d46 feat: add suggestions to use-isnan in binary expressions (#17996) (StyleShit)

Bug Fixes

  • c4d26fd fix: use-isnan doesn't report on SequenceExpressions (#18059) (StyleShit)

Documentation

  • f1c7e6f docs: Switch to Ethical Ads (#18090) (Strek)
  • 15c143f docs: JS Foundation -> OpenJS Foundation in PR 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)

Chores

v9.0.0-alpha.2

26 Jan 20:37

Choose a tag to compare

v9.0.0-alpha.2 Pre-release
Pre-release

Breaking Changes

  • 57089cb feat!: no-restricted-imports allow multiple config entries for same path (#18021) (Milos Djermanovic)
  • 2e1d549 feat!: detect duplicate test cases (#17955) (Bryan Mishkin)

Features

  • 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)

Bug Fixes

  • 39076fb fix: handle absolute file paths in RuleTester (#17989) (Nitin Kumar)

Documentation

  • 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)

Chores

v9.0.0-alpha.1

12 Jan 20:51

Choose a tag to compare

v9.0.0-alpha.1 Pre-release
Pre-release

Breaking Changes

  • 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 [email protected] (#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)

Features

  • 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 ✨)

Bug Fixes

  • 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)

Documentation

  • 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)

Build Related

  • c2bf27d build: update docs files when publishing prereleases (#17940) (Milos Djermanovic)

Chores

  • c5e50ee chore: package.json update for @eslint/js release (Jenkins)
  • 1bf2520 chore: Split Docs CI from core CI (#17897) (Nicholas C. Zakas)
  • 320787e chore: delete relative-module-resolver.js (#17981) (Francesco Trotta)
  • 4926f33 refactor: use Object.hasOwn() (#17948) (Milos Djermanovic)
  • df200e1 refactor: use Array.prototype.at() to get last elements (#17949) (Milos Djermanovic)
  • 750b8df chore: update dependency glob to v10 (#17917) (renovate[bot])
  • 74794f5 chore: removed unused eslintrc modules (#17938) (Milos Djermanovic)
  • 10ed29c chore: remove unused dependency rimraf (#17934) (Francesco Trotta)
  • 903ee60 ci: use --force flag when installing eslint (#17921) (Milos Djermanovic)

v9.0.0-alpha.0

29 Dec 23:47

Choose a tag to compare

v9.0.0-alpha.0 Pre-release
Pre-release

Breaking Changes

  • 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

  • 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

  • f182114 fix: deep merge behavior in flat config (#17906) (Francesco Trotta)
  • b577e8a fix: allow circular references in config (#17752) (Francesco Trotta)

Documentation

  • 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)

Chores

  • 17fedc1 chore: upgrade @eslint/[email protected] (#17928) (Milos Djermanovic)
  • cb89ef3 chore: package.json update for @eslint/js release (Jenkins)
  • f6f4a45 chore: drop structuredClone polyfill for v9 (#17915) (Kevin Gibbons)
  • 412dcbb chore: upgrade [email protected] (#17916) (Milos Djermanovic)
  • 02a8baf chore: Rename files with underscores (#17910) (Nicholas C. Zakas)
  • c0f5d91 chore: remove creating an unused instance of Linter in tests (#17902) (Milos Djermanovic)
  • 3826cdf chore: use jsdoc/no-multi-asterisks with allowWhitespace: true (#17900) (Percy Ma)
  • a9a17b3 chore: fix getting scope in tests (#17899) (Milos Djermanovic)
  • 595a1f6 test: ensure that CLI tests run with FlatESLint (#17884) (Francesco Trotta)
  • c7eca43 chore: update dependency markdownlint-cli to ^0.38.0 (#17865) (renovate[bot])
  • cc0c9f7 ci: bump github/codeql-action from 2 to 3 (#17873) (dependabot[bot])

v8.56.0

15 Dec 22:55

Choose a tag to compare

Features

  • 0dd9704 feat: Support custom severity when reporting unused disable directives (#17212) (Bryan Mishkin)
  • 31a7e3f feat: fix no-restricted-properties false negatives with unknown objects (#17818) (Arka Pratim Chaudhuri)

Bug Fixes

  • 7d5e5f6 fix: TypeError: fs.exists is not a function on read-only file system (#17846) (Francesco Trotta)
  • 74739c8 fix: suggestion with invalid syntax in no-promise-executor-return rule (#17812) (Bryan Mishkin)

Documentation

  • 9007719 docs: update link in ways-to-extend.md (#17839) (Amel SELMANE)
  • 3a22236 docs: Update README (GitHub Actions Bot)
  • 54c3ca6 docs: fix migration-guide example (#17829) (Tanuj Kanti)
  • 4391b71 docs: check config comments in rule examples (#17815) (Francesco Trotta)
  • fd28363 docs: remove mention about ESLint stylistic rules in readme (#17810) (Zwyx)
  • 48ed5a6 docs: Update README (GitHub Actions Bot)

Chores

  • ba6af85 chore: upgrade @eslint/[email protected] (#17864) (Milos Djermanovic)
  • 60a531a chore: package.json update for @eslint/js release (Jenkins)
  • ba87a06 chore: update dependency markdownlint to ^0.32.0 (#17783) (renovate[bot])
  • 9271d10 chore: add GitHub issue template for docs issues (#17845) (Josh Goldberg ✨)
  • 70a686b chore: Convert rule tests to FlatRuleTester (#17819) (Nicholas C. Zakas)
  • f3a599d chore: upgrade eslint-plugin-unicorn to v49.0.0 (#17837) (唯然)
  • 905d4b7 chore: upgrade eslint-plugin-eslint-plugin v5.2.1 (#17838) (唯然)
  • 4d7c3ce chore: update eslint-plugin-n v16.4.0 (#17836) (唯然)
  • fd0c60c ci: unpin Node.js 21.2.0 (#17821) (Francesco Trotta)

v8.55.0

01 Dec 21:47

Choose a tag to compare

Features

  • 8c9e6c1 feat: importNamePattern option in no-restricted-imports (#17721) (Tanuj Kanti)

Documentation

  • 83ece2a docs: fix typo --rules -> --rule (#17806) (OKURA Masafumi)
  • fffca5c docs: remove "Open in Playground" buttons for removed rules (#17791) (Francesco Trotta)
  • a6d9442 docs: fix correct/incorrect examples of rules (#17789) (Tanuj Kanti)
  • 383e999 docs: update and fix examples for no-unused-vars (#17788) (Tanuj Kanti)
  • 5a8efd5 docs: add specific stylistic rule for each deprecated rule (#17778) (Etienne)

Chores