---
title: "Bun Is a Toolkit, Not Just a Runtime"
description: "Bun packs a runtime, package manager, bundler, and test runner into one binary. Here is how those four parts fit together and where the seams still show."
---

# Bun Is a Toolkit, Not Just a Runtime

**Type:** [What is it?](https://yomu.fyi/visual-explainers/category/what-is-it.md)

![A diagram showing Bun as one binary connected to four parts — runtime, package manager, bundler, and test runner — with bands listing what each replaces, why it travels, and which seams to check.](https://yomufyi.s3.us-east-1.amazonaws.com/visual-explainers/7ee13ccb-ab9f-4812-8f14-cbf708440ce0/image-938d1464-f9ca-4f6a-9bcb-1e6975aae26a.webp)

> Bun packs a runtime, package manager, bundler, and test runner into one binary. Here is how those four parts fit together and where the seams still show.

## Explanation

Bun is an all-in-one JavaScript toolkit: a single binary that provides a runtime, a package manager, a bundler, and a test runner instead of four tools stitched into a project. Its runtime targets Node.js API compatibility, which is what lets existing applications move onto it without a rewrite, while the same executable covers install, build, and test steps in a workflow. The trade-off is that collapsing layers moves the friction to the seams, where compatibility gaps and beta edges surface, so the useful mental model is knowing which part you are depending on and what it replaces.

## FAQ

### If Bun replaces npm, Node, and Jest, what actually changes in my project?

The tool count drops, not the concepts. Bun ships a runtime, package manager, bundler, and test runner in one binary, so install, build, and test can run through the same executable. Your package.json and Node.js APIs still matter because Bun targets Node compatibility, so migration is mostly about verifying the edges rather than rewriting code.

### What breaks first when moving a Node.js app onto Bun?

Compatibility gaps tend to show up in specific APIs and CLI flags rather than across the whole app. Fly.io's beta support called out issues such as bun install lacking --prune, unsupported throwIfNoEntry in fs.statSync, and readline-based programs failing to exit. Test your install, filesystem, and interactive paths first.

### Does one binary mean all my runtime work should run in one process?

No. Bundling developer tools into a single binary does not mean bundling every runtime job into one machine. A Fly.io pattern keeps heavy work like headless-Chrome PDF rendering on a separate appliance machine that wakes on demand, so the main server stays lean while Bun stays a toolkit.

**Tags:** [Bun](https://yomu.fyi/topic/bun.md), [Deployment](https://yomu.fyi/topic/deployment.md), [Developer Experience](https://yomu.fyi/topic/developer-experience.md), [Node.js](https://yomu.fyi/topic/node-js.md), [Performance](https://yomu.fyi/topic/performance.md), [TypeScript](https://yomu.fyi/topic/typescript.md)

## Related reading

### [Supabase Select 2026 Recap](https://yomu.fyi/post/supabase-select-2026-recap.md)
- Company: [Supabase](https://yomu.fyi/company/supabase.md)
- Author: oli\_rice, inian, jonny
- Published: Oct 2, 2026
- Type: Announcement

Supabase announced a code-first approach at its Select 2026 event, enabling developers to store schema and configuration in code so coding agents can set up and modify projects end to end. Local Supabase now runs as native processes without Docker, allowing multiple instances per directory and compatibility with sandboxes like Claude Code. A new MCP server lets application users connect their own agents, authenticating through existing Auth flows and enforcing row-level security on every tool call. Operational tools include Health Check Advisors for error rates, Database Connections for session management, Explorer notebooks for unified SQL and log queries, and query\_logs for agent monitoring. Scaling features encompass Multigres for multi-node Postgres high availability, OrioleDB to avoid table bloat and VACUUM, Supabase Pipelines for near real-time data streaming to analytics platforms, and dbarena for transparent benchmarks.


### [Supabase is acquiring Turso](https://yomu.fyi/post/supabase-is-acquiring-turso.md)
- Company: [Supabase](https://yomu.fyi/company/supabase.md)
- Author: paul\_copplestone
- Published: Oct 2, 2026
- Type: Announcement

Supabase is acquiring Turso to evolve database infrastructure for the massive scale of AI agent-created databases. Supabase already launches over one million databases per week and expects demand to outpace capacity as agents build more software. Turso rebuilt SQLite in Rust, creating a cloud platform where a single server manages millions of databases, loading them on demand and suspending them when idle, avoiding dedicated machines for small workloads. This architecture suits agent workloads needing cheap, on-demand databases, while Postgres remains the path for scaling to production; Turso will continue operating independently with a clear path into Supabase’s ecosystem, and for existing users nothing changes. Glauber Costa will lead the agentic infrastructure effort, and the combined mission is to store the world’s data as agents create more of it.


### [Anthropic acquires Bun as Claude Code hits $1B](https://yomu.fyi/post/anthropic-acquires-bun-as-claude-code-hits-1b.md)
- Company: [Anthropic](https://yomu.fyi/company/anthropic.md)
- Published: Sep 10, 2026
- Type: Announcement

Anthropic announced the acquisition of Bun, a JavaScript runtime, as Claude Code reached $1 billion in run-rate revenue six months after becoming publicly available. Bun is an all-in-one toolkit that combines a runtime, package manager, bundler, and test runner, and the post says its focus on speed, reliability, and developer experience has made it important to Claude Code’s infrastructure. The companies had collaborated for months, with Bun helping scale Claude Code and contributing to its native installer; Anthropic says the acquisition will bring faster performance, improved stability, and new capabilities. Bun will remain open source and MIT-licensed, while Anthropic continues investing in its JavaScript and TypeScript tooling, which has more than 7 million monthly downloads and over 82,000 GitHub stars.


### [Print on Demand](https://yomu.fyi/post/print-on-demand.md)
- Company: [Fly.io](https://yomu.fyi/company/fly-io.md)
- Published: Nov 29, 2023
- Type: Problem & solution

Print on Demand presents a resource-conscious alternative to scaling an application by separating PDF generation from the main server. The post explains how a Fly.io PDF appliance uses Fly-Replay to route a PDF request to a machine running headless Chrome, which requests the original page without its “.pdf” extension and converts the returned HTML into a PDF. Each machine reuses one Chrome instance across requests, while auto\_stop\_machines allows idle machines to stop and restart on demand. Integration requires cloning the GitHub repository, creating and configuring an app, deploying it, and returning a fly-replay response header for PDF-directed requests. The extracted production code is packaged for deployment with existing applications, supports session, cookies, and basic authentication through passed-back HTTP headers, and can serve applications using different languages and frameworks.


### [Fly.io ❤️  Bun](https://yomu.fyi/post/fly-io-bun.md)
- Company: [Fly.io](https://yomu.fyi/company/fly-io.md)
- Published: Jul 11, 2023
- Type: Announcement

Fly.io is preparing support for Bun as Bun 1.0 approaches, expanding beyond its ongoing Node.js work because Bun aims for complete Node.js API compatibility. With flyctl 0.1.54 and @flydotio/dockerfile 0.3.3, users can launch and deploy Bun applications through fly launch and fly deploy if Bun 0.5.3 or later is installed and package.json includes an eligible start, module/type, or main configuration. The post says applications following Bun’s Quickstart and Fly’s hands-on walkthrough can be deployed, and provides a sample. Support is beta, with noted compatibility issues including bun install lacking --prune, unsupported throwIfNoEntry in fs.statSync, and readline-based programs failing to exit; shared Dockerfile generation means fixes for either runtime generally benefit both.
