---
title: 'TypeScript & Golang'
excerpt: 'Microsoft just supercharged TypeScript compilation with Golang steroids!'
summary: "Microsoft's tsgo, a native Go port of the TypeScript compiler, builds up to about 10x faster - and what that means for Appwrite's codebases."
date: 2025-03-14
categories: web
featureImage: '/images/typescript-and-golang.webp'

prev:
  text: 'Post-Quantum Cryptography (Part 2)'
  link: '/blog/post-quantum-cryptography-2'

next:
  text: 'Appwrite Q&A Feature'
  link: '/blog/qna'
---

You've likely heard a lot of buzz around TypeScript lately—so let's dive into what makes it exciting.

---

Microsoft recently introduced a native port of the TypeScript compiler (`tsgo`), built with `Golang`.
The TypeScript compiler (`tsc`) is itself written in TypeScript, and while this "dogfooding" approach has worked well
for small to medium projects, it has always struggled with performance at scale. Its reliance on a single-threaded event
loop limits compilation speed, making large projects sluggish.

With `tsgo`, Microsoft aims to remove these bottlenecks by porting the compiler and tools in a compiled
language. The results? Up to **10x faster compilation**, **substantially reduced memory usage**, and far better
scalability for massive TypeScript projects. If you spend time in JetBrains IDEs (iykwim), you'll probably notice
snappier startup times too :wink:.

For instance, `tsgo` cuts VS Code's compilation time from 77.8s to just 7.5s - a staggering **10.4x** speedup. Here's
how other popular projects compare -

| Project                | LOC       | `tsc` | `tsgo` | Speedup |
|------------------------|-----------|-------|--------|---------|
| VS Code                | 1,505,000 | 77.8s | 7.5s   | 10.4x   |
| Playwright             | 356,000   | 11.1s | 1.1s   | 10.1x   |
| TypeORM                | 270,000   | 17.5s | 1.3s   | 13.5x   |
| date-fns               | 104,000   | 6.5s  | 0.7s   | 9.5x    |
| tRPC (server + client) | 18,000    | 5.5s  | 0.6s   | 9.1x    |
| rxjs (observable)      | 2,100     | 1.1s  | 0.1s   | 11.0x   |

These numbers highlight a fundamental shift in TypeScript development; dramatically faster builds and smoother
workflows.

---

Beyond raw speed, `tsgo` substantially reduces memory usage, making it more efficient for large-scale projects.
Developers using `IntelliSense` will also notice major improvements in responsiveness, as type checking becomes
significantly snappier.

Switching to `tsgo` is as simple as updating your build script -

```
{
  "scripts": {
    "build": "tsc -p tsconfig.json" //  [!code --]
    "build": "tsgo -p tsconfig.json" // [!code ++]
  }
}
```

With **TypeScript 7.0**, `tsgo` will become the fully native toolchain, while **TypeScript 6.x** remains an option for
compatibility.

---

### But... why Golang?

> [!IMPORTANT] A burning question
> Why not `Rust`, `Zig`, or something from the `C-family`?

The answer is simple - `Golang` is structurally close to the existing TypeScript codebase, so the team could port it
file by file instead of rewriting it. It also compiles into a fast, standalone binary.

More importantly, Golang **excels at `concurrency`**. Its lightweight **goroutines** and built-in
**parallel execution model** making it ideal for compilers, efficiently handling tasks without complex threading.

---

### What does this mean for us at Appwrite?

At `tooltip(
   text: Appwrite,
   content: Appwrite is an open-source backend platform for building modern apps. 
   <a href="https://appwrite.io?utm_source=itznotabug.dev&utm_medium=typescript-on-golang" target="_blank">Try Appwrite Cloud.</a>
)`, we use `TypeScript` extensively on our frontend, alongside `Svelte` for the UI. While our codebase isn't
particularly TypeScript-heavy, `tsgo` could still offer noticeable performance benefits.

| Project | LOC     | `Svelte` | `TypeScript` | `Other` | TS LOC            |
|---------|---------|----------|--------------|---------|-------------------|
| Console | 71,143  | 83.2%    | 16.3%        | 0.5%    | <u>**11,596**</u> |
| Website | 176,958 | 83.6%    | 9.1%         | 7.3%    | <u>**16,103**</u> |

Given our relatively lean TypeScript footprint, the impact might not be as dramatic as in larger codebases. Still, any
boost in build times and developer experience is always a win.

---

### Official Announcement

<YoutubeViewer videoId="pNlq-EVld70" />