Bun v1.3.2 Bun version 1.3.2 fixes 287 issues and restores hoisted installs as the default for existing workspaces, while keeping isolated installs as the default for new projects. The update introduces a lockfile `configVersion` to stabilize install defaults and prevent breaking changes during upgrades, and adds CPU profiling support via the `--cpu-prof` flag. Additionally, `bun install` is now faster for projects using popular libraries like esbuild and sharp, and the `bun:test` framework includes a new `onTestFinished` hook. This release fixes 287 issues addressing 324 👍 . To install Bun curl -fsSL https://bun.sh/install | bash npm install -g bun powershell -c "irm bun.sh/install.ps1|iex" scoop install bun brew tap oven-sh/bun brew install bun docker pull oven/bun docker run --rm --init --ulimit memlock=-1:-1 oven/bun To upgrade Bun bun upgrade Hoisted installs restored as default hoisted-installs-restored-as-default In Bun 1.3.0, we made isolated installs the default for workspaces. While this eliminated phantom dependencies and made installs faster and more predictable, it also introduced some issues for existing monorepos that relied on shared dependencies. In Bun 1.3.2, Isolated installs are now only the default for new projects, while existing workspaces keep using hoisted installs unless explicitly configured. To keep using isolated installs in your existing workspaces/monorepos : install Explicitly set the linker to isolated linker = "isolated" Or use the --linker=isolated flag: bun install --linker=isolated New projects using workspaces or those without a lockfile continue to use isolated installs as the default. configVersion | Using workspaces? | Default Linker | |---|---|---| 1 | ✅ | isolated | 1 | ❌ | hoisted | 0 | ✅ | hoisted | 0 | ❌ | hoisted | Lockfile lockfile-configversion-stabilizes-install-defaults configVersion stabilizes install defaults configVersion stabilizes install defaultsFlip-flopping between isolated and hoisted linker is not good for our users. Collectively, breaking changes are a waste of everyone's time. To make future bun upgrades easier, bun install now writes a configVersion to bun.lock / bun.lockb . This lets us change default configuration in the future without impacting existing projects. Here's how it works: New projects : Default to configVersion = 1 v1 . In workspaces, v1 uses the isolated linker by default; otherwise it uses hoisted linking. Existing Bun projects : If your existing lockfile doesn't have a version yet, Bun sets configVersion = 0 v0 when you run bun install , preserving the previous hoisted linker default. Migrations from other package managers :- From pnpm: configVersion = 1 v1 - From npm or yarn: configVersion = 0 v0 - From pnpm: // New projects: "configVersion": 1, // Existing projects without a version after running bun install : "configVersion": 0, Faster faster-bun-install bun install bun install Projects that depend on popular libraries like esbuild or sharp install faster. In the next version of Bun — Jarred Sumner @jarredsumner bun install gets smarter about choosing which & when postinstall scripts run. In a repo with next.js & vite, bun install gets 6x faster. pic.twitter.com/tJfJUD0pF9 November 1, 2025 To disable Bun's built-in defaults via environment variables: BUN FEATURE FLAG DISABLE NATIVE DEPENDENCY LINKER=1 disables native binlinking BUN FEATURE FLAG DISABLE IGNORE SCRIPTS=1 disables script skipping CPU profiling with cpu-profiling-with-cpu-prof --cpu-prof --cpu-prof Bun now supports CPU profiling for any script using the --cpu-prof flag. This records detailed information about how much time your program spends in each function, helping you identify performance bottlenecks and optimize hot paths. In the next version of Bun — Jarred Sumner @jarredsumner bun --cpu-prof