Follow-up to #1044, which moved cli/ and mcp/github-server onto TypeScript 7.0 RC (typescript@rc) but held app/ back on the tsgo + TS 6 split.
Why app/ was held
TypeScript 7.0 only exposes the ./unstable/* programmatic API. typescript-eslint depends on the legacy programmatic API, which Microsoft says lands in TS 7.1 (several months out). Moving app/ to typescript@rc now breaks ESLint with ERR_PACKAGE_PATH_NOT_EXPORTED. So app/ still:
- typechecks via
tsgo (@typescript/native-preview) — already the TS 7 checker, so no type-coverage gap today
- keeps
typescript@^6.0.3 for ESLint (typescript-eslint) and its (unused) tsc emit
What to do when TS 7.1 ships with eslint support
Once typescript-eslint declares support for the TS 7.1 programmatic API:
- In
app/package.json: replace typescript@^6.0.3 with typescript@rc/latest and drop @typescript/native-preview.
- Swap
app/'s typecheck script from tsgo back to tsc (tsc --noEmit -p tsconfig.app.json && tsc --noEmit -p tsconfig.node.json).
- Now that all three packages use
tsc, the typecheck:all umbrella runs a single compiler — consider whether the tsgo/@typescript/native-preview fallback wording in the docs is still needed.
- Verify:
cd app && npm run lint && npm run typecheck, plus the root typecheck:all and the cli/mcp builds.
Docs to update in the same change
The split toolchain is described in ARCHITECTURE.md, CONTRIBUTING.md, CLAUDE.md, and REVIEW.md — collapse those back to a single TS 7 story once app/ folds in.
Signals to watch
typescript-eslint release notes / its SUPPORTED_TYPESCRIPT_VERSIONS range advertising TS 7.x
- TypeScript 7.1 shipping the stable programmatic API (also unblocks ts-morph, custom transformers, etc.)
Follow-up to #1044, which moved
cli/andmcp/github-serveronto TypeScript 7.0 RC (typescript@rc) but heldapp/back on thetsgo+ TS 6 split.Why app/ was held
TypeScript 7.0 only exposes the
./unstable/*programmatic API.typescript-eslintdepends on the legacy programmatic API, which Microsoft says lands in TS 7.1 (several months out). Movingapp/totypescript@rcnow breaks ESLint withERR_PACKAGE_PATH_NOT_EXPORTED. Soapp/still:tsgo(@typescript/native-preview) — already the TS 7 checker, so no type-coverage gap todaytypescript@^6.0.3for ESLint (typescript-eslint) and its (unused)tscemitWhat to do when TS 7.1 ships with eslint support
Once
typescript-eslintdeclares support for the TS 7.1 programmatic API:app/package.json: replacetypescript@^6.0.3withtypescript@rc/latestand drop@typescript/native-preview.app/'stypecheckscript fromtsgoback totsc(tsc --noEmit -p tsconfig.app.json && tsc --noEmit -p tsconfig.node.json).tsc, thetypecheck:allumbrella runs a single compiler — consider whether thetsgo/@typescript/native-previewfallback wording in the docs is still needed.cd app && npm run lint && npm run typecheck, plus the roottypecheck:alland the cli/mcp builds.Docs to update in the same change
The split toolchain is described in
ARCHITECTURE.md,CONTRIBUTING.md,CLAUDE.md, andREVIEW.md— collapse those back to a single TS 7 story onceapp/folds in.Signals to watch
typescript-eslintrelease notes / itsSUPPORTED_TYPESCRIPT_VERSIONSrange advertising TS 7.x