TypeScript 7: The Native Go Compiler That Makes Your Builds 10x Faster
Microsoft ships TypeScript 7 with a native Go compiler delivering 8-12x faster builds, reducing VS Code compilation from 125s to 10s with up to 26% less memory. A deep dive into the architecture, real-world benchmarks, and migration guide.
On July 8, 2026, the TypeScript team at Microsoft shipped TypeScript 7.0. This is not a routine feature release — it is the most significant infrastructure change in TypeScript's history: the compiler core has been completely migrated from TypeScript-on-JavaScript to a native Go implementation.
Codenamed Project Corsa, TypeScript 7 faithfully reproduces the original compiler structure in Go without altering type-checking logic, delivering 8x to 12x build speed improvements and up to 26% memory reduction.
Why Go?
For 14 years, the TypeScript compiler ran as TypeScript-compiled-to-JavaScript on Node.js, executing within V8. This architecture hit three hard ceilings:
- Single-threaded bottleneck: V8's event loop cannot parallelize type-checking across files
- JIT warmup penalty: V8's JIT needs runtime to reach peak performance, but compiler builds finish before optimal
- GC thrashing: Large codebases generate massive temporary objects during type-checking, with GC pauses directly impacting throughput
Go's goroutine model, native compilation, and shared-memory multithreading solve all three.
The team chose Go over Rust or Zig for pragmatic reasons: Go is battle-tested in toolchain applications (Docker, Kubernetes, Terraform), compiles fast, deploys simply, and its restrained syntax is ideal for a faithful port rather than a rewrite.
Benchmarks: From Waiting to Instant
Microsoft published comparisons across well-known open-source projects. Default configuration (4 type-checker workers):
| Project | TypeScript 6 | TypeScript 7 | Speedup |
|---|---|---|---|
| VS Code | 125.7s | 10.6s | 11.9x |
| Sentry | 139.8s | 15.7s | 8.9x |
| Bluesky | 24.3s | 2.8s | 8.7x |
| Playwright | 12.8s | 1.47s | 8.7x |
| tldraw | 11.2s | 1.46s | 7.7x |
With --checkers 8, VS Code drops further to 7.51 seconds — an astonishing 16.7x speedup.
Memory also improved:
| Project | TS 6 | TS 7 | Reduction |
|---|---|---|---|
| VS Code | 5.2GB | 4.2GB | -18% |
| Bluesky | 1.8GB | 1.3GB | -26% |
| tldraw | 0.6GB | 0.5GB | -15% |
Editor responsiveness is where the impact is most visceral. Opening an error file in the VS Code codebase: TypeScript 6 took 17.5 seconds to display the first diagnostic. TypeScript 7 takes under 1.3 seconds — over 13x faster.
Industry Feedback: Beyond the Numbers
- Slack: 40% reduction in merge queue time. CI type-checking went from 7.5 minutes to 1.25 minutes. Engineers described the previous editor language service as "almost unusable" — TypeScript 7 made local type-checking feasible again.
- Microsoft News Services: Saved 400 hours per month in CI wait time.
- Canva: First error display dropped from 58 seconds to 4.8 seconds.
- Vanta: Up to 9x faster builds on their largest project.
- PowerBI engineers: Called the TypeScript 7 editor experience "life-saving."
Parallelization Architecture: --checkers and --builders
TypeScript 7 introduces two new flags:
--checkers: Parallel Type-Checking
Defaults to 4 workers. Each worker maintains its own type view and processes assigned files in parallel. Results are deterministic given identical input files.
- Increase for more CPU cores — faster builds at the cost of memory
- Decrease to
--checkers 1in CI environments to avoid overhead - Fix the value across build environments to prevent order-dependent results
--builders: Parallel Project Reference Building
Works with --build to control concurrent project reference builds. Critical for monorepos.
Note the multiplicative effect: --checkers 4 --builders 4 means up to 16 concurrent type-checkers, which may be excessive.
A new --singleThreaded flag forces serial execution for debugging or constrained environments.
Rewritten --watch Mode
TypeScript 7 ships a rebuilt file watcher, porting Parcel's @parcel/watcher from C++ to Go. The port uses minimal assembly shims, passes the original test suite, and eliminates the C++ toolchain dependency. Pure-polling solutions proved too expensive at scale; the native watcher solves this definitively.
Coexisting with TypeScript 6
TypeScript 7.0 ships without a programmatic API. Tools like typescript-eslint still need the TypeScript 6 API. The API returns in 7.1. Until then, side-by-side installation:
{
"devDependencies": {
"@typescript/native": "npm:typescript@^7.0.2",
"typescript": "npm:@typescript/typescript6@^6.0.2"
}
}
npx tsc uses TypeScript 7 by default, while tools depending on the typescript package API use 6.0. The @typescript/typescript6 compatibility package provides a tsc6 binary and the full 6.0 API.
Breaking Changes Inherited from 6.0
TypeScript 7.0 is fully compatible with 6.0, but inherits its defaults and deprecations:
strictdefaults totruemoduledefaults toesnexttarget: es5anddownlevelIterationremovedmoduleResolution: node/node10/classicremoved — usenodenextorbundlerbaseUrlremoved —pathsis now relative to project rootrootDirdefaults to./— inner source directories must be explicittypesdefaults to[]— list global declaration dependencies explicitly
Vue / Svelte / Astro Users
Due to the missing API in 7.0, full editor support for Vue, Svelte, Astro, and MDX awaits 7.1. These frameworks can continue using TypeScript 6 via the side-by-side setup for type-checking while enjoying 7.0's speed elsewhere.
Migration
For most projects, upgrading is a single step:
npm install -D typescript@latest
The prerequisite: your project must already compile cleanly on TypeScript 6.0. If you are still on 5.x, migrate to 6.0 first to adjust to the new defaults, then move to 7.0.
TypeScript 7 is not a new toy. It is the most profound compiler engineering transformation in 14 years: from V8 to Go, from single-threaded to multi-core parallel, from waiting to instant. For anyone who types tsc every day, this may be the most tangible DX improvement of the year.