
Highlights
Bulk Suppressions
This release introduces the bulk suppressions feature. This feature allows for enabling new lint rules as "error" without fixing all violations upfront. While the rule will be enforced for new code, the existing violations will not be reported. This way, you can address the existing violations at your own pace.
# Fix all autofixable violations and suppress the remaining ones
eslint --suppress-all --fix
# Fix all autofixable violations, but suppress only violations for <rule-name>
eslint --suppress-rule <rule-name> --fix
This approach prioritizes preventing new violations while providing a clear path to incrementally improve existing code.
You can find all the details in the announcement blog post and the Bulk Supressions documentation page.
Patterns starting with ./
Prior to ESLint v9.24.0, files and ignores patterns that start with ./ were ignored.
As of ESLint v9.24.0, these patterns are treated as relative to the config base path (the location of the config file, or the current working directory if the --config command line option was used). A pattern that starts with ./ is equivalent to the same pattern without the ./ prefix.
// eslint.config.js
export default [
{
// Equivalent to `ignores: ["foo.js"]`
ignores: ["./foo.js"]
},
{
// Equivalent to `files: ["bar/*.js"]`
files: ["./bar/*.js"],
rules: {
"no-undef": "error"
}
}
];
TypeScript Syntax Support in Core Rules
As announced in the ESLint v9.23.0 release blog post, we are actively working to add TypeScript syntax support to core rules.
ESLint v9.24.0 introduces full TypeScript syntax support for four more core rules. These rules are:
These rules can now be used to lint TypeScript files as well as regular JavaScript.
To lint TypeScript code, be sure to use @typescript-eslint/parser, or another compatible parser.
Additionally, the class-methods-use-this rule has two new TypeScript-specific options: ignoreOverrideMethods and ignoreClassesWithImplements.
Node.js Native Loading of TypeScript Configuration Files (Experimental)
If you’re using Node.js >= 22.10.0, you can now use TypeScript configuration files (eslint.config.ts, eslint.config.mts, or eslint.config.cts) without installing jiti. This is possible thanks to the --experimental-strip-types Node.js flag.
Since this feature is still experimental, you must also enable the unstable_native_nodejs_ts_config ESLint flag.
npx --node-options='--experimental-strip-types' eslint --flag unstable_native_nodejs_ts_config
Features
556c25bfeat: support loading TS config files using--experimental-strip-types(#19401) (Arya Emami)72650acfeat: support TS syntax ininit-declarations(#19540) (Nitin Kumar)03fb0bcfeat: normalize patterns to handle “./” prefix in files and ignores (#19568) (Pixel998)071dcd3feat: support TS syntax inno-dupe-class-members(#19558) (Nitin Kumar)cd72bccfeat: Introduce a way to suppress violations (#19159) (Iacovos Constantinou)2a81578feat: support TS syntax inno-loss-of-precision(#19560) (Nitin Kumar)30ae4edfeat: add new options to class-methods-use-this (#19527) (sethamus)b79ade6feat: support TypeScript syntax inno-array-constructor(#19493) (Tanuj Kanti)
Bug Fixes
b23d1c5fix: deduplicate variable names in no-loop-func error messages (#19595) (Nitin Kumar)fb8cdb8fix: useany[]type forcontext.options(#19584) (Francesco Trotta)
Documentation
f857820docs: update documentation for--experimental-strip-types(#19594) (Nikolas Schröter)803e4afdocs: simplify gitignore path handling in includeIgnoreFile section (#19596) (Thomas Broyer)6d979ccdocs: Update README (GitHub Actions Bot)82177e4docs: Update README (GitHub Actions Bot)e849dc0docs: replace existing var with const (#19578) (Sweta Tanwar)0c65c62docs: don’t pass filename when linting rule examples (#19571) (Milos Djermanovic)6be36c9docs: Update custom-rules code example of fixer (#19555) (Yifan Pan)
Build Related
Chores
ef67420chore: upgrade @eslint/js@9.24.0 (#19602) (Milos Djermanovic)4946847chore: package.json update for @eslint/js release (Jenkins)a995acbchore: correct ‘flter’/‘filter’ typo in package script (#19587) (Josh Goldberg ✨)b9a5efatest: skip symlink test on Windows (#19503) (fisker Cheung)46eea6dchore: removeRule&FormatterFunctionfromshared/types.js(#19556) (Nitin Kumar)bdcc91dchore: modify .editorconfig to keep parity with prettier config (#19577) (Sweta Tanwar)7790d83chore: fix some typos in comment (#19576) (todaymoon)76064a6test: ignorepackage-lock.jsonforeslint-webpack-plugin(#19572) (Francesco Trotta)
