npm / @typescript-eslint/eslint-plugin
@typescript-eslint/eslint-plugin
What changed in @typescript-eslint/eslint-plugin 8, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
5 breaking3 deprecations9 new APIs and options6 behavior and defaults1 tooling119 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@typescript-eslint/eslint-plugin 8143 changes
Breaking changes 5
Invalid definite assignment in class properties now throws.
The rule reports more cases based on assignability, helping identify additional unnecessary type assertions.
The rule now requires strictNullChecks.
The rule is no longer marked as fixable.
Redundancy checks use assignability checking, which can change which type constituents the rule reports as redundant.
Deprecations 3
Deprecates the extension rule.
The rule is deprecated.
The utilities API deprecates defaultOptions in favor of meta.defaultOptions.
New APIs and options 9
Adds the no-unsafe-enum-assignment rule to detect unsafe enum assignments.
Adds the no-generated-empty-object-type rule.
Adds the flagUnions option for checkConditionals.
Adds TypeOrValueSpecifier support to the rule's allow option.
Adds the strict-void-return rule to the ESLint plugin.
Adds the no-multiple-lines-of-errors rule to eslint-plugin-internal.
The plugin meta now includes a namespace.
Adds the no-useless-default-assignment rule to eslint-plugin.
A new extension rule is available to report unused private class members.
Behavior and default changes 6
Adds a warning when TypeScript 7 is detected.
Reports specialized errors for shadowing an enum declaration or member.
The rule now supports using and await using declarations.
Detects async usage of a sync dispose usage.
Allows literal loop conditions in for and do loops.
The rule fixes some cases to optional syntax.
Tooling 1
Adds a fixer that removes unused imports.
Fixes and other changes 119
The rule now parenthesizes constraints in optional tuple elements.
The rule now counts instantiated mapped type templates.
The rule now ignores type-only references for after-used.
The rule now avoids false positives when not using the TypeScript ESLint parser.
The rule now provides a safe fix when an optional chain ends with a strict null comparison.
Does not autofix when the declared return type is unknown.
Skips argument checks for calls without arguments.
Counts instantiated mapped type constraints when checking for unnecessary type parameters.
Skips identical types and bounds deep type walks.
Reports usedOnlyAsType for partially exported merged declarations.
Checks the constrained type when deciding whether to prefer an optional chain.
Uses the array argument type constraint when checking sort comparisons.
The rule now handles a return outside of any function.
The rule now specializes the report message for generic assertions.
The rule now always sorts literal cases in a stable order.
The rule now respects this: void on class properties.
Prevents autofix from breaking code when removing await.
Uses unknown[] for bare any rest parameters.
Doesn't report a mapped type whose keys are not resolved yet.
Allows void on assignment expressions.
Handles multiple Promise constituents.
Omits WeakMap spread suggestions.
Handles union-keyed index access on the left-hand side of nullish assignment.
Accounts for parameter reassignment.
Fixes a false positive for an empty object asserted to a type alias of Record.
Handles type precedence in the suggestion fixer.
Converts the fixer to a suggestion fixer.
Avoids false positives on tuples with a rest element.
Treats Intl.Collator.prototype.compare as spec-bound.
Stops reporting fields that read fields declared before them.
Reports deprecated imported values used in object shorthand properties.
Avoids a false positive on the RHS of a nested logical expression.
Reports void used on non-call expressions.
Uses scope analysis instead of type checking for merged namespaces.
Compares type parameters by constraint instead of name.
Suggestions that would result in invalid interfaces or export defaults are ignored.
With ignoreVoid set to false, the rule no longer misses cases in ArrowFunctionExpression.
The rule avoids stack overflow when processing recursive types.
Autofix no longer breaks code in arrow functions.
The rule now provides fix suggestions for reported issues.
The rule now reports identical signatures.
Types in the rule's report are deduplicated.
Preserves type annotations and does not drop decorators when applying the rule.
Ignores shadowed built-ins.
Checks MappedType key remapping.
Does not report defaults used by other overloads.
Handles shadowed Boolean calls.
No longer flags computed assignments that use a variable key.
Handles escaped dollar signs at the end of regular expression literals.
Reports unbound methods accessed through a member expression on union types.
The rule now handles constrained arrays.
Suggests converting readonly function properties instead of emitting invalid syntax.
No longer flags a shadowed String() call.
Handles optional-chained calls to overloaded functions.
The fixer preserves the boolean result for nullable true comparisons.
The fixer parenthesizes an object literal at the left edge of an expression statement.
The rule uses a suggestion instead of an autofix for a trailing binary operator.
Preserves comments when applying fixes.
Fixes a precedence bug in the rule's autofix.
Respects ECMAScript line terminators when reporting unnecessary template expressions.
Wraps an object literal in parentheses when removing a TSTypeAssertion in an arrow body.
Avoids false positives for template literal expressions.
The type of UnaryExpression.prefix is now always true.
Rules now respect ECMAScript line terminators.
Corrected the rule to match ESLint v10 handling.
Fixed a stack overflow when the rule processes recursive types.
Object destructuring values are now treated as declarations by the rule.
The rule no longer crashes on recursive template literal types.
Treats void as nullish when checking for unnecessary conditions.
Handles instantiation expressions.
Avoids false positives in logical assignment assertions.
Preserves phantom type arguments in generic inference.
Preserves index signatures in undefined unions.
Fixes a crash when checker.getTypeArguments is not a function.
The rule uses assignability checks in checkTypePredicates, which can change its unnecessary-condition reports.
Fixes a false negative for type predicate parameters.
The package now supports TypeScript 6.
The rule now handles index signatures.
The rule no longer crashes.
The rule avoids fixing unknown RegExp flags.
Ignores Array and ReadonlyArray types without type arguments.
Flags banned generics used in extends or implements.
Fixes a false positive when unwrapping a generic.
Skips false-positive reports for unresolved type parameters.
Removes a dangling closing parenthesis.
Preserves type alias information when checking readonly parameter types.
The rule no longer reports a property on an intersection type.
Fixes a false positive for toString methods with overloads.
Guards against negative paramIndex values.
Handles statically analyzable computed keys.
Fixes false positives with overloads.
Uses parser options from context.languageOptions.
Adds support for ESLint v10, allowing the plugin to be used with that ESLint release.
When removing an entire import, the rule no longer leaves a trailing newline.
The rule now reports unnecessary defaults in ternary expressions.
The rule's handling of TypeScript this parameters now reduces the parameter index.
The rule now checks both the base constraint and actual type for non-null assertions.
The rule now recognizes that a private destructured class member is defined but used.
The rule skips its fixer when an interface is a default export.
The root defaultOptions property is now optional, so rule authors can omit it.
Replaces the unclear “error” typed description with a more helpful description.
Fixes a false positive for parameters corresponding to a rest parameter.
The rule now detects @@toPrimitive and valueOf.
The rule now handles conditional initializers.
The rule's crash and false-positive cases are fixed.
The rule now handles MemberExpression in the final chain position.
Ignores methods that return this.
Corrects handling of undefined vs. void.
The ESLint plugin uses Intl.Segmenter instead of graphemer for text segmentation.
Checks the value flag before resolving an alias.
Checks base types in the allow list when applying restrict-template-expressions.
Honors ignored base types on generic classes.
The rule ignores constructors that are typed arrays.
Binding patterns are disallowed in parameter properties during parsing.
Fixes double-reporting on computed literal identifiers.
The fixer now handles the override modifier.
The rule now supports signed numbers in enum values.
The rule now expands union types to retrieve the target property.
The rule skips optional chaining when it could change the result.