All posts
TypeScriptJuly 18, 20268 min read

TypeScript 7 is GA: should your SaaS or React team migrate to the Go-native compiler now?

TypeScript 7.0 replaces the self-hosted compiler with a Go-native port that's up to 10x faster. Here's what actually breaks, who should migrate now, and how Fepiq plans upgrades for production SaaS and React codebases.

F
Fepiq Team
Fepiq

On July 8, 2026, Microsoft shipped TypeScript 7.0 as generally available under the standard `latest` tag on npm. The headline isn't a new syntax feature — it's the engine under the hood. The entire compiler and language service, self-hosted in TypeScript since 2012, has been ported to Go. Microsoft's own benchmarks put the gain at roughly 8x to 12x on type-checking across five real-world codebases, with VS Code's own build going from about 126 seconds to under 11 seconds.

If you run a SaaS product, an internal tooling suite, or a React storefront built on TypeScript, that number is not academic. Every `tsc --noEmit` in CI, every editor tooltip, every pre-commit type-check is now a candidate to get dramatically faster. But TypeScript 7 also changes defaults and drops legacy options outright, and half the ecosystem's tooling — typescript-eslint, ts-morph, Vue and Svelte's template checkers — isn't fully compatible yet. This post lays out what changed, who should move now, and the migration path we use on client codebases.

What actually shipped in TypeScript 7

This is a port, not a rewrite of behaviour — Microsoft has been explicit that type-checking semantics are meant to stay identical to the TypeScript 5.x/6.x compiler, just implemented in Go instead of self-hosted TypeScript. The project (known during development as "tsgo" or "Corsa") had been running for roughly a year before the 7.0 release candidate landed on June 18, followed by GA three weeks later. Installation is unchanged: `npm install -D typescript` now pulls the Go-native compiler by default.

MetricTypeScript 6.x (self-hosted)TypeScript 7.0 (Go-native)
VS Code full build~125.7 seconds~10.6 seconds
Typical type-check speedupbaseline8x – 12x reported
Memory usagebaseline6% – 26% lower
Compiler API stabilitystablenot yet stable (lands in 7.1, ~Oct 2026)

What breaks: the defaults and options you need to check

The speed gain is real, but 7.0 is not a drop-in upgrade for every project. A handful of long-deprecated options now hard-error instead of silently no-opping, and several defaults changed in ways that matter for monorepos and older `tsconfig.json` files.

  • `moduleResolution: "node10"` (the old "node") and `"classic"` are removed — switch to `"bundler"` for apps built with Vite, esbuild, or webpack, or `"nodenext"` for published Node libraries.
  • `strict` is now `true` by default for new projects — existing strict-false codebases still work, but greenfield configs will surface far more type errors immediately.
  • `types` now defaults to an empty array instead of "all @types packages" — you may need to explicitly list `@types/node`, `@types/react`, etc. in `compilerOptions.types`.
  • `rootDir` now defaults to `./` rather than being inferred — if your config sits above a `src/` folder, add `"rootDir": "./src"` explicitly or builds may pick up unexpected files.
  • `target: "es5"`, `downlevelIteration`, `baseUrl`, and `module: "amd" | "umd" | "systemjs" | "none"` are all removed and now error rather than warn.

The ecosystem gap: what to hold back until TypeScript 7.1

The programmatic compiler API — the part that tools reach into directly rather than just running `tsc` — is not stable in 7.0. Microsoft has said the stable API lands in 7.1, expected roughly three to four months after GA, putting it around October 2026. Until then, anything that imports TypeScript's internals directly is a risk area:

  • typescript-eslint (used by most ESLint configs for TypeScript rules)
  • ts-morph and other codemod / AST-manipulation tooling
  • Vue's `vue-tsc`, Svelte's language tooling, and Angular's template type-checker, all of which lean on the compiler API for template checking
  • Custom webpack transformers — `ts-loader` needs v10+, or switch to `esbuild-loader` for the build step

If your stack depends on any of these, the safe pattern is to run both compiler versions side by side: alias the legacy compiler under a scoped package name for tools that need the old API (`"typescript": "npm:@typescript/typescript6@^6.0.0"`), and add TypeScript 7 separately (`"typescript-7": "npm:typescript@^7.0.0"`) purely for the fast type-check step in CI. This lets you bank the speed win on the hot path without waiting on every dependency to catch up.

Who should migrate now vs. wait for 7.1

Your stackRecommendation
Plain React + TypeScript, no Vue/Svelte, webpack or Vite buildMigrate now — swap `moduleResolution`, fix `rootDir`, run the type-check in CI on 7.0
Laravel + Inertia/React monorepo (typical Fepiq client stack)Migrate the type-check step now; keep typescript-eslint pinned to the 6.x alias until 7.1
Vue, Svelte, or Angular front endWait for 7.1's stable compiler API before switching the primary `typescript` dependency
Heavy use of ts-morph, custom AST codemods, or internal compiler pluginsWait, or run 7.0 only for the fast `--noEmit` check while keeping 6.x for tooling

For most of the SaaS and internal-tool codebases we build and maintain — React front ends on Vite or webpack, talking to a Laravel or Node API, with PostgreSQL or MySQL underneath — the migration is genuinely low-risk. The bulk of the work is updating `tsconfig.json` for the removed options and re-running the type-checker to see what `strict: true` newly surfaces, not rewriting application code.

The performance gains are substantial enough that CI type-checking, which used to be the slowest step in a lot of pipelines, stops being a bottleneck at all. That's not a marginal DX improvement — it changes how often teams are willing to run the full check.
Summary of Microsoft's TypeScript 7.0 GA benchmarks

A practical migration checklist

  1. Audit your `tsconfig.json` for `moduleResolution: "node"` / `"node10"` / `"classic"`, `target: "es5"`, `downlevelIteration`, and legacy `module` values — replace or remove them.
  2. Set `rootDir` explicitly if your config lives above a `src/` directory.
  3. List required `@types/*` packages explicitly in `compilerOptions.types` since the implicit "all @types" default is gone.
  4. Check whether typescript-eslint, ts-morph, or Vue/Svelte/Angular tooling is in your dependency tree — if so, alias the 6.x compiler for those tools and run 7.0 only for the CI type-check.
  5. Run `tsc --noEmit` on TypeScript 7 in a branch and triage the delta from `strict: true` becoming the default — most of it will be genuine latent bugs worth fixing.
  6. Update `ts-loader` to v10+ or move the build step to `esbuild-loader` / your bundler's native TypeScript support if you're still using an older loader.
  7. Once CI is green on 7.0, roll it out to local dev — the editor language-service speedup is often the most noticeable day-to-day win.

Why this matters for Indian SaaS and startup teams

Most engineering teams we work with — whether a Bengaluru SaaS startup or a Mumbai D2C brand's internal admin panel — run lean. CI minutes cost real money, and a slow type-check adds friction to every pull request. If a monorepo's type-check drops from four minutes to thirty seconds, that's not just a nicer developer experience; on a typical hosted CI plan it can shave a meaningful chunk off your monthly bill, and it means engineers actually run the full check locally before pushing instead of skipping it under deadline pressure. For a ten-engineer team billing out at even ₹1,25,000 a month in tooling and CI overhead, compounding minutes saved per build adds up across a quarter.

FAQ

Does TypeScript 7 change how my code behaves at runtime?

No. TypeScript 7 is a compiler port aimed at type-checking speed and identical semantics to 6.x — it doesn't change emitted JavaScript behaviour. The risk is entirely in configuration (removed options, new defaults) and in tooling that depends on the compiler's internal API, not in your application logic.

Can I run TypeScript 6 and 7 in the same project?

Yes, and for teams with typescript-eslint, ts-morph, or Vue/Svelte tooling this is the recommended interim setup: alias the 6.x package for tools needing the old compiler API, and install 7.0 under a separate name for the actual type-check step in CI.

Is it worth migrating a Laravel + Inertia + React app now?

For most Laravel/Inertia/React stacks, yes — the front-end TypeScript layer is usually independent enough from server-side PHP that the migration is confined to `tsconfig.json`, the build tool config, and your CI pipeline. We'd still recommend pinning typescript-eslint's compiler dependency until 7.1 ships a stable API.

What should I do if I'm not on TypeScript at all yet?

If you're maintaining a large untyped JavaScript codebase, TypeScript 7's speed profile makes this a good moment to start — the type-checking overhead that used to be cited against adopting TypeScript in CI-constrained environments is now a fraction of what it was.

Planning a TypeScript, React, or Laravel upgrade and want a second opinion on the migration path? Fepiq audits SaaS and web app codebases and plans upgrades that don't disrupt your release schedule.

Talk to Fepiq about your stack

Get new posts in your inbox

Occasional, no-fluff notes on shipping modern software — startups, automation, Laravel, Shopify and more. No spam, unsubscribe anytime.

Keep reading

Related posts

All posts

Let's build something

Ready to ship your next product with Fepiq?

Book a free discovery call. We'll listen, ask sharp questions, and send you a proposal within 3 business days.