unstale

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

@unstale/cli on npm

@typescript-eslint/eslint-plugin 8143 changes

Breaking changes 5

  • Invalid definite assignment in class properties now throws.

    8.64.0release notes

  • The rule reports more cases based on assignability, helping identify additional unnecessary type assertions.

    8.59.0release notes

  • The rule now requires strictNullChecks.

    8.55.0release notes

  • The rule is no longer marked as fixable.

    8.51.0release notes

  • Redundancy checks use assignability checking, which can change which type constituents the rule reports as redundant.

    8.48.0release notes

Deprecations 3

New APIs and options 9

  • Adds the no-unsafe-enum-assignment rule to detect unsafe enum assignments.

    8.71.0release notes

  • Adds the no-generated-empty-object-type rule.

    8.70.0release notes

  • Adds the flagUnions option for checkConditionals.

    8.69.0release notes

  • Adds TypeOrValueSpecifier support to the rule's allow option.

    8.57.0release notes

  • Adds the strict-void-return rule to the ESLint plugin.

    8.53.0release notes

  • Adds the no-multiple-lines-of-errors rule to eslint-plugin-internal.

    8.52.0release notes

  • The plugin meta now includes a namespace.

    8.51.0release notes

  • Adds the no-useless-default-assignment rule to eslint-plugin.

    8.50.0release notes

  • A new extension rule is available to report unused private class members.

    8.47.0release notes

Behavior and default changes 6

  • Adds a warning when TypeScript 7 is detected.

    8.65.0release notes

  • Reports specialized errors for shadowing an enum declaration or member.

    8.65.0release notes

  • The rule now supports using and await using declarations.

    8.64.0release notes

  • Detects async usage of a sync dispose usage.

    8.63.0release notes

  • Allows literal loop conditions in for and do loops.

    8.57.0release notes

  • The rule fixes some cases to optional syntax.

    8.51.0release notes

Tooling 1

Fixes and other changes 119

  • The rule now parenthesizes constraints in optional tuple elements.

    8.71.2release notes

  • The rule now counts instantiated mapped type templates.

    8.71.2release notes

  • The rule now ignores type-only references for after-used.

    8.71.2release notes

  • The rule now avoids false positives when not using the TypeScript ESLint parser.

    8.71.2release notes

  • The rule now provides a safe fix when an optional chain ends with a strict null comparison.

    8.71.2release notes

  • Does not autofix when the declared return type is unknown.

    8.71.1release notes

  • Skips argument checks for calls without arguments.

    8.71.1release notes

  • Counts instantiated mapped type constraints when checking for unnecessary type parameters.

    8.71.1release notes

  • Skips identical types and bounds deep type walks.

    8.71.1release notes

  • Reports usedOnlyAsType for partially exported merged declarations.

    8.71.1release notes

  • Checks the constrained type when deciding whether to prefer an optional chain.

    8.71.1release notes

  • Uses the array argument type constraint when checking sort comparisons.

    8.71.1release notes

  • The rule now handles a return outside of any function.

    8.71.0release notes

  • The rule now specializes the report message for generic assertions.

    8.71.0release notes

  • The rule now always sorts literal cases in a stable order.

    8.71.0release notes

  • The rule now respects this: void on class properties.

    8.71.0release notes

  • Prevents autofix from breaking code when removing await.

    8.70.1release notes

  • Uses unknown[] for bare any rest parameters.

    8.70.1release notes

  • Doesn't report a mapped type whose keys are not resolved yet.

    8.70.1release notes

  • Allows void on assignment expressions.

    8.70.1release notes

  • Handles multiple Promise constituents.

    8.70.1release notes

  • Omits WeakMap spread suggestions.

    8.70.1release notes

  • Handles union-keyed index access on the left-hand side of nullish assignment.

    8.70.1release notes

  • Accounts for parameter reassignment.

    8.70.1release notes

  • Fixes a false positive for an empty object asserted to a type alias of Record.

    8.70.1release notes

  • Handles type precedence in the suggestion fixer.

    8.70.1release notes

  • Converts the fixer to a suggestion fixer.

    8.70.1release notes

  • Avoids false positives on tuples with a rest element.

    8.70.1release notes

  • Treats Intl.Collator.prototype.compare as spec-bound.

    8.70.1release notes

  • Stops reporting fields that read fields declared before them.

    8.70.0release notes

  • Reports deprecated imported values used in object shorthand properties.

    8.70.0release notes

  • Avoids a false positive on the RHS of a nested logical expression.

    8.70.0release notes

  • Reports void used on non-call expressions.

    8.69.0release notes

  • Uses scope analysis instead of type checking for merged namespaces.

    8.69.0release notes

  • Compares type parameters by constraint instead of name.

    8.69.0release notes

  • Suggestions that would result in invalid interfaces or export defaults are ignored.

    8.68.0release notes

  • With ignoreVoid set to false, the rule no longer misses cases in ArrowFunctionExpression.

    8.68.0release notes

  • The rule avoids stack overflow when processing recursive types.

    8.68.0release notes

  • Autofix no longer breaks code in arrow functions.

    8.68.0release notes

  • The rule now provides fix suggestions for reported issues.

    8.68.0release notes

  • The rule now reports identical signatures.

    8.68.0release notes

  • Types in the rule's report are deduplicated.

    8.68.0release notes

  • Preserves type annotations and does not drop decorators when applying the rule.

    8.66.0release notes

  • Ignores shadowed built-ins.

    8.66.0release notes

  • Checks MappedType key remapping.

    8.66.0release notes

  • Does not report defaults used by other overloads.

    8.66.0release notes

  • Handles shadowed Boolean calls.

    8.66.0release notes

  • No longer flags computed assignments that use a variable key.

    8.65.0release notes

  • Handles escaped dollar signs at the end of regular expression literals.

    8.65.0release notes

  • Reports unbound methods accessed through a member expression on union types.

    8.65.0release notes

  • The rule now handles constrained arrays.

    8.64.0release notes

  • Suggests converting readonly function properties instead of emitting invalid syntax.

    8.63.0release notes

  • No longer flags a shadowed String() call.

    8.63.0release notes

  • Handles optional-chained calls to overloaded functions.

    8.63.0release notes

  • The fixer preserves the boolean result for nullable true comparisons.

    8.62.1release notes

  • The fixer parenthesizes an object literal at the left edge of an expression statement.

    8.62.1release notes

  • The rule uses a suggestion instead of an autofix for a trailing binary operator.

    8.62.1release notes

  • Preserves comments when applying fixes.

    8.61.1release notes

  • Fixes a precedence bug in the rule's autofix.

    8.61.1release notes

  • Respects ECMAScript line terminators when reporting unnecessary template expressions.

    8.61.1release notes

  • Wraps an object literal in parentheses when removing a TSTypeAssertion in an arrow body.

    8.61.1release notes

  • Avoids false positives for template literal expressions.

    8.61.1release notes

  • The type of UnaryExpression.prefix is now always true.

    8.61.0release notes

  • Rules now respect ECMAScript line terminators.

    8.60.1release notes

  • Corrected the rule to match ESLint v10 handling.

    8.60.1release notes

  • Fixed a stack overflow when the rule processes recursive types.

    8.59.4release notes

  • Object destructuring values are now treated as declarations by the rule.

    8.59.2release notes

  • The rule no longer crashes on recursive template literal types.

    8.59.2release notes

  • Treats void as nullish when checking for unnecessary conditions.

    8.59.1release notes

  • Handles instantiation expressions.

    8.59.1release notes

  • Avoids false positives in logical assignment assertions.

    8.59.1release notes

  • Preserves phantom type arguments in generic inference.

    8.59.1release notes

  • Preserves index signatures in undefined unions.

    8.59.1release notes

  • Fixes a crash when checker.getTypeArguments is not a function.

    8.59.1release notes

  • The rule uses assignability checks in checkTypePredicates, which can change its unnecessary-condition reports.

    8.58.2release notes

  • Fixes a false negative for type predicate parameters.

    8.58.1release notes

  • The package now supports TypeScript 6.

    8.58.0release notes

  • The rule now handles index signatures.

    8.58.0release notes

  • The rule no longer crashes.

    8.58.0release notes

  • The rule avoids fixing unknown RegExp flags.

    8.58.0release notes

  • Ignores Array and ReadonlyArray types without type arguments.

    8.57.2release notes

  • Flags banned generics used in extends or implements.

    8.57.2release notes

  • Fixes a false positive when unwrapping a generic.

    8.57.2release notes

  • Skips false-positive reports for unresolved type parameters.

    8.57.2release notes

  • Removes a dangling closing parenthesis.

    8.57.2release notes

  • Preserves type alias information when checking readonly parameter types.

    8.57.2release notes

  • The rule no longer reports a property on an intersection type.

    8.57.1release notes

  • Fixes a false positive for toString methods with overloads.

    8.57.0release notes

  • Guards against negative paramIndex values.

    8.57.0release notes

  • Handles statically analyzable computed keys.

    8.57.0release notes

  • Fixes false positives with overloads.

    8.57.0release notes

  • Uses parser options from context.languageOptions.

    8.56.0release notes

  • Adds support for ESLint v10, allowing the plugin to be used with that ESLint release.

    8.56.0release notes

  • When removing an entire import, the rule no longer leaves a trailing newline.

    8.55.0release notes

  • The rule now reports unnecessary defaults in ternary expressions.

    8.55.0release notes

  • The rule's handling of TypeScript this parameters now reduces the parameter index.

    8.55.0release notes

  • The rule now checks both the base constraint and actual type for non-null assertions.

    8.54.0release notes

  • The rule now recognizes that a private destructured class member is defined but used.

    8.54.0release notes

  • The rule skips its fixer when an interface is a default export.

    8.53.1release notes

  • The root defaultOptions property is now optional, so rule authors can omit it.

    8.53.1release notes

  • Replaces the unclear “error” typed description with a more helpful description.

    8.53.0release notes

  • Fixes a false positive for parameters corresponding to a rest parameter.

    8.53.0release notes

  • The rule now detects @@toPrimitive and valueOf.

    8.52.0release notes

  • The rule now handles conditional initializers.

    8.52.0release notes

  • The rule's crash and false-positive cases are fixed.

    8.51.0release notes

  • The rule now handles MemberExpression in the final chain position.

    8.51.0release notes

  • Ignores methods that return this.

    8.50.1release notes

  • Corrects handling of undefined vs. void.

    8.50.1release notes

  • The ESLint plugin uses Intl.Segmenter instead of graphemer for text segmentation.

    8.49.0release notes

  • Checks the value flag before resolving an alias.

    8.48.1release notes

  • Checks base types in the allow list when applying restrict-template-expressions.

    8.48.1release notes

  • Honors ignored base types on generic classes.

    8.48.1release notes

  • The rule ignores constructors that are typed arrays.

    8.48.0release notes

  • Binding patterns are disallowed in parameter properties during parsing.

    8.48.0release notes

  • Fixes double-reporting on computed literal identifiers.

    8.46.4release notes

  • The fixer now handles the override modifier.

    8.46.4release notes

  • The rule now supports signed numbers in enum values.

    8.46.3release notes

  • The rule now expands union types to retrieve the target property.

    8.46.3release notes

  • The rule skips optional chaining when it could change the result.

    8.46.2release notes