Skip to content

Releases: typescript-eslint/typescript-eslint

v8.71.2

Choose a tag to compare

@JamesHenry JamesHenry released this 12 Oct 17:07

8.71.2 (2026-10-12)

🩹 Fixes

  • eslint-plugin: [no-unused-vars] avoid false-positives when not using our parser (#12989)
  • eslint-plugin: [no-unnecessary-type-parameters] count instantiated mapped type templates (#12974)
  • eslint-plugin: [no-unused-vars] ignore type-only refs for after-used (#12977)
  • eslint-plugin: [no-unnecessary-type-parameters] parenthesize constraint in optional tuple elements (#12995)
  • eslint-plugin: [prefer-optional-chain] safe fix when the chain ends with a strict null comparison (#12805)
  • type-utils: match linked packages and packages with missing version in TypeOrValueSpecifier (#12948)

❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.71.1

Choose a tag to compare

@JamesHenry JamesHenry released this 05 Oct 17:06

8.71.1 (2026-10-05)

🩹 Fixes

  • eslint-plugin: [no-misused-promises] skip argument checks for calls without arguments (#12923)
  • eslint-plugin: [no-unused-vars] report usedOnlyAsType for partially exported merged declarations (#12892)
  • eslint-plugin: [require-array-sort-compare] use array argument type constraint (#12919)
  • eslint-plugin: [no-unsafe-enum-assignment] skip identical types and bound deep type walks (#12957)
  • eslint-plugin: [no-confusing-void-expression] don't autofix when declared return type is unknown (#12930)
  • eslint-plugin: [prefer-optional-chain] check the constrained type (#12953)
  • eslint-plugin: [no-unnecessary-type-parameters] count instantiated mapped type constraints (#12941)
  • project-service: throttle cleanup when opening files (#12934)
  • type-utils: match re-exports and global declarations in TypeOrValueSpecifier (#12943)

❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.71.0

Choose a tag to compare

@JamesHenry JamesHenry released this 28 Sep 17:07

8.71.0 (2026-09-28)

🚀 Features

  • eslint-plugin: [no-unsafe-enum-assignment] add rule (#12732)

🩹 Fixes

  • eslint-plugin: [switch-exhaustiveness-check] always sort literal cases in stable order (#12885)
  • eslint-plugin: [unbound-method] respect this: void on class properties (7fce9127d)
  • eslint-plugin: [no-unnecessary-type-assertion] specialize generic assertion report message (#12832)
  • eslint-plugin: [no-misused-promises] handle a return outside of any function (#12912)

❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.70.1

Choose a tag to compare

@JamesHenry JamesHenry released this 21 Sep 17:06

8.70.1 (2026-09-21)

🩹 Fixes

  • ast-spec: narrow import attribute keys to identifiers and strings (#12879)
  • eslint-plugin: [no-useless-default-assignment] avoid false positives on tuples with a rest element (#12768)
  • eslint-plugin: [no-unnecessary-type-parameters] handle type precedence in the suggestion fixer (#12637)
  • eslint-plugin: [no-explicit-any] use unknown[] for bare any rest parameters (#12818)
  • eslint-plugin: [no-generated-empty-object-type] don't report a mapped type whose keys are not resolved yet (#12854)
  • eslint-plugin: [no-misused-spread] omit WeakMap spread suggestions (#12850)
  • eslint-plugin: [no-unnecessary-type-assertion] false positive for empty object asserted to a type alias of Record (#12869)
  • eslint-plugin: [no-meaningless-void-operator] allow void on assignment expressions (#12873)
  • eslint-plugin: [await-thenable] prevent autofix from breaking code when removing await (#12716)
  • eslint-plugin: [no-unnecessary-parameter-property-assignment] account for parameter reassignment (#12880)
  • eslint-plugin: [unbound-method] treat Intl.Collator.prototype.compare as spec-bound (#12845)
  • eslint-plugin: [no-unnecessary-condition] handle union-keyed index access on the left-hand side of nullish assignment (#12747)
  • eslint-plugin: [no-useless-default-assignment] convert the fixer to a suggestion fixer (#12826)
  • eslint-plugin: [no-misused-promises] handle multiple Promise constituents (#12904)
  • rule-tester: test the final autofix output instead of the first pass (#12867)
  • scope-manager: merge implicit global definitions (#12809)
  • type-utils: match package specifiers on whole path components (#12838)
  • typescript-estree: resolve symlinked paths when matching files to projects (#12725)
  • typescript-estree: add missing < token opening type arguments (#12821)
  • typescript-estree: require string literal import attribute values (#12894)
  • website: prevent playground from breaking down after opening link with the .js file type (#12777)

❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.70.0

Choose a tag to compare

@JamesHenry JamesHenry released this 07 Sep 17:06

8.70.0 (2026-09-07)

🚀 Features

  • eslint-plugin: [no-generated-empty-object-type] add rule (#12730)
  • website: generate per-page social preview cards (#12734)

🩹 Fixes

  • use stable release of pnpm 12 (#12808)
  • update pnpm to 12.3.4 and dedupe Docusaurus packages (#12829)
  • eslint-plugin: [member-ordering] don't report fields that read fields declared before them (#12729)
  • eslint-plugin: [no-unnecessary-condition] no false positive on RHS of a nested logical expression (#12728)
  • eslint-plugin: [no-deprecated] report deprecated imported values used in object shorthand properties (#12780)
  • project-service: avoid discarded tsserver logs (#12748)
  • typescript-estree: clarify the parserOptions.project error message (#12817)

❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.69.0

Choose a tag to compare

@JamesHenry JamesHenry released this 31 Aug 17:06

8.69.0 (2026-08-31)

🚀 Features

  • eslint-plugin: [no-misused-promises] add flagUnions option for checkConditionals (#12603)

🩹 Fixes

  • eslint-plugin: [no-mixed-enums] use scope analysis instead of type checking for merged namespaces (#12731)
  • eslint-plugin: [unified-signatures] compare type parameters by constraint instead of name (#12741)
  • eslint-plugin: [no-meaningless-void-operator] report void on non-call expressions (#12727)
  • website: respect allowJs playground config (#12744)

❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.68.0

Choose a tag to compare

@JamesHenry JamesHenry released this 24 Aug 17:25

8.68.0 (2026-08-24)

🚀 Features

  • eslint-plugin: [strict-void-return] add fix suggestions (#12086)
  • utils: support ESLint rule meta.languages (#12663)

🩹 Fixes

  • eslint-plugin: [unified-signatures] deduplicate types in report (#12656)
  • eslint-plugin: [return-await] prevent autofix from breaking code in arrow-functions (#12707)
  • eslint-plugin: [unified-signatures] report identical signatures (#12678)
  • eslint-plugin: [no-unnecessary-type-assertion] prevent stack overflow in recursive types (#12711)
  • eslint-plugin: [no-floating-promises] setting ignoreVoid: false results in false negative in ArrowFunctionExpression (#12646)
  • eslint-plugin: [no-empty-object-type] ignore suggestions that result in invalid interfaces and export defaults (#12739)
  • website: playground crashes on extends configs (#12608)
  • website: account for thanks.dev and out-of-band donors in sponsors list (#12735)

❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.67.0

Choose a tag to compare

@JamesHenry JamesHenry released this 10 Aug 17:18

8.67.0 (2026-08-10)

🚀 Features

  • typescript-eslint: export basic globs for using tseslint (#12105)

❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.66.0

Choose a tag to compare

@JamesHenry JamesHenry released this 03 Aug 17:34

8.66.0 (2026-08-03)

🚀 Features

  • typescript-estree: handle import.defer() as ImportExpression (#12609)

🩹 Fixes

  • eslint-plugin: [no-unnecessary-type-conversion] ignore shadowed built-ins (#12590)
  • eslint-plugin: [prefer-nullish-coalescing] handle shadowed Boolean calls (#12591)
  • eslint-plugin: [no-useless-default-assignment] don't report defaults used by other overloads (#12607)
  • eslint-plugin: [no-unnecessary-type-parameters] check MappedType key remapping (#12588)
  • eslint-plugin: [class-literal-property-style] preserve type annotations and don't drop decorators (#12617)
  • website: list onUnsupportedTypeScriptVersion in parser options (#12585)

❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.65.0

Choose a tag to compare

@JamesHenry JamesHenry released this 20 Jul 17:38

8.65.0 (2026-07-20)

🚀 Features

  • add warning when TS 7 is detected (#12529)
  • eslint-plugin: [no-restricted-imports] deprecate extension rule (#12527, #19562, #11889)
  • eslint-plugin: [no-shadow] specialized error on enum declaration and member shadowing (#12578)
  • parser: add onUnsupportedTypeScriptVersion option to error on unsupported TypeScript versions (#12465)
  • typescript-estree: throw for invalid import defer syntax (#12552)

🩹 Fixes

  • eslint-plugin: [prefer-string-starts-ends-with] handle escaped $ ending regex literals (#12515)
  • eslint-plugin: [unbound-method] report unbound methods accessed via member expression on union types (#12448)
  • eslint-plugin: [no-unnecessary-parameter-property-assignment] don't flag computed assignments with a variable key (#12568)

❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.