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 Remix app's dependencies
warm cache · seconds (lower is better)
| runtime | version | install time | peak RAM |
|---|---|---|---|
| bun | 360.5 s | ||
| pnpm | 6,440 s | ||
| npm | 10,577 s | ||
| yarn | 12,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.