What is actually held
Not the TypeScript 7 compiler — the build, typecheck and watch already use it, installed as the alias typescript-7.
What is held is moving the package named typescript from 6.0.3 to 7. That package is the copy typescript-eslint loads, and it throws on TS >= 7:
Error: typescript-eslint does not support TS 7.0.
Bumping it would disable linting entirely while changing nothing about the build. typescript-eslint declares typescript: ">=4.8.4 <6.1.0", so 6.0.3 is the newest it accepts.
Upstream tracking issue: typescript-eslint/typescript-eslint#10940 (open as of 2026-09-14, against typescript-eslint 8.70.0).
Why linting is worth keeping
The type-aware rules found two genuine bugs on the pass that introduced them:
- an
async function handed to process.once, so a failed Neo4j driver close rejected with nobody listening
- a rethrow of
lastError, typed unknown, so a non-Error rejection reached callers as something they could not read .message off
Current arrangement
This is the side-by-side setup the TypeScript team documents. npm run check and CI typecheck with both compilers, so a disagreement between them fails a check rather than showing up as lint and build quietly diverging.
Scripts name the compiler by path rather than calling tsc, because both packages ship that binary and node_modules/.bin/tsc resolves to whichever npm linked last — observed as 7.0.2 after an incremental install and 6.0.3 after a clean npm ci on the same tree.
How to check whether it is time
npm info typescript-eslint version
gh api repos/typescript-eslint/typescript-eslint/issues/10940 -q .state
Then, on a branch:
npm uninstall typescript-7
npm install -D typescript@^7
# point build/typecheck/dev back at plain `tsc` in package.json
npm run check
When closing this
What is actually held
Not the TypeScript 7 compiler — the build, typecheck and watch already use it, installed as the alias
typescript-7.What is held is moving the package named
typescriptfrom 6.0.3 to 7. That package is the copy typescript-eslint loads, and it throws on TS >= 7:Bumping it would disable linting entirely while changing nothing about the build. typescript-eslint declares
typescript: ">=4.8.4 <6.1.0", so 6.0.3 is the newest it accepts.Upstream tracking issue: typescript-eslint/typescript-eslint#10940 (open as of 2026-09-14, against typescript-eslint 8.70.0).
Why linting is worth keeping
The type-aware rules found two genuine bugs on the pass that introduced them:
asyncfunction handed toprocess.once, so a failed Neo4j driver close rejected with nobody listeninglastError, typedunknown, so a non-Errorrejection reached callers as something they could not read.messageoffCurrent arrangement
This is the side-by-side setup the TypeScript team documents.
npm run checkand CI typecheck with both compilers, so a disagreement between them fails a check rather than showing up as lint and build quietly diverging.Scripts name the compiler by path rather than calling
tsc, because both packages ship that binary andnode_modules/.bin/tscresolves to whichever npm linked last — observed as 7.0.2 after an incremental install and 6.0.3 after a cleannpm cion the same tree.How to check whether it is time
Then, on a branch:
npm uninstall typescript-7 npm install -D typescript@^7 # point build/typecheck/dev back at plain `tsc` in package.json npm run checkWhen closing this
typescript-7aliastypescriptto 7build,typecheck,devback attsctypecheck:lint-compiler— there is only one compiler againtypescriptignore rule from.github/dependabot.yml