ESLint v9.20.0 released

We just pushed ESLint v9.20.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

Inactive flags do not throw an error

When we released ESLint v9.18.0 earlier this year, some users reported that running ESLint with the unstable_ts_config feature flag was throwing an error since that flag had become inactive. While the error was expected, we realized that raising a warning would be more appropriate than throwing an error in certain situations when inactive flags are used, and we decided to change the behavior accordingly. You can read more about the new feature flags policy in the documentation.

Empty configurations raise a warning

In ESLint v9.20.0, using an empty configuration or a configuration that exports an empty array as in export default [] results in a warning message.

To explicitly use a configuration that does nothing in tests or other scenarios, you can export an array with an empty object:

export default [{}];

Updated ESLint types

Last year, ESLint introduced the capability to lint languages other than JavaScript through the use of language plugins. ESLint v9.20.0 enhances many type definitions to ensure compatibility with the new features used especially in conjunction with language plugins. This change is especially significant for plugin developers because it makes it possible to create language plugins using TypeScript.

Features

  • e89a54a feat: change behavior of inactive flags (#19386) (Milos Djermanovic)

Bug Fixes

Documentation

  • b7012c8 docs: rewrite examples with var using let and const (#19407) (Mueez Javaid Hashmi)
  • 6406376 docs: Update README (GitHub Actions Bot)
  • 350f2b9 docs: rewrite some examples with var using let and const (#19404) (Mueez Javaid Hashmi)
  • 93c325a docs: rewrite examples with var using let and const (#19398) (Mueez Javaid Hashmi)
  • 56ff404 docs: replace var with let or const in rules docs (#19396) (Daniel Harbrueger)
  • 4053226 docs: change sourceType in no-eval examples (#19393) (Milos Djermanovic)
  • 1324af0 docs: replace var with let and const in rules docs (#19392) (Daniel Harbrueger)
  • 8b87e00 docs: replace var with const and let in rules (#19389) (Tanuj Kanti)
  • 758c66b docs: Explain what frozen rules mean (#19382) (Nicholas C. Zakas)
  • 0ef8bb8 docs: additional checks for rule examples (#19358) (Milos Djermanovic)
  • 58ab2f6 docs: fix order of installation steps in getting started (#19326) (Tanuj Kanti)

Chores

  • 979097a chore: upgrade @eslint/js@9.20.0 (#19412) (Francesco Trotta)
  • 031734e chore: package.json update for @eslint/js release (Jenkins)
  • d4c47c3 test: avoid empty config warning in test output (#19408) (Milos Djermanovic)
  • 67dd82a chore: update dependency @eslint/json to ^0.10.0 (#19387) (renovate[bot])
  • 15ac0e1 chore: add permissions: read-all to stale.yml workflow (#19374) (Josh Goldberg ✨)

The latest ESLint news, case studies, tutorials, and resources.

Differences between ESLint and TypeScript
7 min read

Differences between ESLint and TypeScript

Linters such as ESLint and type checkers such as TypeScript catch different areas of code defects and are best used in conjunction with each other.

ESLint v9.19.0 released
1 min read

ESLint v9.19.0 released

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

ESLint's 2024 year in review
5 min read

ESLint's 2024 year in review

2024 saw the release of ESLint v9.0.0 and the introduction of language plugins.