Microsoft Rewrote TypeScript in Go for 10x Faster Builds
TypeScript's JavaScript-based compiler became its own bottleneck at enterprise scale. Microsoft's solution: abandon JavaScript entirely and rewrite the type-checker in Go, achieving 10x speedups on large codebases. The preview is available today, but ships with memory overhead, incremental build issues, and breaking changes that affect monorepos.

Eighty-nine seconds. That's how long Microsoft's VSCode team waited for TypeScript to type-check their 1.5 million line codebase before every commit. For enterprise teams pushing dozens of builds daily, that wait time compounds into productivity loss.
The problem: TypeScript's adoption created its own performance crisis. The JavaScript-based compiler couldn't scale to the massive codebases its success enabled. Megamorphic object shapes and dynamic property access patterns inherent to JavaScript turned type-checking into a bottleneck at enterprise scale.
Microsoft's solution? Abandon JavaScript entirely.
The 89-Second Problem: When TypeScript Became Its Own Bottleneck
The numbers: VSCode's codebase now type-checks in 8.74 seconds with the Go-based compiler preview—a 10x improvement over the 89-second baseline. For teams running CI/CD pipelines on hundred-thousand-line codebases, that's the difference between deploying six times an hour versus once.
You can test it today through @typescript/native-preview on npm, using the tsgo command-line tool that mirrors tsc behavior. VS Code integration works via the "typescript.experimental.useTsgo" setting, bringing the speedup directly into editor workflows.
Why Microsoft Chose Go Over Rust
Microsoft's reasoning: garbage collection simplifies memory management when juggling complex AST structures, and Go's learning curve matched their team's existing expertise. The language choice matters less than the architectural shift—escaping JavaScript's runtime constraints entirely.
The Real Numbers: 10x Faster, But Not Free
The performance gains ship with tradeoffs. Memory usage increased 20% starting in version 7.0.0-dev.20250724.1. Incremental builds regressed after the 20250805 release, with reported crashes in concurrent scenarios and UTF-8 handling edge cases.
This is preview software with rough edges, not production-ready.
Breaking Changes: baseUrl Removal and Monorepo Pain Points
Adoption blockers exist. TypeScript 7.0 treats the baseUrl configuration option as a hard error, breaking tooling that depends on it—specifically nx monorepos and Storybook configurations. Teams testing the preview hit configuration walls that require non-trivial migration work.
How TypeScript Native Differs From esbuild and SWC
The distinction: esbuild and SWC are fast transpilers that skip full type validation. TypeScript-go is a complete type-checker maintaining exact parity with tsc, not just syntax transformation. You still need both tools in modern pipelines—transpilers for speed, type-checkers for correctness.
Who Benefits Most (and Who Should Wait)
Teams with 100,000+ line codebases suffering CI/CD bottlenecks get immediate value. Smaller projects won't notice meaningful differences. Monorepo users need to audit baseUrl usage before considering migration. Engineering managers should benchmark their specific codebase against the preview rather than trusting generic speedup claims.
The preview signals Microsoft's commitment to solving a problem they created—but early adopters will discover whether the tradeoffs work at production scale.
microsoft/typescript-go
Staging repo for development of native port of TypeScript