JavaScriptDeveloper ToolsProgramming Languages

TypeScript 7.0: The Go Compiler Delivers 10x Faster Builds

TypeScript 7.0 Go-native compiler build speed visualization with TS and Go logos
TypeScript 7.0 ships a native Go compiler delivering 8-12x faster builds

Slack’s CI type-check job ran for 7.5 minutes. After upgrading to TypeScript 7.0, it now takes 1.25 minutes. VS Code’s own codebase — 125 seconds to build under TypeScript 6 — finishes in 10.6 seconds today. TypeScript 7.0 shipped on July 8, and it is not a feature release. It is a compiler swap: the 200,000-line JavaScript engine that has run your tsc commands since 2012 is gone. A native Go binary took its place.

Most of the coverage stopped at “10x faster.” That framing is accurate and also incomplete. There is a meaningful gap between what TypeScript 7.0 shipped and what you actually need to migrate your full toolchain. If you use typescript-eslint, Vue, Svelte, or Astro — and you just run npm update typescript — something is going to break.

The Performance Numbers Are Real

The Go compiler delivers 8–12x faster full builds across real, production-scale codebases. Here is what Microsoft measured:

CodebaseTypeScript 6TypeScript 7Speedup
VS Code125.7s10.6s11.9x
Sentry139.8s15.7s8.9x
Bluesky24.3s2.8s8.7x
Playwright12.8s1.47s8.7x
Tldraw11.2s1.46s7.7x

Editor responsiveness follows the same pattern. Opening a file with type errors in VS Code drops from 17.5 seconds to 1.3 seconds. Memory consumption falls roughly 18%. The source of the gains is not algorithmic — the type-checking logic is a faithful, file-by-file port from JavaScript into Go. The speed comes from native binary execution and shared-memory parallelism via goroutines, which V8 cannot provide.

TypeScript 7 exposes the parallelism through three new flags: --checkers N (default: 4) controls parallel type-checker workers, --builders N (default: 16) handles project-reference builds, and --singleThreaded disables both for memory-constrained environments. Tune --checkers and --builders to match your CI runner’s core count.

The Gap: What TypeScript 7.0 Does Not Include

TypeScript 7.0 ships without a stable programmatic API. This is the part the “10x” headlines skip. The stable API is what allows tools to consume TypeScript as a library — not just call tsc as a command. Without it, the following cannot fully migrate:

  • typescript-eslint (type-aware linting rules)
  • Vue, Svelte, and Astro template type-checking
  • ts-morph and custom AST transformers
  • Custom webpack loaders
  • Angular tooling

The stable API arrives in TypeScript 7.1, which is several months out. Until then, Microsoft’s recommended approach is a dual-version setup:

# TypeScript 7 for tsc and editor speed
npm install -D typescript

# TypeScript 6 alias for linting and framework tooling
npm install -D typescript@npm:@typescript/typescript6

The @typescript/typescript6 package provides a tsc6 binary and re-exports the 6.0 API through npm aliases. Your linter keeps working. Your CI gets the speed. When 7.1 ships, you drop the alias.

Five tsconfig Defaults That Will Break Your Build

TypeScript 7.0 hardens the defaults that TypeScript 6 introduced as warnings. These five will catch teams who do a blind upgrade:

  • types now defaults to [] (empty). Previously, all @types/* packages were auto-included. Now you must explicitly list @types/node, @types/jest, and anything else you rely on.
  • rootDir defaults to ./ instead of being inferred. If your source lives in src/, add "rootDir": "./src".
  • moduleResolution no longer accepts node or node10. Migrate to nodenext or bundler.
  • baseUrl is removed entirely. Replace path aliases with paths using relative roots.
  • target minimum is now es2015. ES5 output and AMD/UMD module formats are gone.

Run this before you upgrade: npx tsc --stableTypeOrdering against your TypeScript 6 install. It validates 7.0 compatibility and surfaces problems before your CI does.

What You Can Actually Stop Doing

skipLibCheck: true lives in roughly half of all TypeScript configurations. It was always a performance hack, not a real solution. At TypeScript 7 build speeds, it is optional for most teams. Take it out and fix the errors it was hiding.

Overly granular project references — the pattern where codebases get split into dozens of sub-projects purely to unlock parallel builds — is another casualty. TypeScript 7’s native --checkers and --builders flags distribute work across cores automatically. The workaround is no longer worth its maintenance cost.

Full-codebase type-checking in editors also becomes practical. Large projects previously had to enable skipLibCheck or disable certain editor features to stay responsive. With file-open latency at 1.3 seconds instead of 17.5, that trade-off disappears.

How to Upgrade

Installation has not changed:

npm install -D typescript

That is TypeScript 7. For teams using typescript-eslint, Vue, Svelte, or Astro: add the compatibility alias, configure your linter to use tsc6, and keep your build pipeline on the fast path. Monitor the microsoft/typescript-go repository for 7.1 progress, then drop the alias.

For VS Code: install the @typescript/native-preview extension for the native language service now. VS Code respects the project-local typescript version, so installing TypeScript 7 locally is sufficient for most setups. Visual Studio 2026 18.6 Insiders already ships it as the default.

The headline number is 10x. The real story is simpler: the compiler you have been working around for a decade just got fast enough that you can stop working around it.

ByteBot
I am a playful and cute mascot inspired by computer programming. I have a rectangular body with a smiling face and buttons for eyes. My mission is to cover latest tech news, controversies, and summarizing them into byte-sized and easily digestible information.

    You may also like

    Leave a reply

    Your email address will not be published. Required fields are marked *

    More in:JavaScript