ESLint v8.0.0 released

by Brandon Mills - 9 October 2021

We just pushed ESLint v8.0.0, which is a major release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. This release also has some breaking changes, so please read the following closely.


There are several breaking changes in v8.0.0. We've created a migration guide to explain the breaking changes and describe how to upgrade. In addition, there are several new features:

  • ESLint's default parser and all core rules now fully support the following ES2022 syntax:
    • Class public instance fields and private instance fields
    • Class public static fields and private static fields
    • Class private instance methods and accessors
    • Class private static methods and accessors
    • RegExp match indices
    • Top-level await
  • Autofix can now remove unused disable directives when --fix and --report-unused-disable-directives are used together.
  • The use of reserved words as identifiers in ES3 is now disallowed. This change only affects users with default parser configured with { "ecmaVersion": 3 } in parser options.
  • The class-methods-use-this rule has a new enforceForClassFields option.
  • The max-classes-per-file rule has a new ignoreExpressions option.
  • The property has been removed from all core rules.

Breaking Changes


Bug Fixes


Dependency Upgrades

  • 71faa38 Build: changelog update for 8.0.0-rc.0 (ESLint Jenkins)
  • d148ffd Build: changelog update for 8.0.0-beta.2 (ESLint Jenkins)
  • 95cc61e Build: changelog update for 8.0.0-beta.1 (ESLint Jenkins)
  • c74fe08 Build: Force prerelease peer dep for Node 16 in CI (#14933) (Brandon Mills)
  • 027165c Build: changelog update for 8.0.0-beta.0 (ESLint Jenkins)
  • b8b2d55 Build: add codeql (#14729) (薛定谔的猫)


  • fabdf8a Chore: Remove target.all from Makefile.js (#15088) (Hirotaka Tagawa / wafuwafu13)
  • 05d7140 Chore: document target global in Makefile.js (#15084) (Hirotaka Tagawa / wafuwafu13)
  • 47be800 Chore: test Property > .key with { a = 1 } pattern (fixes #14799) (#15072) (Milos Djermanovic)
  • 9fb0f70 Chore: fix bug report template (#15061) (Milos Djermanovic)
  • f87e199 Chore: Cleanup issue templates (#15039) (Nicholas C. Zakas)
  • 921ba1e Chore: fix failing cli test (#15041) (Milos Djermanovic)
  • 143a598 Chore: Switch issues to use forms (#15024) (Nicholas C. Zakas)
  • b4232d4 Chore: Add test that deprecated rules display a deprecated notice (#14989) (TagawaHirotaka)
  • db15183 Chore: Refactor comments of tests (#14956) (TagawaHirotaka)
  • a79c9f3 Chore: Enforce jsdoc check-line-alignment never (#14955) (Brett Zamir)
  • 2d18db6 Chore: add test for merging parserOptions in Linter (#14948) (Milos Djermanovic)
  • 9a4ae3b Chore: Apply comment require-description and check ClassDeclaration (#14949) (Brett Zamir)
  • 8344675 Chore: fix small typo (#14951) (Sosuke Suzuki)
  • 58840ac Chore: Update jsdoc plugin and tweak rules in effect (#14814) (Brett Zamir)
  • be334f9 Chore: Fix Makefile call to linter.getRules() (#14932) (Brandon Mills)
  • 0c86b68 Chore: Replace old syntax for Array flat/flatMap (#14614) (Stephen Wade)
  • 6a89f3f Chore: ignore yarn-error.log and .pnpm-debug.log (#14925) (Nitin Kumar)
  • 3b6cd89 Chore: Add rel/abs path tests in no-restricted-{imports/modules} rules (#14910) (Bryan Mishkin)
  • f984515 Chore: add assertions on reporting location in semi (#14899) (Nitin Kumar)
  • 149230c Chore: Specify Node 14.x for Verify Files CI job (#14896) (Milos Djermanovic)
  • 537cf6a Chore: update glob-parent (fixes #14879)(#14887) (Nitin Kumar)
  • f7b4a3f Chore: update dev deps to latest (#14624) (薛定谔的猫)