What is Bun?
Bun is a new JavaScript runtime built from scratch to serve the modern JavaScript ecosystem, with three major design goals:
- Fast startup. In edge computing environments, reducing cold start times is critical.
- Fast running performance. Bun extends JavaScriptCore, the performance-minded JS engine built for Safari.
- Cohesive DX. Bun is a complete toolkit for building JavaScript apps, including a bundler, transpiler, and package manager.
Bun is designed as a drop-in replacement for Node.js. Use it to run your current JavaScript & TypeScript apps or scripts — on your local computer, server or on the edge. Bun natively implements hundreds of Node.js and Web APIs, including ~90% of Node-API functions (native modules), fs
, path
, Buffer
and more.
The goal of Bun is to run most of the world's JavaScript outside of browsers, bringing performance and complexity enhancements to your future infrastructure, as well as developer productivity through better, simpler tooling.
Batteries included
- Implements Web APIs like fetch WebSocket and ReadableStream
- Implements Node's node_modules resolution algorithm, so you can use npm packages in Bun. Both ESM and CommonJS are supported; internally Bun uses ESM.
- Transpiles every file, so TypeScript and JSX just work.
- Supports
"paths"
,"jsxImportSource"
and more from tsconfig.json files. - Exposes Bun.Transpiler—Bun's JSX & TypeScript transpiler—as an API.
- Uses the fastest system calls available with Bun.write to write, copy, pipe, send, and clone files.
- Loads environment variables from .env files automatically—no more
require("dotenv").config()
. - Ships with a fast SQLite3 client built-in bun:sqlite.
- Implements most of Node-API so many native Node.js modules just work.
- Provides a low-overhead foreign function interface bun:ffi for calling native code from JavaScript.
- Supports a growing list of Node.js core modules like node:fs and node:path, along with globals like Buffer and process.
How does Bun work?
Bun uses the JavaScriptCore engine, which tends to start and perform a little faster than more traditional choices like V8. Bun is written in , a low-level programming language with manual memory management.
Most of Bun is written from scratch including the JSX/TypeScript transpiler, npm client, bundler, SQLite client, HTTP client, WebSocket client and more.
Why is Bun fast?
In one word: obsession. An enormous amount of time spent profiling, benchmarking and optimizing things. The answer is different for every part of Bun, but one general theme: 's low-level control over memory and lack of hidden control flow makes it much simpler to write fast software. Sponsor the Zig Software Foundation.
Getting started
To install Bun, run this install script in your terminal. It downloads Bun from GitHub.
curl -fsSL https://bun.sh/install | bash
Bun's HTTP server is built on web standards like Request and Response
// http.js
export default {
port: 3000,
fetch(request) {
return new Response("Welcome to Bun!");
},
};
Run it with Bun:
bun run http.js
Then open http://localhost:3000 in your browser.
See more examples and check out the docs. If you have any questions or want help, join Bun's Discord.
Bun CLI
The same command for running JavaScript & TypeScript files with Bun's JavaScript runtime also runs package.json "scripts"
. Bun runs package.json scripts 30x faster than npm run
.
Replace npm run
with bun run
and save 160ms on every run.
An incredibly fast JavaScript bundler & minifier built into Bun. Use it to build frontend apps from the command line or as an API. Supports esbuild plugins.
Replace webpack
with bun build
and get up to 200x faster builds
bun install
is an npm-compatible package manager. You probably will be surprised by how much faster copying files can get. Bun uses the fastest system calls available to copy files.
Replace yarn
with bun install
and get 20x faster package installs.
bun build
is a fast native bundler for JavaScript and TypeScript. It integrates tightly with Bun's runtime & HTTP server, supports a fast plugin API, and is easily configurable. Read the docs.
Replace esbuild
with bun build
for 75% faster build times.
Auto-install and run an executable from a local or remote npm package.
Replace npx
with bunx
and get 100x faster startup times for local packages.
A Jest-like test runner for JavaScript & TypeScript projects built-in to Bun. You've never seen a JavaScript test runner this fast (or incomplete).
What is the license?
MIT License, excluding dependencies which have various licenses.
How do I see the source code?
Bun is on GitHub.