Why Bun?.
Every runtime decision is a bet. Here's why I chose Bun for every Circus backend service — and what it's been like running it.

When I started building Circus, the question wasn’t “should I use Node?” — it was “do I have a reason not to?” Bun gave me one.
What Bun is
- 4× faster cold starts than Node.js — processes start and restart without noticeable blips
- Native TypeScript and JSX — run
.ts,.tsx,.jsxdirectly; no transpile step, nots-node - ESM and CommonJS — fully compatible with both; the npm ecosystem just works
- Web-standard APIs —
fetch,WebSocket,ReadableStreambuilt in, powered by JavaScriptCore (Safari’s engine) - Node.js compatible —
process,Buffer,path,fs,httpall work as expected
Fast
Bun’s startup time is consistently under 20ms on our services. That means restarts during deploys don’t cause noticeable blips in request handling. Package installs are fast too — when you’re cloning a service in CI, Bun’s package manager speed adds up across a fleet.
Cold start time (ms) — lower is better. Source: bun.sh
Bun over time
Bun’s npm weekly downloads have grown from near-zero at launch to millions per week. It’s not a niche pick anymore.
Weekly npm downloads — npmtrends.com, 2022–2026 (approximate).
TypeScript and Bun adoption
Among professional developers, TypeScript is now the default. Bun’s growth tracks alongside it.
Adoption among professional JavaScript/TypeScript developers — Stack Overflow Developer Survey 2024.
Widely used
Bun’s picked up fast. The npm ecosystem is fully compatible, so you’re not giving anything up. Every major cloud platform supports it. The npm ecosystem works without changes. And coding AIs know it deeply — which matters when you’re building fast and relying on AI to keep pace.
Built on Bun
These aren’t hobby projects — they’re the tools serious TypeScript teams use every day:
- Claude Code — Anthropic’s agentic coding CLI; the tool in the Circus dev workflow
- Prisma — the most widely used TypeScript ORM; their CLI and engine tooling run on Bun
- Biome — fast JS/TS formatter and linter, replacing Prettier and ESLint for many teams
In production
All Circus backend services run on Bun. It’s been reliable, the development feedback loop is fast enough that we don’t think about it, and we haven’t had a production incident we could pin on the runtime. That’s the bar.
If you haven’t seen it yet, Fireship’s video is the fastest way to get why Bun is a big deal: