Repository navigation
Releases: typescript-eslint/typescript-eslint
Release list
v8.71.2
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
- Abraham Guo
- Brad Zacher @bradzacher
- Evyatar Daud @StyleShit
- Josh Goldberg
- Vinccool96
- Younsang Na @nayounsang
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.71.1
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
- Diptajoy Mistry @diptomistry
- Evyatar Daud @StyleShit
- Josh Goldberg
- Josh Goldberg ✨
- Medhansh Poojari
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.71.0
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: voidon 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
- Evyatar Daud @StyleShit
- Fatih Çakır @wfatih
- Josh Goldberg
- Josh Goldberg ✨
- Zamiell @Zamiell
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.70.1
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
- Amin @amiin-dev
- Brad Zacher @bradzacher
- Cameron
- Diptajoy Mistry @diptomistry
- Evyatar Daud @StyleShit
- Grit @Grit03
- Hugo @hugop95
- Josh Goldberg ✨
- Michael Naumov @mnaoumov
- Mikhail Baev @baevm
- Om Rawat
- overlookmotel
- Sanath @sansynx
- Shinji
- stoicism @stoicism02
- Vinccool96
- Younsang Na @nayounsang
- 김채영 @cchaeyoung
- 송재욱
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.70.0
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
- Barry @barry166
- Evyatar Daud @StyleShit
- Josh Goldberg
- Josh Goldberg ✨ @JoshuaKGoldberg
- Kirk Waiblinger @kirkwaiblinger
- Ulrich Stark @ulrichstark
- 송재욱
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.69.0
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
- Abdu Alim Arlikhozhaev @Arlikhozhaev
- Evyatar Daud @StyleShit
- Josh Goldberg ✨
- wonbeanie @wonbeanie
- Younsang Na @nayounsang
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.68.0
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: falseresults 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
extendsconfigs (#12608) - website: account for thanks.dev and out-of-band donors in sponsors list (#12735)
❤️ Thank You
- Evyatar Daud @StyleShit
- Hugo @hugop95
- Josh Goldberg ✨
- Niki @phaux
- Thiago Barbosa
- Younsang Na @nayounsang
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.67.0
8.67.0 (2026-08-10)
🚀 Features
- typescript-eslint: export basic globs for using tseslint (#12105)
❤️ Thank You
- Evyatar Daud @StyleShit
- Josh Goldberg ✨
- Kirk Waiblinger @kirkwaiblinger
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.66.0
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
onUnsupportedTypeScriptVersionin parser options (#12585)
❤️ Thank You
- Evyatar Daud @StyleShit
- Kirk Waiblinger @kirkwaiblinger
- Steffen Schroeder
- 송재욱
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.65.0
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
- Evyatar Daud @StyleShit
- Josh Goldberg ✨
- Kirk Waiblinger @kirkwaiblinger
- Serhii Leniv @Serhii-Leniv
- 송재욱
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.