Hosted onhyper.mediavia theHypermedia Protocol

    TL;DR

      Not recommended right now. Several of our tsconfig patterns are incompatible with tsgo, and it's not production-ready yet. The safer path is upgrading through TypeScript 6.0 first, which introduces the same config changes with better tooling support.

    What is typescript-go?

      A ground-up rewrite of the TypeScript compiler in Go (codename "Corsa"). It delivers 8-10x faster type checking and builds, with roughly half the memory usage. It will ship as TypeScript 7.0.

      Key stats from their test suite: of ~20,000 test cases, only 74 show behavioral differences from TS 5.9.

    Our Current Setup

      AspectDetailsTS version5.8.3Typecheck commandpnpm -r run typecheck (runs tsc --noEmit per package)Packages with typecheckweb, desktop, shared, ui, editor, notifyModule resolution"Bundler" (web), "node" (desktop)Path aliasesbaseUrl + paths in web and desktopProject referencesUsed in shared package; disableSourceOfProjectReferenceRedirect: true in web

    Compatibility Blockers

      1. baseUrl (used in web + desktop)

        tsgo is removing baseUrl support entirely. All paths mappings would need to be converted to work without it.

        Affected files: frontend/apps/web/tsconfig.json, frontend/apps/desktop/tsconfig.json

      2. moduleResolution: "node" (desktop)

        tsgo drops node10/node resolution mode. Desktop would need to migrate to "bundler" or "nodenext", which may require adding .js extensions to imports and changes to how Electron Forge resolves modules.

        Affected file: frontend/apps/desktop/tsconfig.json

      3. module: "commonjs" (desktop)

        May need adjustment depending on Electron Forge's ESM support at time of migration.

        Affected file: frontend/apps/desktop/tsconfig.json

      4. disableSourceOfProjectReferenceRedirect: true (web)

        Known bug in tsgo (#506) — tsgo may typecheck referenced project sources instead of using .d.ts files when this flag is set.

        Affected file: frontend/apps/web/tsconfig.json

      5. No programmatic API

        Tools that import typescript (ESLint type-aware rules, custom transforms, etc.) cannot use tsgo. The replacement API is still in progress.

    What tsgo Does Well (When Ready)

      8-10x faster full builds

      Parallel multi-project builds via shared-memory

      Incremental builds work

      Near-complete type checking parity with TS 5.9

      VS Code extension available for preview

    What's Still Missing in tsgo

      Declaration emit is incomplete

      Watch mode is prototype-quality (no incremental rechecking)

      No programmatic API for tooling

      JS emit only works well for esnext target (downlevel to es2021 only)

      No decorator compilation support yet

    Recommended Plan

      Phase 1: Upgrade to TypeScript 6.0 (when released)

        TypeScript 6.0 is the official "bridge" release that introduces the same config deprecations as 7.0 but stays on the JS-based compiler.

          Upgrade to TS 6.0

          Run the ts5to6 migration tool on all tsconfigs

          Remove baseUrl usage — make all paths relative

          2

          Migrate desktop from moduleResolution: "node" to "bundler"

          Evaluate module: "commonjs""esnext" for desktop (depends on Electron Forge support)

          Verify all typecheck scripts still pass

      Phase 2: Switch to tsgo / TypeScript 7.0 (mid-2026)

        Once 7.0 ships and our configs are already compatible:

          Install @typescript/native-preview (or the final 7.0 package)

          Replace tsc with tsgo in all package.json typecheck scripts

          Verify type checking results match

          Enjoy the speed

    Why Not Now?

      Config incompatibilities require non-trivial changes to desktop app build tooling

      The composite project bug affects our web app config

      No stable API means ESLint type-aware rules and other tooling won't work

      TS 6.0 provides the same migration path with less risk

      Our typecheck is tsc --noEmit — not a major bottleneck today