Cloudflare and VoidZero unveil tsrs, a Rust port of TypeScript

Cloudflare and VoidZero have announced tsrs, a Rust port of the TypeScript compiler. They are building it with Max Schwenk of Owner.com, in what they call close collaboration with the TypeScript team, and it is being incubated as part of the Oxc JavaScript compiler toolchain. The stated goal is to cut the time developers spend waiting for code to be checked, and to make TypeScript lean enough to run complete development environments in more places, including the browser.
The authors stress that this is not a fork. In their words, the TypeScript team should remain in full control of the language's design and direction. They argue that the team may spend years exploring options and building prototypes before settling on an implementation, and that a Rust port has to follow those decisions closely or it will eventually fall apart and become incompatible.
The headline numbers come from early benchmarks: tsrs is up to 8x faster and uses about 70% less memory than TypeScript 7.0 when both use the same number of type check workers. The post also says TypeScript 7.1 beta is already up to 2.5x faster than 7.0, and that some of those optimizations were upstreamed from tsrs. The authors say they worked with the TypeScript team so the benchmarks compare the same configuration, in contrast to other recent TypeScript-port benchmarks that often use larger machine types and different options than TypeScript's defaults. By default tsrs ships with an adaptive configuration, dependent on the machine type, that uses more memory but is even faster. The benchmark charts are not reproduced in the text, so no figures are given for that default mode.
An experimental release is on npm: install the tsrs package, or run it with npx tsrs. It aims to be a faithful port of TypeScript.
On timing, the authors say many attempts have been made to port TypeScript to other languages, and only one succeeded: the TypeScript team's port from JavaScript to Go. Now, they write, frontier AI models can do large-scale ports almost independently in a matter of days, and they have seen slopforks, faithful ports and completely re-architected versions of TypeScript in Rust or C++. They read that as clear demand for an even faster TypeScript.
On why Rust when the Go port is already, as they put it in a hypothetical objection, 10x faster and far more memory efficient than the earlier TypeScript-written version: the case is WebAssembly. Compiling Go to Wasm means compiling Go's garbage collector with it, while Rust's memory management model allows straightforward memory interactions between a Wasm guest and host. Cloudflare announced native Rust support in Workers, via a new Emscripten target for wasm-bindgen, a few weeks earlier. A small memory footprint matters when build and deployment systems run in tight loops on Workers. The authors say it makes it possible to run a development toolchain end to end in a fully sandboxed environment on Cloudflare, or client-side in a browser, on an embedded device or in an IoT application, which they link to use with agents.
Maintenance has two parts. First, Cloudflare is working with Theo Browne to merge tsc-rs and tsrs into one package that supports all of TypeScript's features, including Language Server Protocol (LSP) and content mappers. Second, it will reuse the process it uses to keep Vinext in sync with Next.js: each morning an agent reviews upstream changes, fetches diffs and opens tracking issues; each night the compatibility matrix is regenerated by running the Next.js test suite against Vinext; and agents can identify a change across both codebases, build a reproduction, port tests and propose a fix. For tsrs, they promise extreme care not to introduce behaviour that diverges from upstream TypeScript, and to try to contribute performance improvements back to the TypeScript Go codebase.
There are known differences from upstream today, for example the order in which diagnostics are printed. The aim is to reduce them to a minimum by the stable release. Looking ahead, Cloudflare says it is excited to try deeper tsrs integrations in its stack, such as type-aware lint rules in Oxlint, and wants tsrs run as a healthy open source project without getting in the way of TypeScript itself. The Oxc team has already begun refactoring the codebase to make it faster, use less memory and be maintainable. The authors add that the TypeScript team is experimenting with memory and performance improvements for tsc.
Key facts
- Cloudflare and VoidZero, with Max Schwenk of Owner.com, announced tsrs, a Rust port of the TypeScript compiler built in collaboration with the TypeScript team and incubated within the Oxc toolchain.
- Early benchmarks claim up to 8x faster and about 70% less memory than TypeScript 7.0 with the same number of type check workers; TypeScript 7.1 beta is said to be up to 2.5x faster than 7.0, partly from optimizations upstreamed from tsrs.
- An experimental release is on npm (npm install tsrs, npx tsrs); known differences from upstream remain, such as the order diagnostics are printed.
- The authors say tsrs is not a fork, and plan to keep it in sync with upstream TypeScript using the same agent-driven process Cloudflare uses for Vinext and Next.js.
- The case for Rust over the TypeScript team's Go port rests on WebAssembly: Go's garbage collector must be compiled into Wasm, while Rust's memory model suits Wasm guest and host interaction.
Why it matters
TypeScript's own move from JavaScript to Go is described in the post as the only successful port of the compiler, and as 10x faster than the earlier version. tsrs is a bid to go further, and the authors say AI models that can do large-scale ports in days have made rival ports common, with slopforks, faithful ports and re-architected versions appearing in Rust and C++. What is new here is that a large infrastructure vendor and the Oxc toolchain team say they are working with the TypeScript team and keeping the language's design in that team's hands. The other pitch is portability: a small memory footprint in Wasm could let full TypeScript toolchains run in browsers, sandboxes and embedded devices.
Who it affects
Developers who wait on type checking in large TypeScript projects are the stated audience. Users of the Oxc and Oxlint tooling are directly in scope, since tsrs is incubated there and Cloudflare mentions type-aware lint rules in Oxlint as an integration target. Teams that run builds inside Cloudflare Workers, browsers or other constrained environments are the ones the Wasm argument is aimed at. The TypeScript team and the maintainers of the competing tsc-rs, which Cloudflare is working with Theo Browne to merge with tsrs, are also affected.
How to use it
Install the experimental release from npm with npm install tsrs, then run it with npx tsrs. By default it ships with an adaptive configuration, dependent on the machine type, that uses more memory but is even faster. For apples-to-apples comparison with TypeScript's defaults, the published numbers use the same number of type check workers as TypeScript 7.0. Expect some differences from upstream behaviour, such as the order of printed diagnostics, until a stable release.
How solid is it
The performance figures are early benchmarks published by the same companies building tsrs, and the charts themselves are not part of the text. The headline claims are maximums: up to 8x faster, about 70% less memory, both measured against TypeScript 7.0 with the same number of type check workers. The authors say they agreed the benchmark configuration with the TypeScript team. The source gives no quote or statement from the TypeScript team itself, no tsrs version number, license or repository URL, and no timeline for a stable release.
Risks and caveats
A Rust port must track upstream decisions closely or it becomes incompatible, as the authors themselves say, so its value depends on staying in sync. The plan leans on an agent-driven sync process modelled on Vinext and Next.js, and the authors promise extreme care to avoid diverging behaviour. Known differences exist today, and the release is experimental. The post is a vendor announcement with benchmarks that independent parties have not yet reproduced in this text. The source does not say which AI models or how much effort were used to build tsrs.
“To be clear, we are not forking TypeScript.”
— Cloudflare blog, introducing tsrs