The 10x-faster, Go-native TypeScript compiler is no longer a preview package with a weird binary name. As of the 7.0 Release Candidate (June 18, 2026), it installs as plain typescript from npm and runs as plain tsc — and Microsoft says stable lands within the month. Here is a step-by-step playbook for moving a real project onto it this week.
If you want the backstory on the Go port first, Anders Hejlsberg's Build session is the best hour on the subject:
1. Get clean on TypeScript 6.0 first
TypeScript 7.0 hard-adopts 6.0's defaults and turns its deprecations into hard errors. If you're still on 5.x, upgrade to 6.0 before touching 7.0 — it's where you'll do the actual migration work. The big removals to fix now:
target: es5anddownlevelIterationare gone.baseUrlis gone — rewritepathsrelative to the project root.moduleResolution: node/node10/classicare gone — usenodenextorbundler.module: amd, umd, systemjs, noneare gone — useesnextorpreserve.
A codebase that compiles cleanly on 6.0 (with stableTypeOrdering on) should compile identically on 7.0.
2. Install the RC
npm install -D typescript@rc
npx tsc --version
# Version 7.0.1-rcThat's it. Unlike the beta, there's no @typescript/native-preview package or tsgo binary to juggle — the RC ships as the typescript package with a tsc entry point. Run your existing build untouched and compare output.
3. Fix the two "surprising" config defaults
Two 6.0-era default changes bite most projects on first contact:
rootDir now defaults to ./. If your tsconfig.json sits above src, set it explicitly to keep your output structure:
{
"compilerOptions": {
"rootDir": "./src"
},
"include": ["./src"]
}types now defaults to [] instead of every @types package in scope. List what you actually rely on (e.g. "types": ["node", "jest"]), or restore the old behavior with "types": ["*"].
4. Keep 6.0 around for tooling that needs the old API
The stable programmatic API doesn't arrive until TypeScript 7.1, so tools like typescript-eslint that import from typescript may still need 6.0. Microsoft ships a compatibility package for exactly this — alias it and keep the RC alongside:
{
"devDependencies": {
"typescript": "npm:@typescript/typescript6@^6.0.0",
"typescript-7": "npm:typescript@rc"
}
}You get a tsc6 binary and the 6.0 API for tooling, while npx tsc runs the fast 7.0 compiler.
5. Tune the parallelism flags
7.0 parses, type-checks, and emits in parallel. Three new flags control it:
--checkers— number of type-checker workers, default 4. Raise it on big machines with many cores; lower it on skinny CI runners. More checkers means more memory.--builders— parallel project-reference builders, great for monorepos. Note it multiplies with--checkers:--checkers 4 --builders 4can mean 16 concurrent checkers.--singleThreaded— one thread for everything; useful for debugging or honest 6-vs-7 benchmarks.
Pin
--checkersto a fixed number across your team and CI. Varying it can, in rare cases, surface order-dependent results.
6. Switch your editor over
Install the TypeScript Native Preview extension in VS Code to get the same speedup in your editor — it's LSP-based, so it works in most modern editors too. Feature gaps from the beta (semantic highlighting, sort imports, remove unused imports) are now closed, and Microsoft reports failing language-server commands are down over 20x versus 6.0. The rebuilt --watch mode, ported from Parcel's file watcher, also cuts resource usage noticeably on large node_modules trees.
7. Know the sharp edges before you ship
Three things to check before flipping CI to the RC:
- JSDoc-typed JavaScript is stricter:
@enumand Closure-style function syntax aren't specially recognized anymore, and a bare?is no longer a type. Mostly-JS codebases need a real audit. - Template literal types now split strings by Unicode code point, so
HeadTail<"😀abc">infers["😀", "abc"]instead of surrogate halves — a breaking change if you do type-level string length tricks. - No stable API until 7.1 — if you build tooling on the compiler API, you're on 6.0 (via the alias above) for a while yet.
If you hit a regression, file it on the microsoft/typescript-go tracker now — this is the window where behavior gets finalized.