johnsoncodehk/typescript-native-bridgePublic

A typescript-shaped drop-in backed by typescript-go (tsgo) over an in-process cgo NAPI/FFI bridge — no IPC.

AI summary: A drop-in TypeScript replacement that accelerates type-checking by routing to Microsoft's Go compiler (tsgo).

Stars
240
+2 today
Forks
4
Watchers
3
Open issues
4
Open PRs
0
Contributors
~4
Commits
370
Branches
1

JavaScriptApache-2.0Created Jun 27, 2026Last push 1d agoLatest release v6.0.3-bridge.7.tsgo.7.0.2+11 stars this week+20 this month

Star history

since Jul 5, 2026
0100200Jul 2026Jul 2026Jul 2026Aug 2026
240 stars as of Aug 7, 2026, tracked back to Jul 5, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 1 commit2026-06-28: 0 commits2026-06-29: 18 commits2026-06-30: 16 commits2026-07-01: 10 commits2026-07-02: 8 commits2026-07-03: 16 commits2026-07-04: 11 commits2026-07-05: 9 commits2026-07-06: 6 commits2026-07-07: 3 commits2026-07-08: 4 commits2026-07-09: 8 commits2026-07-10: 4 commits2026-07-11: 4 commits2026-07-12: 9 commits2026-07-13: 12 commits2026-07-14: 8 commits2026-07-15: 5 commits2026-07-16: 8 commits2026-07-17: 24 commits2026-07-18: 22 commits2026-07-19: 10 commits2026-07-20: 25 commits2026-07-21: 3 commits2026-07-22: 11 commits2026-07-23: 26 commits2026-07-24: 34 commits2026-07-25: 6 commits2026-07-26: 8 commits2026-07-27: 39 commits2026-07-28: 0 commits2026-07-29: 1 commit2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
369 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Actively maintained

    Pushed within 48 hours

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

What typescript-native-bridge does

TypeScript Native Bridge (TNB) solves the tooling ecosystem gap for Microsoft's new Go-based TypeScript compiler (tsgo). While tsgo is incredibly fast, it lacks the classic programmatic API needed by tools like ESLint, vue-tsc, and Volar. TNB acts as a seamless shim: you install it as a drop-in replacement for the standard `typescript` npm package, and it intercepts classic API calls, forwarding them in-process to the tsgo engine. This allows existing editors and CI pipelines to get the speed benefits of the Go rewrite without altering a single line of their codebase or configuration.

TNB is for frontend engineers and tooling maintainers managing large TypeScript projects. It is a vital stopgap for anyone wanting the performance of TypeScript 7 right now, without waiting for the ecosystem to rewrite their plugins.

  • In-Process Go Execution: Runs the tsgo compiler via a CGO NAPI/FFI bridge, avoiding IPC overhead.
  • Drop-in Replacement: Mocks the classic `typescript` package surface perfectly, requiring zero code changes in tools.
  • Universal Compatibility: Works immediately with vue-tsc, svelte-check, astro-check, and ESLint.
  • LSP Support Preservation: Allows editors using tsserver and Language Service Plugins to function normally.
  • Zero New CLI: Users continue using the exact same commands (`tsc`, etc.) they always have.

Where teams use it

Large Monorepo Acceleration

Teams with massive codebases can slash their CI type-checking times by overriding typescript in their pnpm workspace.

Vue/Svelte Development

Framework users relying on `vue-tsc` can get native performance without waiting for the framework to adopt a new API.

Faster IDE Feedback

Developers experience snappier intellisense and error reporting in VSCode as the underlying checker runs in Go.

ESLint Performance

Speeding up heavy `typescript-eslint` rules that rely on generating full type checker information.

Getting started: npm install typescript-native-bridge

README

master branch

typescript-native-bridge (TNB)

Published on npm as typescript-native-bridge.

A drop-in typescript replacement that type-checks on Go. Swap the typescript package for this fork and keep using tsc, vue-tsc, svelte-check, astro-check, glint, ESLint, and your editor exactly as before — the checker runs on tsgo (Microsoft's Go TypeScript compiler) in-process instead of JavaScript. No new CLI, no new LSP, no per-tool config, no code changes.


Why not just use TypeScript 7 (tsgo)?

typescript@7 is Microsoft's Go-native rewrite — but it doesn't drop into the tools you actually use:

  • vue-tsc / astro-check / svelte-check / glint are built on the classic typescript programmatic API (createProgram, Volar hooks, custom hosts). v7's programmatic surface is the new tsgo API — not a drop-in replacement for the classic one, so those tools can't just move to it.
  • ESLint (typescript-eslint) imports the classic typescript API and calls getTypeChecker() — same API mismatch.
  • Editors run tsserver + Language Service Plugins (@vue/typescript-plugin for .vue) — tsgo's LSP doesn't support that plugin model.

TNB keeps the classic package surface and puts the v7 engine (tsgo 7.x) behind it in-process — so one typescript override accelerates all of them at once.


Install

pnpm (monorepos)

# pnpm-workspace.yaml
overrides:
  typescript: npm:typescript-native-bridge@<version>
pnpm install
pnpm exec vue-tsc -b --noEmit    # or your project's typecheck script

If packages depend on typescript via catalog:, update the catalog entry too, or those packages still resolve stock TypeScript:

catalog:
  typescript: npm:typescript-native-bridge@<version>
overrides:
  typescript: npm:typescript-native-bridge@<version>

npm

// package.json
{
  "devDependencies": {
    "typescript": "npm:typescript-native-bridge@<version>"
  },
  "overrides": {
    "typescript": "$typescript"
  }
}

Use the alias and the $typescript override reference as shown — putting npm:typescript-native-bridge@… directly inside overrides is rejected or mis-resolved by some npm versions (issue #8). <version> is an exact version (e.g. 6.0.3-bridge.6.tsgo.7.0.2 — pin exactly; caret ranges don't match prerelease versions) or the latest dist-tag.

yarn

// package.json
{
  "resolutions": {
    "typescript": "npm:typescript-native-bridge@<version>"
  }
}

Local path (pinning a git checkout)

# pnpm-workspace.yaml
overrides:
  typescript: link:../typescript-native-bridge

The checkout must be built first (requires Go — npm run setup in the TNB repo).

After any override change: reinstall. The override applies repo-wide — vue-tsc, @typescript-eslint/parser, and every other transitive typescript consumer picks up the fork.


Confirm it's working

On the first type-check in a process, TNB prints to stderr:

┌─────────────────────────────────────────────────────────┐
│  ✅  TNB ACTIVE — `typescript` is the tsgo-backed fork  │
└─────────────────────────────────────────────────────────┘

No banner = stock typescript is still loaded. See Troubleshooting.

node -e "console.log(require.resolve('typescript'))"
# should point at typescript-native-bridge, not node_modules/typescript@6.x

Verified compatible tools

Verified means: the tool runs on the fork and its behavior matches tsgo's on the stated workload (no crash, no silent under-reporting, no false positives beyond the differences from tsgo).

Tool Status Verified on
tsc compiler test corpus
vue-tsc elk.zone monorepo (~2,000 files): emitted-error parity with stock, ~3.1× faster
astro-check fixture project: output identical to stock
svelte-check fixture project: output identical to stock (incl. svelteHTML ambient shims)
glint fixture project: same error set as stock (transformed .gts virtual files)
ESLint + typescript-eslint (type-aware rules) 1,000-file type-aware corpus: lint output byte-identical to stock
tsserver + @vue/typescript-plugin volar language-tools test suite: 205/209 pass (4 skipped)
tsslint runs as the volar repo's own linter

Continuous verification: a nightly CI gate replays the language-service probe corpus (quickinfo / definition / references / diagnostics, ~19k units) against the same stock build — no new divergences allowed. If your tool isn't listed, try it and file an issue; the fork covers any tool that drives the standard typescript Compiler API.

Framework specifics

  • .vue, .svelte, .astro, .mdx, .gts etc. via the standard extraFileExtensions contract — no hard-coded per-framework special case.
  • Host-injected virtual content (Volar virtual TS, glint's transformed modules, svelte's ambient shims) reaches the Go checker.
  • allowArbitraryExtensions is inferred true when host extra extensions are present and tsconfig leaves it unset; explicit false opts out.
  • Not supported: custom resolveModuleNames / resolveModuleNameLiterals that remap an import to a different physical file (the bridge is synchronous JS→Go; tsgo cannot call back into JS resolvers).

Performance

Measured on this repo's benchmarks (Apple Silicon; your repo will differ — measure):

Workload Stock typescript TNB
vue-tsc -b full check (elk.zone, ~2000 files) 9.7s 3.1s ~3.1×
type-aware ESLint, single-run (plain TS, one program) 7.6s 7.7s parity
JS heap peak (1000-file type-aware ESLint run) 1.57GB 0.90GB −43%

The rule is simple: wherever the time is in the checker, TNB is faster. The Go engine does the whole-program semantic pass ~10× faster than the JS checker — the question for any workload is how much of its time that phase is.

Editor / LS path (Volar + tsserver): the V8-arena transport (fixed-layout records written straight into V8 memory) plus a binary blob codec for the auto-import export map keep per-keystroke work near the transport floor. Measured on a 5,537-request roam over the volar corpus: completionInfo 0.3ms mean with 290 bytes and 1.0 RPC per request; quickinfo 0.5ms; references 4.8ms; total JSON transport 7.7MB.

vue-tsc -b (checker-dominated — the big win):

Stock TNB
Type-checking ~5.6s (JS checker) ~0.6s (Go checker)
Tool overhead (Volar codegen, JS, transport) ~4.1s ~2.5s
Total 9.7s 3.1s

The single-run ESLint row is the control case: its type-checking share is small (the tool spends its time on parsing, AST conversion and rule execution — work both sides pay), so the total lands at parity. Workloads dominated by transport volume rather than checker work (e.g. watch-mode ESLint issuing ~469K tiny queries — one program rebuild per linted file) measure the JS↔Go boundary, not the engine; the V8-arena transport (fixed-layout records written straight into V8 memory, DataView reads, interned strings) keeps that boundary near its floor, and memory stays well below stock either way.


Editor / tsserver (VS Code, Cursor)

CLI typecheck picks up TNB automatically. The editor does not — VS Code ships its own TypeScript and only uses yours when you opt in.

1. Workspace settings (commit .vscode/settings.json for the team):

{
  "js/ts.tsdk.path": "node_modules/typescript/lib",
  "js/ts.tsdk.promptToUseWorkspaceVersion": true
}

Use a path relative to the workspace folder that contains node_modules.

2. Switch to the workspace version (once per machine):

Command Palette → TypeScript: Select TypeScript VersionUse Workspace Version.

3. Verify: the version picker shows a path under node_modules/typescript/lib; the Output → TypeScript channel may show TNB ACTIVE on first project load. Vue/Nuxt users: keep @vue/typescript-plugin in tsconfig compilerOptions.plugins as today — it runs as a tsserver LS Plugin on this fork.

CLI Editor
Override needed Yes Yes (same node_modules/typescript)
Extra config No js/ts.tsdk.path + Use Workspace Version

Behavior and differences from tsgo

The checker's behavior is tsgo 7.0.2's (Microsoft's Go TypeScript), not stock TypeScript 6.0.3's — migrating from stock means inheriting tsgo's diagnostics, bundled libs, and display output as-is.

TNB's own changes to tsgo behavior — the complete list, enforced by CI:

Change Why Upstream Removal
getTypeFromTypeNodeWorker resolves type-position entity names (identifier / qualified name / property access) Silent wrong result on the headline path: hover on P in [P, (typeof OBJ)[P][number]] read any instead of the type parameter (issue #30) repro branch repro/type-position-entity-reads-any (issue pending) When the upstream fix lands

Anything that looks like a difference from stock 6.0.3 but isn't listed here is tsgo's own behavior, not TNB's. Found an actual TNB-only divergence? File an issue with a minimal repro.


Platform support

The bridge binary ships as per-platform optional dependencies; npm install pulls only the one matching your machine (the main package is pure JS):

Platform Sub-package
macOS Apple Silicon @typescript-native-bridge/darwin-arm64
macOS Intel @typescript-native-bridge/darwin-x64
Linux x64 @typescript-native-bridge/linux-x64
Linux arm64 @typescript-native-bridge/linux-arm64
Linux arm (32-bit) @typescript-native-bridge/linux-arm
Windows x64 @typescript-native-bridge/win32-x64
Windows arm64 @typescript-native-bridge/win32-arm64

Linux packages target glibc 2.31 and are rejected by the release gate if they acquire a newer symbol requirement. Alpine/musl is not supported: Go's -buildmode=c-shared runtime crashes at load on musl libc — even a trivial hello-world c-shared library segfaults, on Go 1.22 through 1.26 alike (golang/go#13492, a 10-year-open upstream issue with an active fix in golang/go#75048; tsgo's own CLI works on Alpine only because it ships CGO-free static binaries, and a NAPI bridge cannot be CGO-free). Workaround: run the typecheck/lint step in a glibc-based image (node:24 or node:24-bookworm-slim) and deploy into the Alpine stage of your multi-stage build; apk add gcompat does not help.

On an unsupported platform the loader fails with a clear "unsupported platform or missing optional dependency" error — build from source there (clone with submodules, then npm run setup; requires Go + a C toolchain).


Troubleshooting

No banner appears

Check Action
Override at workspace root Monorepo: pnpm-workspace.yaml, not a leaf package
pnpm 11 Move package.jsonpnpm.overrides to pnpm-workspace.yamloverrides: (pnpm 11 no longer reads the pnpm field — silently ignored)
catalog: pin Update catalog and overrides
Stale install pnpm install again; clear CI cache if needed
Wrong resolution node -e "console.log(require.resolve('typescript'))"

CLI works, editor doesn't (or vice versa)

  • CLI OK, editor not: add the tsdk settings and run TypeScript: Select TypeScript Version → Use Workspace Version. The override alone is not enough for the editor.
  • Editor OK, CLI not: check require.resolve('typescript') — should point at TNB. Reinstall after changing overrides.

Type errors differ from stock

Expected — the checker's behavior is tsgo 7.0.2's, not stock 6.0.3's, so output can differ from stock (see Behavior and differences from tsgo). What is a bug: output that differs from tsgo itself — file an issue with a minimal repro.

Missing native bridge

Error mentioning bridge.dylib / bridge.so / bridge.dll / "unsupported platform" → see Platform support (build from source, or use a link: install built with npm run setup).

Debug a slow run

TSGO_PROFILE=1 prints a [tsgo-profile] RPC/timing summary to stderr on process exit.


Uninstall / rollback

Remove the typescript override, reinstall, confirm:

pnpm install
node -e "console.log(require.resolve('typescript'))"   # stock typescript@6.x again

No source changes required.


FAQ

Do I need to change my code? No.

Do I configure vue-tsc / ESLint / my editor plugin separately? No. They import typescript; one override covers them.

Is this the same as TypeScript 7 / tsgo? Same engine, different package. TNB pins tsgo 7.x as its checker (the version string ends in tsgo.7.0.2), but keeps the classic typescript API and tsserver in front of it. typescript@7 gives you the new tsgo API and its own LSP instead — see Why not just use TypeScript 7?

How much faster is it? See Performance — biggest on vue-tsc-style full-program workloads. Measure on your own repo.


License

Apache-2.0. See LICENSE and NOTICE.

This package is a derivative work of Microsoft TypeScript and microsoft/typescript-go.

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

7 total
  1. v6.0.3-bridge.7.tsgo.7.0.2v6.0.3-bridge.7.tsgo.7.0.2Jul 27, 2026

    ## What's Changed * fix(bridge): survive Node worker_threads hosts (ESLint --concurrency) by @christopher-buss in https://github.com/johnsoncodehk/typescript-native-bridge/pull/24 * fix(bridge): resolve imported extra-extension files by @haoqunjiang in https://github.com/johnsoncodehk/typescript-native-bridge/pull/32 ## New Contributors * @christopher-buss made their first contribution in https://github.com/johnsoncodehk/typescript-native-bridge/pull/24 * @haoqunjiang made their first contribution in https://github.com/johnsoncodehk/typescript-native-bridge/pull/32 **Full Changelog**: https://github.com/johnsoncodehk/typescript-native-bridge/compare/v6.0.3-bridge.6.tsgo.7.0.2...v6.0.3-bridge.7.tsgo.7.0.2

  2. v6.0.3-bridge.6.tsgo.7.0.2v6.0.3-bridge.6.tsgo.7.0.2Jul 23, 2026

    **Full Changelog**: https://github.com/johnsoncodehk/typescript-native-bridge/compare/v6.0.3-bridge.4.tsgo.7.0.2...v6.0.3-bridge.6.tsgo.7.0.2

  3. v6.0.3-bridge.4.tsgo.7.0.2v6.0.3-bridge.4.tsgo.7.0.2Jul 23, 2026

    **Full Changelog**: https://github.com/johnsoncodehk/typescript-native-bridge/compare/v6.0.3-bridge.3.tsgo.7.0.2...v6.0.3-bridge.4.tsgo.7.0.2

  4. v6.0.3-bridge.3.tsgo.7.0.2v6.0.3-bridge.3.tsgo.7.0.2Jul 23, 2026

    **Full Changelog**: https://github.com/johnsoncodehk/typescript-native-bridge/compare/v6.0.3-bridge.2.tsgo.7.0.2...v6.0.3-bridge.3.tsgo.7.0.2

  5. v6.0.3-bridge.2.tsgo.7.0.2v6.0.3-bridge.2.tsgo.7.0.2Jul 23, 2026

    **Full Changelog**: https://github.com/johnsoncodehk/typescript-native-bridge/compare/v6.0.3-bridge.1.tsgo.7.0.2...v6.0.3-bridge.2.tsgo.7.0.2

Commits per week

last 52 weeks
1150Week of 2025-08-03: 0 commitsWeek of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 1 commitsWeek of 2026-06-28: 79 commitsWeek of 2026-07-05: 38 commitsWeek of 2026-07-12: 88 commitsWeek of 2026-07-19: 115 commitsWeek of 2026-07-26: 48 commitsAug 3, 2025Jul 26, 2026
369 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 1 commitsSun 1:00 — 5 commitsSun 2:00 — 0 commitsSun 3:00 — 2 commitsSun 4:00 — 2 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 0 commitsSun 12:00 — 0 commitsSun 13:00 — 1 commitsSun 14:00 — 2 commitsSun 15:00 — 0 commitsSun 16:00 — 4 commitsSun 17:00 — 1 commitsSun 18:00 — 0 commitsSun 19:00 — 7 commitsSun 20:00 — 0 commitsSun 21:00 — 2 commitsSun 22:00 — 6 commitsSun 23:00 — 3 commitsMon 0:00 — 0 commitsMon 1:00 — 4 commitsMon 2:00 — 6 commitsMon 3:00 — 3 commitsMon 4:00 — 11 commitsMon 5:00 — 7 commitsMon 6:00 — 15 commitsMon 7:00 — 4 commitsMon 8:00 — 5 commitsMon 9:00 — 8 commitsMon 10:00 — 5 commitsMon 11:00 — 7 commitsMon 12:00 — 6 commitsMon 13:00 — 3 commitsMon 14:00 — 2 commitsMon 15:00 — 3 commitsMon 16:00 — 2 commitsMon 17:00 — 1 commitsMon 18:00 — 1 commitsMon 19:00 — 1 commitsMon 20:00 — 2 commitsMon 21:00 — 1 commitsMon 22:00 — 0 commitsMon 23:00 — 3 commitsTue 0:00 — 0 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 1 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 2 commitsTue 9:00 — 2 commitsTue 10:00 — 0 commitsTue 11:00 — 2 commitsTue 12:00 — 2 commitsTue 13:00 — 4 commitsTue 14:00 — 1 commitsTue 15:00 — 1 commitsTue 16:00 — 1 commitsTue 17:00 — 1 commitsTue 18:00 — 6 commitsTue 19:00 — 0 commitsTue 20:00 — 4 commitsTue 21:00 — 3 commitsTue 22:00 — 0 commitsTue 23:00 — 0 commitsWed 0:00 — 0 commitsWed 1:00 — 2 commitsWed 2:00 — 2 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 1 commitsWed 7:00 — 2 commitsWed 8:00 — 1 commitsWed 9:00 — 1 commitsWed 10:00 — 1 commitsWed 11:00 — 0 commitsWed 12:00 — 2 commitsWed 13:00 — 0 commitsWed 14:00 — 2 commitsWed 15:00 — 6 commitsWed 16:00 — 1 commitsWed 17:00 — 2 commitsWed 18:00 — 1 commitsWed 19:00 — 1 commitsWed 20:00 — 0 commitsWed 21:00 — 2 commitsWed 22:00 — 0 commitsWed 23:00 — 4 commitsThu 0:00 — 2 commitsThu 1:00 — 2 commitsThu 2:00 — 1 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 1 commitsThu 7:00 — 2 commitsThu 8:00 — 7 commitsThu 9:00 — 2 commitsThu 10:00 — 2 commitsThu 11:00 — 0 commitsThu 12:00 — 0 commitsThu 13:00 — 4 commitsThu 14:00 — 5 commitsThu 15:00 — 2 commitsThu 16:00 — 3 commitsThu 17:00 — 2 commitsThu 18:00 — 3 commitsThu 19:00 — 2 commitsThu 20:00 — 3 commitsThu 21:00 — 2 commitsThu 22:00 — 1 commitsThu 23:00 — 4 commitsFri 0:00 — 1 commitsFri 1:00 — 2 commitsFri 2:00 — 2 commitsFri 3:00 — 1 commitsFri 4:00 — 2 commitsFri 5:00 — 1 commitsFri 6:00 — 1 commitsFri 7:00 — 1 commitsFri 8:00 — 9 commitsFri 9:00 — 13 commitsFri 10:00 — 4 commitsFri 11:00 — 3 commitsFri 12:00 — 1 commitsFri 13:00 — 4 commitsFri 14:00 — 3 commitsFri 15:00 — 1 commitsFri 16:00 — 1 commitsFri 17:00 — 1 commitsFri 18:00 — 11 commitsFri 19:00 — 5 commitsFri 20:00 — 7 commitsFri 21:00 — 0 commitsFri 22:00 — 0 commitsFri 23:00 — 4 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 2 commitsSat 3:00 — 1 commitsSat 4:00 — 2 commitsSat 5:00 — 5 commitsSat 6:00 — 1 commitsSat 7:00 — 0 commitsSat 8:00 — 3 commitsSat 9:00 — 2 commitsSat 10:00 — 0 commitsSat 11:00 — 6 commitsSat 12:00 — 8 commitsSat 13:00 — 3 commitsSat 14:00 — 1 commitsSat 15:00 — 0 commitsSat 16:00 — 1 commitsSat 17:00 — 2 commitsSat 18:00 — 2 commitsSat 19:00 — 3 commitsSat 20:00 — 1 commitsSat 21:00 — 1 commitsSat 22:00 — 0 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits365 (99%)
Community commits4 (1%)

369 commits in total over the last year.

DateListRankStars gained
Jul 10, 2026daily#22+2
  • react/react

    The library for web and native user interfaces.

    247.1K stars · JavaScript

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    238.5K stars · JavaScript

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    234.7K stars · JavaScript

  • vercel/next.js

    The React Framework

    141.7K stars · JavaScript

  • DietrichGebert/ponytail

    Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

    98.1K stars · JavaScript

  • JuliusBrussee/caveman

    🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman

    96.7K stars · JavaScript