Javascript Tutorials • • 5-8 minutes

TypeScript 7: How to Migrate to the Native Go Compiler Without Breaking Your tsconfig, Lint or CI

Diego Cortés
Diego Cortés
Full Stack Developer & SEO Specialist
Share:
TypeScript 7: How to Migrate to the Native Go Compiler Without Breaking Your tsconfig, Lint or CI
Image generated with AI

You installed TypeScript 7 and the build blew up with tsconfig errors you had never seen. That is no accident: the compiler is rewritten in Go, it is much faster, and it turned the options version 6 only warned about into hard errors. Here is what changed and how to migrate step by step.

What TypeScript 7 Is and Why It Is Not "Just Another Release"

TypeScript 7 brings no new types and no new syntax. What changed is the engine: the compiler and the language service were ported from the historical TypeScript codebase to a native implementation in Go.

The Compiler and Language Service, Ported From TypeScript to Go

The port is the real substance of the project. The compiler (what transpiles and type-checks) and the language service (what feeds your editor) were rewritten on a native base while keeping language behaviour. For you the output JavaScript is the same, but it is produced by a much faster binary.

The Dates: Beta in April, RC in June, General Availability in July 2026

The beta landed on April 21, 2026 and shipped as a preview package under the name tsgo, so the port could be tested without touching the production compiler. The release candidate arrived on June 18 and general availability on July 8, 2026. On npm, the current version of the typescript package is 7.0.2.

Same Types, Same Command, New Engine: What That Means Day to Day

In the final release you do not need a separate binary: the native compiler is invoked with the same tsc as always and reads the same tsconfig. The practical consequence is awkward: npm install -D typescript now installs the new compiler without asking, so plenty of people run into it without planning for it.

The First Thing That Breaks: Your tsconfig Options

TypeScript 6.0 Warned, TypeScript 7 Removes

TypeScript 6.0 was the bridge release: it deprecated a batch of options and changed several defaults. TypeScript 7 deletes those options, and what used to be a warning in 6 is now a hard error that blocks compilation. The compiler's own error message tells you which option no longer exists, so the first pass is cleanup, not debugging.

The Options That Disappear and What Replaces Them

The most quoted case is importsNotUsedAsValues and preserveValueImports: both are gone and their replacement is verbatimModuleSyntax, which unifies control over how imports that only reference types are emitted. The second usual hotspot is baseUrl and how it relates to paths, now resolved differently, plus esModuleInterop when set to false. A healthy rule: remove whatever the compiler flags and do not blindly paste replacements from a blog.

Changed Defaults: strict, types and Why New Errors Appear

TypeScript 6 moved several defaults and version 7 behaves more strictly. The changes you notice most: strict on by default, module defaulting to esnext and types defaulting to an empty list. That last one produces the classic "Cannot find name 'process'": if your tsconfig does not explicitly declare global types, the compiler no longer loads them on its own.

The Second Thing That Breaks: Tools That Use the Compiler as a Library

What the Compiler API Is and Why It Matters Here

Beyond compiling, TypeScript can be imported as a library: you instantiate objects such as ts.Program or ts.LanguageService and build tools on top. TypeScript 7.0 shipped without that public, stable API, and that is the problem for the whole ecosystem.

ESLint, Vue, Svelte, Astro, Angular and Loaders: Who Can Migrate Today

Everything that imports the compiler as a library is waiting: the TypeScript plugin for ESLint, Vue template checking through vue-tsc, svelte-check, astro check, Angular template checking and bundler loaders that delegate type-checking. If your project uses any of them, your tsc gets much faster, but lint and editor feedback may stay the same or break.

TypeScript 7.1 and the Stable API: Why Your Editor May Not Fly Yet

The stable API arrives with TypeScript 7.1, which is why most migration guides focus there rather than on 7.0. The honest consequence: if your bottleneck is editor feedback rather than the CI build, you may gain almost nothing today.

Step-by-Step Migration Checklist

Step 1: Inventory — Separate Who Runs tsc From Who Imports the API

Before touching versions, make two lists: tools that run the compiler and tools that import it. The second group sets the date of your migration; the first group benefits immediately.

Step 2: A Baseline and a Separate Branch Before Changing Versions

Do not mix the compiler upgrade with code changes. Check the current version, run a type-check and save the result as your baseline:

npx tsc --version
npx tsc --noEmit

Step 3: Clean the tsconfig (Removed Options, rootDir, types, module)

Remove the options the compiler flags as unknown, and instead of trusting defaults set rootDir and types explicitly, and choose module and moduleResolution deliberately. This is the step that clears most of the new errors.

Step 4: Monorepos With Project References and tsc --build

If your repo is a monorepo, review project references, composite and builds via tsc --build. That is where a sloppy migration shows up in minutes instead of seconds, and also where the native engine pays off most:

npx tsc --build --force

Step 5: CI, Version Matrix and Type-Check Split From Lint

Split type-checking from linting in the pipeline so a tool that does not support TypeScript 7 yet cannot take down the whole CI. Pin your Node version in the matrix (for instance, if you plan to move to Node.js 26 when it becomes LTS) and measure timings before and after instead of going from memory. CI has its own craft, so lean on a solid CI/CD with GitHub Actions guide if you are building that part from scratch.

Step 6: Pin the Version and Keep a Way Back to 6.x

Keep typescript at a pinned version (no open ranges) and have the path back to 6.x tested before moving on. If something breaks in production, you want a one-line revert, not a tsconfig rewrite.

What You Actually Gain (and What You Don't)

Several Times Faster Builds: the Benchmarks Being Quoted

The native engine is compared with the previous compiler in the range of 8 to 12 times faster builds, and the most quoted case is VS Code's own codebase, around 1.5 million lines, going from roughly 77.8 seconds to 7.5 seconds. These are published, attributable figures, not extrapolations: in your project it will depend on size and on how much time goes into writing files.

What TypeScript 7 Doesn't Change: the Language and Your Types

Do not expect new types, new syntax or type-system changes. 7.0 is infrastructure, not language. If what you were hoping for was a new language API, this is not that release.

Where You Won't Notice Anything: When the Bundler Is the Bottleneck

If your development build is slow because of the bundler and not the type-check, migrating will not change your life. Measure first: a 20-second type-check that now takes 3 matters little when the bundler takes 40.

Errors You'll Hit and How to Fix Them

Unknown Option in tsconfig

That is the removed option. Take it out of the tsconfig (or swap it for its replacement, such as verbatimModuleSyntax) and compile again.

Lint Crashing After the Upgrade

It is usually the ESLint plugin importing an API that no longer exists. Your options are staying on 6.x for lint or waiting for 7.1; there is no reliable home-made patch.

"Cannot find name process" and the Global Types Trap

The default for types became an empty list. Explicitly declare, in your tsconfig, the packages that provide the global names you use.

Type-Check Passes but the App Build Fails

That means the bundler and its plugins take a different path. Separate responsibilities: type-checking should not depend on bundler plugins, and vice versa.

Conclusion: When to Migrate Today and When to Wait for 7.1

If you have a large repository with a slow type-check, use nothing that imports the compiler API and control your CI, the jump is worth it today. If your project depends on Vue, Svelte, Astro or Angular, on ESLint with its TypeScript plugin or on loaders that type-check, the prudent move is to wait for 7.1. And if you have already hit the error: go back to 6.x, clean the tsconfig calmly and plan the upgrade on a separate branch. The blog will keep covering the state of the ecosystem when 7.1 lands.

Categories