# microsoft/typescript-go: The Archived Staging Repo for TypeScript's Native Go Port

> microsoft/typescript-go was the staging repository used during the development of TypeScript 7.0's native Go port. The work is complete, the repository is archived, and development has moved back to the main microsoft/TypeScript repository.

**microsoft/typescript-go** — Staging repo for development of native port of TypeScript. Preview A preview build is available on npm as @typescript/native-preview.

- Repository: https://github.com/microsoft/typescript-go
- Stars: 26,174 · Forks: 1,141
- Language: Go
- License: Apache-2.0
- Published: 2026-08-08 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/microsoft-typescript-go

## What This Repository Was and Its Current Status

microsoft/typescript-go was the staging repository created specifically for developing the native Go port of TypeScript, which shipped as TypeScript 7.0. The README states plainly: this was the staging repo for the TypeScript 7.0 release during the native port process, which is now completed. The repository was permanently archived in September 2026. The last push to this repository was on 2026-08-31.

All future development and discussion about TypeScript happens at the original microsoft/TypeScript repository. The typescript-go repository is preserved for reference but accepts no new commits, issues, or pull requests. Anyone who encounters the repository while researching the TypeScript Go port should treat it as a historical record of the port's development rather than an active project.

## Why TypeScript Was Ported to Go

The announcement post linked from the README (at the Microsoft Developer Blogs under the slug `typescript-native-port/`) explains the reasoning. The Go port of TypeScript is a native implementation written in Go rather than TypeScript running on Node.js. The motivation was performance: the native compiler can type-check and emit significantly faster than the JavaScript-based implementation.

The repository is written in Go (the primary language listed is Go) and uses a Go module at `github.com/microsoft/typescript-go` with a `go.mod` requiring Go 1.26. It also includes TypeScript and JavaScript tooling for the VS Code extension, the npm package wrappers, and the build system (`Herebyfile.mjs` drives the build via the hereby task runner).

The command name changed during development. The README notes that for TypeScript 7.0 RC and later, the CLI command is `tsc`, matching the existing TypeScript command. Earlier preview builds used `tsgo`.

## How to Use the TypeScript 7.0 Preview (from This Repository's Era)

During the staging period, Microsoft published preview builds of the Go port on npm as `@typescript/native-preview`. The README shows how the preview was installed and used:

```sh
npm install @typescript/native-preview
npx tsgo
```

For TypeScript 7.0 RC and later, the command is `tsc` rather than `tsgo`. A preview VS Code extension was also available on the VS Code marketplace. To enable it in VS Code settings:

```json
{
    "js/ts.experimental.useTsgo": true
}
```

These preview mechanisms were the intended way to test the port during staging. Now that the work is complete and merged back into microsoft/TypeScript, the standard TypeScript installation process at that repository applies.

## Feature Status at the Time of Archival

The README includes a feature status table covering the state of the port at its last documented update. Features marked as done include program creation, parsing and scanning, command-line and tsconfig.json parsing, type resolution, type checking, JavaScript-specific inference and JSDoc, JSX, declaration emit, JavaScript output emit, watch mode, build mode with project references, and incremental build.

The language service (LSP), used by editors like VS Code for completions, hover, and go-to-definition, was marked as in progress, with the README noting that nearly all features were implemented at that stage.

The API was marked not ready. The README's definition table explains that "not ready" means either the work had not started or was far enough from completion that bug reports were not useful.

Intentional differences from TypeScript 6.0 behavior are documented in `CHANGES.md` in the repository.

## Repository Structure and Build System

The Go source lives in `cmd/` for the entry points and `internal/` for the implementation packages. The `_build/`, `_extension/`, and `_packages/` directories with underscore prefixes contain the build output, VS Code extension, and npm package wrappers respectively. The `_submodules/` directory holds the TypeScript test suite imported as a submodule.

The build system uses the hereby task runner via `Herebyfile.mjs`. Building is done through npm scripts that delegate to hereby:

```bash
npm run build
```

The `go.mod` file lists the Go dependencies. Notable ones include `github.com/go-json-experiment/json`, `github.com/google/go-cmp`, and `golang.org/x/sync`. The JavaScript tooling dependencies in `package.json` include `typescript@^6.0.3` (used to process the TypeScript source in the extension and packages), `dprint` for formatting, and `hereby` for the build task runner.

The `testdata/` directory holds TypeScript test cases used to verify that the Go port produces identical results to the original TypeScript compiler.

## Limitations of This Repository as a Reference

Because this repository is archived, it should not be used as a reference for the current state of TypeScript 7.0. Features, behaviors, and configuration options may have changed between the last commit here (2026-08-31) and the current state of TypeScript in the microsoft/TypeScript repository.

The intentional differences between the Go port and TypeScript 6.0 documented in `CHANGES.md` were captured at the time of the last commit. Changes made after the merge into microsoft/TypeScript are not reflected here.

The issue tracker for typescript-go is closed, as noted in the README. Any TypeScript bug reports should go to the microsoft/TypeScript issue tracker.

The Apache-2.0 license applies to the code in this repository. As with all Microsoft open-source repositories, the Contributor License Agreement applies to any contributions made before the repository was archived.

## typescript-go vs. Earlier TypeScript Rewrite Attempts

TypeScript has been the subject of various faster-compiler efforts over the years. SWC is a Rust-based JavaScript and TypeScript transformer that supports transpilation but not full type checking. ESBuild similarly strips types without checking them. Bun's bundler also processes TypeScript without a type checker. None of these are TypeScript's actual type system reimplemented in another language.

The typescript-go port is distinct from those projects because it reimplements the full TypeScript type checker, not just the transpilation step. The feature status table in the README covers type resolution, type checking producing the same errors, locations, and messages as TypeScript 6.0, and declaration emit. This is a materially different target than what SWC, ESBuild, or Bun attempt.

## Conclusion

Developers who followed the TypeScript native port during its development should now point their work at the microsoft/TypeScript repository. The typescript-go repository is archived as of September 2026, and no further commits or issues will be accepted there. The preview npm package `@typescript/native-preview` and the `tsc` command from TypeScript 7.0 RC onward represent the shipped result of the work this staging repository hosted. Teams evaluating whether to adopt TypeScript 7 should verify language service completeness at the current state of microsoft/TypeScript, since the LSP feature was still in progress at the time of the typescript-go repository's last push on 2026-08-31.

## FAQ

### What is typescript-go?

microsoft/typescript-go was the staging repository for developing TypeScript 7.0's native Go port. The work is complete and the repository is archived as of September 2026. Development continues at the original microsoft/TypeScript repository.

### How do I install the TypeScript Go compiler?

During the staging period, the preview was available as `@typescript/native-preview` on npm, invoked with `npx tsgo`. For TypeScript 7.0 RC and later, the command is `tsc`. The typescript-go staging repository is archived; consult the microsoft/TypeScript repository for current installation instructions.

### Is the TypeScript Go rewrite ready?

The core compiler features were complete at the time of the last push on 2026-08-31. The language service was in progress. The repository README notes that the port is completed and archived, with development continuing at microsoft/TypeScript.

### How do I use the TypeScript Go compiler in VS Code?

A preview VS Code extension was available during development. To enable it, set `"js/ts.experimental.useTsgo": true` in VS Code settings. Since the repository is archived, the current path for editor integration is through the microsoft/TypeScript repository and its published releases.

### How does typescript-go compare to SWC or ESBuild?

SWC and ESBuild are transpilers that strip TypeScript syntax without performing type checking. typescript-go is a full reimplementation of the TypeScript type checker in Go, producing the same type errors, locations, and messages as TypeScript 6.0. These tools solve different problems.

## Sources

- [Official README](https://github.com/microsoft/typescript-go#readme)
- [Project repository](https://github.com/microsoft/typescript-go)
- [Release notes](https://github.com/microsoft/typescript-go/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/microsoft-typescript-go
