
Highlights
--pass-on-unpruned-suppressions CLI Option
ESLint v9.24.0 introduced bulk suppressions, a highly anticipated feature. When bulk suppressions are enabled, ESLint tracks previously suppressed violations in a file called eslint-suppressions.json, ensuring they remain ignored in subsequent runs. As the codebase is edited, some of these violations may be resolved but will still be listed in the suppressions file until explicitly removed. The original bulk suppressions draft proposed exiting with exit code 2 in cases where unused suppressions were found, but users requested the ability to ignore unpruned suppressions for greater flexibility.
With ESLint v9.28.0, this is now possible thanks to a new CLI option. The --pass-on-unpruned-suppressions flag allows ESLint to skip suppressions that no longer occur. When this flag is enabled, unused suppressions are not reported as errors and do not affect the exit code.
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.28.0 introduces full TypeScript syntax support for five more core rules. These rules are:
func-style. This rule has the new TypeScript-specific option"allowTypeAnnotation"and has been updated to ignore overloaded function declarations in TypeScript code.no-magic-numbers. This rule has new TypeScript-specific options:"ignoreEnums","ignoreNumericLiteralTypes","ignoreReadonlyClassProperties", and"ignoreTypeIndexes".no-shadow. This rule has new TypeScript-specific options"ignoreTypeValueShadow"and"ignoreFunctionTypeParameterNameValueShadow", and the"hoist"option accept new, TypeScript-specific values.no-use-before-define. This rule has new TypeScript-specific options:"enums","typedefs", and"ignoreTypeReferences".prefer-arrow-callback.
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.
Features
b0674befeat: Customization of serialization for languageOptions (#19760) (Nicholas C. Zakas)a95721ffeat: Add--pass-on-unpruned-suppressionsCLI option (#19773) (Milos Djermanovic)bfd0e7afeat: support TypeScript syntax inno-use-before-define(#19566) (Tanuj Kanti)68c61c0feat: support TS syntax inno-shadow(#19565) (Nitin Kumar)0f773effeat: support TS syntax inno-magic-numbers(#19561) (Nitin Kumar)c4a6b60feat: add allowTypeAnnotation to func-style (#19754) (sethamus)b03ad17feat: add TypeScript support toprefer-arrow-callback(#19678) (Tanuj Kanti)bc3c331feat: ignore overloaded function declarations in func-style rule (#19755) (sethamus)
Bug Fixes
eea3e7efix: Remove configured global variables fromGlobalScope#implicit(#19779) (Milos Djermanovic)a467de3fix: update context.report types (#19751) (Nitin Kumar)fd467bbfix: remove interopDefault to use jiti’s default (#19697) (sethamus)72d16e3fix: avoid false positive inno-unassigned-varsfor declare module (#19746) (Azat S.)81c3c93fix: curly types (#19750) (Eli)
Documentation
3ec2082docs: Nested arrays in files config entry (#19799) (Nicholas C. Zakas)89a65b0docs: clarify how config arrays can apply to subsets of files (#19788) (Shais Ch)2ba8a0ddocs: Add description of meta.namespace to plugin docs (#19798) (Nicholas C. Zakas)59dd7e6docs: updatefunc-stylewith examples (#19793) (Tanuj Kanti)e9129e0docs: add global scope’simplicitfield to Scope Manager docs (#19770) (Milos Djermanovic)52f5b7adocs: fix minor typos and add links (#19743) (루밀LuMir)00716a3docs: upfront recommend against using the no-return-await rule (#19727) (Mike DiDomizio)
Chores
175b7b8chore: upgrade to@eslint/js@9.28.0(#19802) (Francesco Trotta)844f5a6chore: package.json update for @eslint/js release (Jenkins)62b1c1bchore: update globals to v16 (#19791) (Nitin Kumar)e8a1cb8chore: ignore jiti-v2.0 & jiti-v2.1 for renovate (#19786) (Nitin Kumar)43d3975chore: Add Copilot Instructions file (#19753) (Nicholas C. Zakas)2dfb5ebtest: updateSourceCodeTraversertests (#19763) (Milos Djermanovic)5bc21f9chore: add*.code-workspaceto.gitignore(#19771) (루밀LuMir)f4fa40erefactor: NodeEventGenerator -> SourceCodeTraverser (#19679) (Nicholas C. Zakas)0f49329refactor: use a service to emit warnings (#19725) (Francesco Trotta)20a9e59chore: update dependency shelljs to ^0.10.0 (#19740) (renovate[bot])
