April 13, 2026

Rust + TypeScript = Drama Llama

What We Learned Building a Rust Runtime for TypeScript

Rust under the hood, TS on top: speed hype, confused devs, and a rage‑clicked logo

TLDR: Encore built a Rust engine under TypeScript to fix Node’s single‑thread bottleneck and avoid slow, messy two‑process setups. The crowd split between speed hype and “wait, explain this” confusion, with bonus outrage at a quirky right‑click logo and choppy homepage — proof tech wins need clear UX too.

Encore skipped the easy route and built a Rust engine to power TypeScript apps, moving the heavy lifting (web requests, databases, events, tracing) off Node’s single thread and onto fast, multi‑threaded Rust. They tried a two‑process setup and ditched it after tests showed extra delay and extra chaos. The twisty details (native bindings, not WebAssembly; an API gateway; lots of infrastructure tools) made the crowd noisy — and hilarious.

The top vibe? Speed lust vs. clarity crisis. One camp cheers the benchmarks and even detours to hype Elysia as “flipping fast,” while skeptics ask, “So… what did you actually build?” Is it a runtime, a compiler, or just Rust doing the heavy lifting behind Node? Meanwhile, a very real-world roast erupts: someone right‑clicks the site logo to open the homepage in a new tab and gets a weird download menu instead. Rage‑clicks ensue.

Rust diehards drop memes about avoiding “generics hell” and going full “traitsmaxxing,” while practical folks beg for a simple diagram: Node runs your app code; Rust runs the engine; no wasm, just native bindings. Big picture: bold move to a Rust core that could serve many languages — but the docs and the homepage scroll? Yeah, those sparked just as much heat as the tech itself.

Key Points

  • Encore built a new Rust-based runtime to support TypeScript, instead of a TypeScript runtime or a Go sidecar.
  • Design goals included a reusable Rust core for future language support and multi-threaded infrastructure via tokio beyond Node.js’s single-threaded limits.
  • A Go sidecar prototype incurred 2–4 ms/request overhead from IPC and added operational complexity, leading to an in-process design.
  • The released system (issue #1073) comprises three Rust crates: core runtime, JavaScript N-API bindings, and a TypeScript parser.
  • The core runtime organizes infrastructure into managers that lazily initialize from protobuf configs, with application metadata generated at compile time by the TypeScript parser.

Hottest takes

"flipping fast as frell..." — jauntywundrkind
"probably the wrong choice" — caditinpiscinam
"I can't seem to tell exactly what they built" — owenpalmer
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.