Microsoft announced Project Corsa on March 11, 2025 through Anders Hejlsberg, TypeScript’s creator. The project became generally available as TypeScript 7.0 on July 8, 2026. Its compiler is written in Go and built ahead of time as a native binary. The previous compiler was written in TypeScript and ran on Node. The language syntax and type system remain familiar, including structural typing behavior.
npm install -D @typescript/native-preview
npx tsgo --project ./src/tsconfig.jsonThe performance gains are largest on cold, full checks. Microsoft tested the roughly 1.5 million-line VS Code codebase at about 77 seconds with the old compiler and 7.5 seconds with the native one. Playwright and TypeORM showed similar improvements. Slack reported a type-check step falling from around seven and a half minutes to slightly more than one minute. An author also reports a monorepo check that previously took about a minute completing before they looked back at the screen.
The preview package installs a binary named tsgo, which accepts commands similar to tsc. Microsoft plans to rename it to tsc and include it in the regular typescript package later. The headline speedup mainly applies to large, cold checks and CI workloads. Incremental editor checks already process small changes efficiently, so their improvement is smaller. Native startup, parallel type checking across CPU cores and tighter memory handling account for much of the gain.
TypeScript 7.0 does not provide a stable version of the programmatic compiler API. That affects tools such as type-aware ESLint rules, ts-morph, ts-jest, ts-patch, custom AST transformers and the type-checking layers used by Vue, Svelte, Astro and Angular templates. Microsoft expects the replacement API in TypeScript 7.1, a few months after 7.0. Projects that call the compiler as a library can therefore break during a direct upgrade.
A practical migration keeps TypeScript 6.x for library-dependent tooling and uses tsgo for builds, CI checks and editor integrations. The native compiler also rejects some older JSDoc patterns. Values cannot serve as types in the same way, @enum is unsupported, and several Closure-era constructs now produce errors.
The choice of Go reflects the project’s goal. The team ported the existing compiler algorithms and behavior, including details that projects rely on. Go’s garbage collection and memory controls fit the compiler’s many cyclic data structures. Rust could offer strong performance, but its ownership model would make a close port more difficult. C# also raised questions about native, cross-platform deployment and its object-oriented fit for this codebase. Go produces heavier WebAssembly output than Rust, which may matter for browser-based editors and playgrounds. The recommendation is to adopt tsgo for measurable speed gains while keeping the older compiler until the API and surrounding tools catch up.




Comments
No comments yet — be the first.
Open the discussion
No account or password needed — just enter your e-mail and we’ll send you a one-time sign-in link. First time here? You’re set up automatically.
Your rating will be applied automatically after you sign in.
Check your inbox
We’ve sent a sign-in link to …. Open it on this device — this tab will sign you in automatically.
Nothing arrived? Check your spam folder — and mark the mail as "Not spam" so it lands in your inbox next time.