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 | bash
View install script ↗

Installing a Remix app's dependencies

warm cache · seconds (lower is better)

bun
0.36s
pnpm
6.44s
npm
10.58s
yarn
12.08s
Linux x64 · installing dependencies from cache for a Remix appreproduce
Installing a Remix app's dependencies — Linux x64 · installing dependencies from cache for a Remix app
runtimeversioninstall timepeak RAM
bun360.5 s
pnpm6,440 s
npm10,577 s
yarn12,078 s

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.