
Microsoft has rewritten the TypeScript compiler in Go — and the benchmarks aren’t marketing. The VS Code codebase (1.5 million lines of TypeScript) drops from 78 seconds to 7.5 seconds. Sentry goes from 133 seconds to 16. TypeScript 7.0 Beta landed April 21; stable is weeks away. If you ship TypeScript, you need to know what breaks before it lands on your next npm update.
What Is Project Corsa?
Project Corsa is Microsoft’s complete rewrite of the TypeScript compiler from JavaScript into Go. Not a wrapper, not an optimization pass — the parser, binder, type-checker, emitter, and language service are all new Go code. The binary is called tsgo, the repo is microsoft/typescript-go, and it will ship as the official tsc replacement when TypeScript 7.0 goes stable.
Why Go? Microsoft chose it for two reasons: native code speed (no V8 overhead) and shared-memory parallelism. The compiler now parses, type-checks, and emits across files in parallel automatically. That’s where the 10x comes from — it’s not just “Go is fast,” it’s that the architecture was redesigned to scale with your codebase size.
The Numbers
Microsoft published benchmarks on real codebases:
- VS Code (1.5M lines): 78 seconds → 7.5 seconds (~10x)
- Sentry: 133 seconds → 16 seconds (~8x)
These aren’t toy repos. If your project is smaller, expect similar percentage gains. The parallelism scales — larger codebases benefit proportionally more because there’s more to parallelize.
What Breaks in TypeScript 7
TypeScript 6.0 (March 2026) was the bridge release — it flagged every breaking change as a deprecation warning. TypeScript 7 makes them hard errors. Here’s what you need to fix before upgrading:
1. strict Is Now Default
If your tsconfig.json doesn’t have "strict": true explicitly set, TypeScript 7 enables it for you. That means noImplicitAny, strictNullChecks, strictFunctionTypes, and the rest. Codebases that skipped strict mode are about to get a wall of errors.
2. ES5 Target Is Gone
target: "es5" is removed. The minimum target is now ES2015. If you’re still transpiling to ES5 for legacy browser support, you’ll need Babel or a separate transpiler pipeline. In 2026, this is rare — but it’s a hard break if you’re in that minority.
3. Legacy Module Formats Removed
module: "amd", "umd", "systemjs", and "none" are gone. The supported output formats are ESNext, ES2022, NodeNext, and CommonJS. Also gone: moduleResolution: "node10" — replace it with "bundler" or "nodenext".
4. The types Option Changed
Previously, omitting types in tsconfig auto-included all @types/* packages. Now it defaults to an empty array. If you rely on ambient type declarations from packages you didn’t explicitly list, you’ll need to add them to types or configure typeRoots.
The Compiler API Is Broken — This Matters More Than You Think
The TypeScript Compiler API (the Strada API, what import * as ts from 'typescript' gives you) does not exist in tsgo. A new API is being built for TypeScript 7.1, not 7.0. Tools that wrap the Compiler API break completely:
- ts-morph: fully broken — every call maps to the Strada API
- tsup with
--dts: broken — declaration generation calls the API - ts-jest: broken if aliased to tsgo; fine with side-by-side setup
- typescript-eslint: not compatible with tsgo
If you maintain a TypeScript plugin, transformer, or any tooling that imports from typescript directly, do not upgrade to tsgo as your primary compiler until TypeScript 7.1. Pin typescript to v6 and install @typescript/native-preview as a separate binary to get the build speed wins without breaking your toolchain.
Tool Compatibility at a Glance
- Vite 6+: works natively with tsgo
- Webpack: needs ts-loader v10+ or esbuild-loader
- tsup (no
--dts): works (esbuild underneath) - typescript-eslint: use oxlint-tsgolint instead — 59/61 rules covered, 20–40x faster linting
- VS Code: tsgo already ships in 2026 Insiders builds
- JetBrains IDEs: support tracked at WEB-72048, not yet available
How to Migrate: 5 Steps
Step 1: Upgrade to TypeScript 6 first. TS6 surfaces every breaking change as a warning. Fix those before touching TS7.
Step 2: Install tsgo alongside your existing setup:
npm install --save-dev @typescript/native-preview
This installs the tsgo binary. Your existing typescript package stays at v6 for all tools that depend on it.
Step 3: Run both compilers in CI until outputs match:
tsc --noEmit && tsgo --noEmit
Step 4: Switch your typecheck and build scripts to tsgo once outputs match and CI is green.
Step 5 (tool authors): Pin typescript to v6 explicitly. Watch the TypeScript 7.1 roadmap for Compiler API stability before migrating tool code. The TypeScript team is taking feedback on the new API design — now is the time to engage on the typescript-go repo.
The Bottom Line
TypeScript 7 is not a version bump — it’s a platform shift. The Go rewrite unlocks performance that JavaScript fundamentally can’t match, and it sets the foundation for improvements (like WebAssembly distribution and multi-language IDE protocols) that weren’t possible before.
For most application developers, migration is straightforward: fix your tsconfig, upgrade to TS6 first, then install @typescript/native-preview. For tool authors, the honest advice is to wait for 7.1. Stable TypeScript 7.0 is weeks away. Don’t be the team that gets surprised by it.













