Writing

Why I keep Bun in the toolchain

The public side of this hub is a SvelteKit app deployed on Vercel, with Bun as the package manager and local build tool. People ask if that is a stunt. It is not. It is the boring choice for the constraints I have.

The constraints

One public site, a steady-state budget near zero, and a hard requirement that the content routes stay fast on every deploy. Phase 1 is independently launchable, which means the front end has to stand on its own without leaning on the API or a database on the request path. Vercel handles the public edge and preview pipeline; Bun keeps the local and CI toolchain small.

What Bun buys me

Fast installs and scripts. The monorepo has Rust, SvelteKit, generated API types, and content ingestion in one place. Bun keeps workspace installs and script fan-out quick enough that running the full check locally still feels normal.

One frontend toolchain. Bun is the package manager and script runner. Fewer tools means fewer version skews to reconcile and fewer things in the CI image.

Native TypeScript. Build and tooling scripts can run as .ts without a separate transpile step, which keeps the infra glue honest and close to the app's types.

The caveats I actually hit

This isn't a free lunch, and pretending otherwise is how you get paged.

  • Adapter, not magic. The public site uses SvelteKit's Vercel adapter. If a future backend needs a long-running origin, it should be treated as a separate operational surface rather than smuggled into the content hub.
  • Library edge cases. A handful of dependencies assume Node-specific APIs. The fix is almost always to check before adopting, not after. I keep the dependency surface deliberately small so there's less to verify.
  • Pin the version. I pin Bun (currently 1.3.9) across dev and CI so "works on my machine" and "works in the build" are the same machine, logically.

Would I recommend it everywhere?

No. If you have a large team and a Node-shaped operational playbook, the switching cost may not pay back. For a small, fast, cost-bounded personal system where one person owns the whole stack, Bun removes more friction than it adds. That's the whole bar.