
Should your team upgrade to TypeScript 7.0 yet? A practical migration checklist
TypeScript 7.0 shipped with a full rewrite of the compiler in Go, and the headline numbers are real — but whether your team should upgrade this week depends almost entirely on your toolchain, not on how fast the compiler got. Here's the practical version of that decision.
What actually changed under the hood
The new native compiler (internally called tsgo) keeps the original compiler's structure and logic, just ported to Go instead of JavaScript. Microsoft's own numbers put build-speed gains at 7.7x to 11.9x across their test projects — VS Code's own compile dropped from 125.7 seconds to 10.6 seconds — with memory usage down 6% to 26% depending on the codebase.
Two smaller changes matter more for day-to-day migration work. target: es5 is gone — not deprecated, gone — and now throws a hard error with no fallback. And the types compiler option now defaults to an empty array instead of implicitly pulling in every @types package in your project. If something in your code relies on ambient globals from a types package you never import directly, it'll quietly stop resolving until you list it explicitly, e.g. "types": ["node"].
The real blocker: no programmatic API until 7.1
This is the part that actually decides whether you can upgrade today. Tools like typescript-eslint, @vue/compiler-sfc, @angular/compiler-cli, and svelte-preprocess don't just call the TypeScript compiler — they hook into its internals (ts.createProgram, ts.transform, ts.factory) to parse and rewrite AST nodes. TypeScript 7.0 shipped without that Programmatic Compiler API entirely — it wasn't trimmed down, it just isn't there yet — so any tool built on top of TypeScript's internals, not just "TypeScript the language," is locked out until it comes back. Framework maintainers have responded by pinning strict peer-dependency ranges rather than risk a broken build. Microsoft has said 7.1 is expected to restore a stable version of that API.
A compatibility checklist before you touch tsconfig
Check whether your team relies on
typescript-eslint, Vue SFC compilation, Angular's compiler-cli, or Svelte preprocessing — all currently blocked pending the 7.1 API.Grep every
tsconfig.jsonin the repo fortarget: es5or lower — it's now a hard build error, not a warning.Look for code that depends on ambient
@typesglobals from a package you never import directly — it'll need to be added explicitly totypesnow.Check
ts-jest,ts-morph, or anything else withtypescriptas a peer dependency for a version range that actually covers 7.0.Confirm your editor's TypeScript language-service plugin supports 7.0 — some IDE integrations lag a version behind.
Benchmark your own build times before you commit to it
The published numbers are from Microsoft's own test matrix — worth confirming on your actual codebase before treating them as a given. Node 26.9 introduced a node:bench module, but it still sits behind an --experimental-bench flag, so for now a plain timed build is the more reliable measure: record your current build time (time npx tsc --noEmit, or your actual build command), then re-run it after upgrading in a branch — twice each, so a cold cache doesn't skew the comparison.
Recommended rollout path for a small team
Pin your current TypeScript version in
package.jsonand leavemainalone for now.Test the upgrade in an isolated branch, run the checklist above, and see what actually breaks rather than guessing.
If nothing in your toolchain touches the Programmatic Compiler API, the upgrade is likely safe to merge once your own benchmark confirms the win.
If you do lean on ESLint through
typescript-eslint, Vue, Angular, or Svelte tooling, it's simpler to hold off and revisit once 7.1 ships the API — working around it with an older TypeScript pinned just for those tools isn't worth the complexity for a small team.
This is the exact checklist I'll be running before touching TypeScript in a shared repo — and probably sitting on 6.x a little longer for anything that leans on typescript-eslint.
Sources: Announcing TypeScript 7.0, Why Angular, Vue, and ESLint can't upgrade yet, Node.js 26.9.0 release notes.
