← All articles

Bun 2.0 stable: what really changes, and why we're trying it in production

03 December 20252 min read

Two years after 1.0, Bun reaches 2.0 with Node ≥ 22 parity, native deploy and polished tooling.

Bun 2.0 went stable in late 2025. Two years after 1.0, the project grew from "fast demo" to a runtime we actually build production on.

What changes from 1.x

  • Node 22 compatibility: near-total API parity. worker_threads, cluster, fs.promises all supported.
  • Bun Deploy (preview): native serverless hosting for Bun, still limited but promising.
  • Bun.serve() with native HTTP/2 and HTTP/3.
  • Native SQLite ultra-fast — great for CLIs and embedded apps.
  • WebSocket pub/sub built-in with clustering.

Real performance

On our workloads:

  • HTTP server: +35% req/s Node 22 → Bun 2.0.
  • Cold start: -60% on serverless functions.
  • Test suite: 3-5x faster (always wins).

What we already migrated

  • Internal CLI tools: all on Bun.
  • Test runner: all on bun test (Vitest-compatible).
  • CI build steps: bun install default.

What we haven't migrated

  • Next.js apps in production: support improved, but some Next 15 edge cases still behave differently.
  • Apps with specific native deps (ssh2, native sqlite3): test individually.
  • Vercel functions: Vercel has a Bun preview, not GA yet.

Verdict

Bun 2.0 is the first version we can propose as a serious choice for new projects. Not yet our default (Node 22 LTS stays safer for projects lasting 5+ years), but for CLIs, simple microservices, edge functions: Bun wins.