Why TypeScript 7 Breaks ESLint, ts-jest, and ts-morph
TypeScript 7's tsgo compiler lacks a stable programmatic API until 7.1, breaking ESLint, ts-jest, and ts-morph. Here's the workaround.
TypeScript 7 ships tsgo, a line-by-line Go port of the compiler (Project Corsa) that preserves the JS-based Strada's type-checking behavior while running roughly 10x faster on real OS threads. It's a port, not a rewrite with a new API surface, so tools like typescript-eslint, ts-jest, and ts-morph that depend on the programmatic API break, since that API isn't stable until 7.1.
In practice, typescript-eslint refuses to install alongside typescript@7 (ERESOLVE), and forcing it through crashes inside typescript-estree (tracked as issue #12518, closed as not planned pending TypeScript's own fix). ts-jest works fine as long as typescript stays on 6.x, but pointing it at native-preview triggers transform failures because it calls internal Strada APIs Corsa doesn't expose yet. ts-morph and custom AST transformers tend to fail silently or produce subtly wrong output instead of crashing outright. Monorepos using project references hit the roughest edge: tsgo drops generic type parameters from JSDoc @typedef/@template declarations, and skipLibCheck doesn't suppress certain parse-level errors; a survey of 15 pipeline tools found 9 calling Strada API functions that no longer exist.
The practical fix is running two compilers side by side: pin typescript to 6.x for typescript-eslint, ts-jest, and ts-morph, and install @typescript/native-preview separately just for fast type-checking via a tsgo --noEmit script in CI. Teams not using typescript-eslint, ts-morph, or custom transformers can move to 7.0 as soon as it's generally available; everyone else should wait for 7.1's stable programmatic API before dropping the dual setup.
This synthesis was produced from its source by AI; there is no human editor or manual review step. How we work