Skip to content
Bun
Bun
Core Commands

bun update

Update dependencies to latest versions

To upgrade your Bun CLI version, see bun upgrade.

To update all dependencies to the latest version:

terminal
bun update

To update a specific dependency to the latest version:

terminal
bun update [package]

--interactive

Use the --interactive flag to choose which packages to update:

terminal
bun update --interactive
bun update -i

The flag opens a terminal interface that lists every outdated package with its current and target versions.

Interactive Interface

The interface displays packages grouped by dependency type:

? Select packages to update - Space to toggle, Enter to confirm, a to select all, n to select none, i to invert, l to toggle latest

  dependencies                Current  Target   Latest
    □ react                   17.0.2   18.2.0   18.3.1
    □ lodash                  4.17.20  4.17.21  4.17.21

  devDependencies             Current  Target   Latest
    □ typescript              4.8.0    5.0.0    5.3.3
    □ @types/node             16.11.7  18.0.0   20.11.5

  optionalDependencies        Current  Target   Latest
    □ some-optional-package   1.0.0    1.1.0    1.2.0

Sections:

  • Packages are grouped under section headers: dependencies, devDependencies, peerDependencies, optionalDependencies
  • Each section shows column headers aligned with the package data

Columns:

  • Package: Package name (may have a suffix such as dev, peer, or optional)
  • Current: Currently installed version
  • Target: Version that would be installed (respects semver constraints)
  • Latest: Latest available version

Keyboard Controls

Selection:

  • Space: Toggle package selection
  • Enter: Confirm selections and update
  • a/A: Select all packages
  • n/N: Select none
  • i/I: Invert selection

Navigation:

  • ↑/↓ Arrow keys or j/k: Move cursor
  • l/L: Toggle between target and latest version for current package

Exit:

  • Ctrl+C or Ctrl+D: Cancel without updating

Visual Indicators

  • ■ Selected packages (will be updated)
  • □ Unselected packages
  • ❯ Current cursor position
  • Colors: Red (major), yellow (minor), green (patch) version changes
  • Underlined: Currently selected update target

Package Grouping

Packages are organized in sections by dependency type:

  • dependencies - Regular runtime dependencies
  • devDependencies - Development dependencies
  • peerDependencies - Peer dependencies
  • optionalDependencies - Optional dependencies

Within each section, individual packages may have a suffix ( dev, peer, optional).

--recursive

Use the --recursive flag with --interactive to update dependencies across all workspaces in a monorepo:

terminal
bun update --interactive --recursive
bun update -i -r

With --recursive, the interface adds a “Workspace” column showing which workspace each dependency belongs to.

--latest

By default, bun update updates each dependency to the latest version that satisfies the version range in your package.json.

To update to the latest version regardless of whether it satisfies that range, use the --latest flag:

terminal
bun update --latest

In interactive mode, press l to toggle a package between its target version (respecting semver) and the latest version.

For example, with the following package.json:

package.json
{
  "dependencies": {
    "react": "^17.0.2"
  }
}
  • bun update would update to a version that matches 17.x.
  • bun update --latest would update to a version that matches 18.x or later.

CLI Usage

terminal
bun update <name>@<version>

Update Strategy

--forceboolean

Always request the latest versions from the registry & reinstall all dependencies. Alias: -f

--latestboolean

Update packages to their latest versions

Dependency Scope

--productionboolean

Don’t install devDependencies. Alias: -p

--globalboolean

Install globally. Alias: -g

--omitstring

Exclude dev, optional, or peer dependencies from install

Project File Management

--yarnboolean

Write a yarn.lock file (yarn v1). Alias: -y

--no-saveboolean

Don’t update package.json or save a lockfile

--savebooleandefault: true

Save to package.json (true by default)

--frozen-lockfileboolean

Disallow changes to lockfile

--save-text-lockfileboolean

Save a text-based lockfile

--lockfile-onlyboolean

Generate a lockfile without installing dependencies

Network & Registry

--castring

Provide a Certificate Authority signing certificate

--cafilestring

Same as --ca, but as a file path to the certificate

--registrystring

Use a specific registry by default, overriding .npmrc, bunfig.toml and environment variables

--network-concurrencynumberdefault: 48

Maximum number of concurrent network requests (default 48)

Caching

--cache-dirstring

Store & load cached data from a specific directory path

--no-cacheboolean

Ignore manifest cache entirely

Output & Logging

--silentboolean

Don’t log anything

--verboseboolean

Excessively verbose logging

--no-progressboolean

Disable the progress bar

--no-summaryboolean

Don’t print a summary

Script Execution

--ignore-scriptsboolean

Skip lifecycle scripts in the project’s package.json (dependency scripts are never run)

--concurrent-scriptsnumber

Maximum number of concurrent jobs for lifecycle scripts (default: 2x CPU cores)

Installation Controls

--no-verifyboolean

Skip verifying integrity of newly downloaded packages

--trustboolean

Add to trustedDependencies in the project’s package.json and install the package(s)

--backendstringdefault: clonefile

Platform-specific optimizations for installing dependencies. Possible values: clonefile (default), hardlink, symlink, copyfile

General & Environment

--configstring

Specify path to config file (bunfig.toml). Alias: -c

--dry-runboolean

Don’t install anything

--cwdstring

Set a specific cwd

--helpboolean

Print this help menu. Alias: -h