Package manager
bun install
The npm-compatible package manager that finishes first.
It reads your package.json, migrates your lockfile, and installs from a global cache. Keep running your app on Node.js if you like — installs, CI and monorepo workflows just get quicker.
curl -fsSL https://bun.sh/install | bashInstalling a Next.js app
warm cache · seconds (lower is better)
| runtime | version | install time | peak RAM |
|---|---|---|---|
| bun | v1.4 | 210 s | 12 MB |
| yarn | v1.22.22 | 1,760 s | 205 MB |
| pnpm | v11.21.0 | 1,920 s | 1.4 GB |
| npm | v12.0.2 | 4,450 s | 698 MB |
bun install
The fastest install in every situation you actually hit.
Cold cache, warm cache, CI, a no-op reinstall — one T3-stack Next.js app, 25 direct dependencies, ~220 packages in the lockfile, measured six ways against npm, pnpm and yarn at their defaults.
Reads your project as-is
Everything you rely on
Linux x64, EPYC 9R14 · bench/install in oven-sh/bun · each package manager with its own lockfile and node_modules, state prepared per scenario before every run, every package manager at defaults · medians of 3, peak memory is the largest of the 3 runsreproduce the benchmark →
| scenario | bun | npm | pnpm | yarn |
|---|---|---|---|---|
| First install, ever (no cache · no lockfile · no node_modules) | 1.41s | 18.12s | 13.49s | 20.51s |
| Fresh checkout, warm cache (no lockfile yet · every package already in the cache) | 251ms | 7.61s | 2.38s | 1.83s |
| CI without a cache (lockfile committed · every tarball fetched from the registry) | 951ms | 4.92s | 11.69s | 17.61s |
| CI with a warm cache (lockfile committed · dependency cache restored · node_modules rebuilt) | 210ms | 4.45s | 1.92s | 1.76s |
| node_modules there, cache gone (already installed · only the dependency cache was cleared) | 12ms | 384ms | 399ms | 212ms |
| Everything already up to date (the reinstall after nothing changed) | 12ms | 337ms | 400ms | 211ms |
How it's fast
Designed for the way you actually install
Works with Node.js or Bun
A standalone tool: use it in any project with a package.json — workspaces, git/http/tarball dependencies, custom registries and all.
A global install cache
Packages download once into a global cache. Future installs check the cache first and copy with the fastest system calls your OS offers — dramatically faster than symlink farms.
Workspaces & catalogs
Reads the workspaces key and installs every package in one pass. Catalogs pin one version of a dependency across the whole monorepo.
A familiar CLI
bun add, bun remove, bun update -i, bun outdated, bun why — everything you expect from npm, pnpm or yarn.
Secure by default
Bun doesn't run arbitrary postinstall scripts. Popular packages are pre-verified; allow-list others with trustedDependencies. bun audit and minimum-release-age are built in.
A lockfile you can read
bun.lock is plain text: reviewable in PRs, mergeable by git, and migrated automatically from package-lock, yarn.lock or pnpm-lock.