ESLint v9.39.0 released

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

More precise problem locations

ESLint v9.39.0 introduces improvements that narrow the highlighted locations for certain rule violations. By reducing unnecessary highlighting, these changes cut down on visual noise and make issues in code easier to spot and fix.

Here’s what’s new:

  • complexity: In v9.38.0, this rule was updated to highlight only a function’s header instead of the entire function. With v9.39.0, the same refinement now applies to class static blocks: only the header is highlighted, not the whole block.
  • for-direction: Now highlights only the header portion of a for loop, instead of the full statement.
  • no-dupe-args: Now highlights just the argument list in a function definition, not the whole function.
  • no-dupe-class-members: Now highlights only the identifiers of duplicated members, rather than their full definitions.

Unified rule performance report

When the TIMING environment variable is set and ESLint runs in multithread mode with the --concurrency option, the output now includes a single, unified performance report. This consolidated report aggregates timing data from all threads, replacing the previous behavior of printing multiple separate reports.

Example:

$ TIMING=1 npx eslint --concurrency=2
Rule                                | Time (ms) | Relative
:-----------------------------------|----------:|--------:
jsdoc/valid-types                   |   484.199 |     5.1%
n/no-extraneous-require             |   431.187 |     4.5%
jsdoc/check-access                  |   375.205 |     3.9%
jsdoc/check-values                  |   323.224 |     3.4%
jsdoc/check-types                   |   308.546 |     3.2%
jsdoc/check-tag-names               |   305.308 |     3.2%
n/no-unsupported-features/es-syntax |   275.097 |     2.9%
expect-type/expect                  |   257.434 |     2.7%
jsdoc/check-alignment               |   255.678 |     2.7%
jsdoc/require-property-type         |   250.951 |     2.6%

Features

Bug Fixes

  • 15f5c7c fix: forward traversal step.args to visitors (#20253) (jaymarvelz)
  • 5a1a534 fix: allow JSDoc comments in object-shorthand rule (#20167) (Nitin Kumar)
  • e86b813 fix: Use more types from @eslint/core (#20257) (Nicholas C. Zakas)
  • 927272d fix: correct Scope typings (#20198) (jaymarvelz)
  • 37f76d9 fix: use AST.Program type for Program node (#20244) (Francesco Trotta)
  • ae07f0b fix: unify timing report for concurrent linting (#20188) (jaymarvelz)
  • b165d47 fix: correct Rule typings (#20199) (jaymarvelz)
  • fb97cda fix: improve error message for missing fix function in suggestions (#20218) (jaymarvelz)

Documentation

Chores

  • dfe3c1b chore: update @eslint/js version to 9.39.0 (#20270) (Francesco Trotta)
  • 2375a6d chore: package.json update for @eslint/js release (Jenkins)
  • a1f4e52 chore: update @eslint dependencies (#20265) (Francesco Trotta)
  • c7d3229 chore: update dependency @eslint/core to ^0.17.0 (#20256) (renovate[bot])
  • 27549bc chore: update fuzz testing to not error if code sample minimizer fails (#20252) (Milos Djermanovic)
  • a1370ee ci: bump actions/setup-node from 5 to 6 (#20230) (dependabot[bot])
  • 9e7fad4 chore: add script to auto-generate eslint:recommended configuration (#20208) (唯然)

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

ESLint v9.38.0 released
2 min read

ESLint v9.38.0 released

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

What's coming in ESLint v10.0.0
4 min read

What's coming in ESLint v10.0.0

We want to share with you the significant changes that will be coming in v10.0.0 so you can better prepare for the changes and understand why the changes are necessary.

ESLint v9.37.0 released
2 min read

ESLint v9.37.0 released

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