Skip to main content

Bun JavaScript Runtime Complete Guide 2026

Created: March 7, 2026 CalmOps 2 min read

Introduction

Bun is a modern JavaScript runtime that aims to be faster and more efficient than Node.js. Written in Zig, Bun combines a runtime, bundler, test runner, and package manager in one tool. See Javascript Guide for more context. See Javascript Guide for more context.

This guide covers Bun for JavaScript developers in 2026.

What is Bun?

Overview

Bun is designed as an all-in-one JavaScript toolkit:

  • JavaScript runtime (like Node.js)
  • Bundler (like webpack)
  • Test runner (like Jest)
  • Package manager (like npm)

Installation

# Install Bun
curl -fsSL https://bun.sh/install | bash

# Verify installation
bun --version

Bun vs Node.js

Performance Comparison

Startup time:
- Node.js: ~50ms
- Bun: ~5ms ⚡

HTTP throughput:
- Node.js: ~50k req/s
- Bun: ~150k req/s ⚡

Key Differences

Feature Node.js Bun
Engine V8 JavaScriptCore
Language JavaScript Zig
Package Manager npm Built-in
Bundler webpack Built-in
Test Runner Jest/Vitest Built-in

Using Bun

Running Scripts

// hello.js
console.log("Hello from Bun!");

// Run with Bun
bun run hello.js

HTTP Server

const server = Bun.serve({
  port: 3000,
  fetch(request) {
    return new Response("Hello, World!");
  },
});

console.log(`Server running at http://${server.hostname}:${server.port}`);

File Operations

const file = Bun.file("data.json");
const text = await file.text();
const json = await file.json();

// Write file
await Bun.write("output.txt", "Hello!");

Package Management

Install Dependencies

# Install all dependencies
bun install

# Add package
bun add express

# Add dev dependency
bun add -d vitest

Run Scripts

{
  "scripts": {
    "dev": "bun run src/index.js",
    "test": "bun test"
  }
}
bun run dev
bun test

Bun APIs

Fetch API

const response = await fetch("https://api.example.com/data");
const data = await response.json();

WebSocket

const ws = new WebSocket("wss://example.com");

ws.onmessage = (event) => {
  console.log(event.data);
};

SQLite

const db = new Bun.Database("database.sqlite");

db.exec(`
  CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)
`);

db.exec("INSERT INTO users (name) VALUES ('John')");

Testing with Bun

Basic Test

import { test, expect } from "bun:test";

test("2 + 2 equals 4", () => {
  expect(2 + 2).toBe(4);
});

test("async function", async () => {
  const result = await Promise.resolve(42);
  expect(result).toBe(42);
});

Run Tests

bun test
bun test --coverage

Conclusion

Bun offers impressive performance and an all-in-one toolkit. Try it for new projects to experience the speed improvements.

Resources

Comments

Share this article

Scan to read on mobile