bun update
Update dependencies to latest versions
<Note>To upgrade your Bun CLI version, see bun upgrade.</Note>
To update all dependencies to the latest version:
bun update
To update a specific dependency to the latest version:
bun update [package]
--interactive
For a more controlled update experience, use the --interactive flag to select which packages to update:
bun update --interactive
bun update -i
This launches an interactive terminal interface that shows all outdated packages with their current and target versions. You can then select which packages to update.
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 suffix like
dev, peer, optional for clarity)
- 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 additional suffixes ( dev, peer, optional) for extra clarity.
--recursive
Use the --recursive flag with --interactive to update dependencies across all workspaces in a monorepo:
bun update --interactive --recursive
bun update -i -r
This displays an additional "Workspace" column showing which workspace each dependency belongs to.
--latest
By default, bun update will update to the latest version of a dependency that satisfies the version range specified in your package.json.
To update to the latest version, regardless of if it's compatible with the current version range, use the --latest flag:
bun update --latest
In interactive mode, you can toggle individual packages between their target version (respecting semver) and latest version using the l key.
For example, with the following 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
bun update <package> <version>
Update Strategy
<ParamField path="--force" type="boolean">
Always request the latest versions from the registry & reinstall all dependencies. Alias: <code>-f</code>
</ParamField>
<ParamField path="--latest" type="boolean">
Update packages to their latest versions
</ParamField>
Dependency Scope
<ParamField path="--production" type="boolean">
Don't install devDependencies. Alias: <code>-p</code>
</ParamField>
<ParamField path="--global" type="boolean">
Install globally. Alias: <code>-g</code>
</ParamField>
<ParamField path="--omit" type="string">
Exclude <code>dev</code>, <code>optional</code>, or <code>peer</code> dependencies from install
</ParamField>
Project File Management
<ParamField path="--yarn" type="boolean">
Write a <code>yarn.lock</code> file (yarn v1). Alias: <code>-y</code>
</ParamField>
<ParamField path="--no-save" type="boolean">
Don't update <code>package.json</code> or save a lockfile
</ParamField>
<ParamField path="--save" type="boolean" default="true">
Save to <code>package.json</code> (true by default)
</ParamField>
<ParamField path="--frozen-lockfile" type="boolean">
Disallow changes to lockfile
</ParamField>
<ParamField path="--save-text-lockfile" type="boolean">
Save a text-based lockfile
</ParamField>
<ParamField path="--lockfile-only" type="boolean">
Generate a lockfile without installing dependencies
</ParamField>
Network & Registry
<ParamField path="--ca" type="string">
Provide a Certificate Authority signing certificate
</ParamField>
<ParamField path="--cafile" type="string">
Same as <code>--ca</code>, but as a file path to the certificate
</ParamField>
<ParamField path="--registry" type="string">
Use a specific registry by default, overriding <code>.npmrc</code>, <code>bunfig.toml</code> and environment variables
</ParamField>
<ParamField path="--network-concurrency" type="number" default="48">
Maximum number of concurrent network requests (default 48)
</ParamField>
Caching
<ParamField path="--cache-dir" type="string">
Store & load cached data from a specific directory path
</ParamField>
<ParamField path="--no-cache" type="boolean">
Ignore manifest cache entirely
</ParamField>
Output & Logging
<ParamField path="--silent" type="boolean">
Don't log anything
</ParamField>
<ParamField path="--verbose" type="boolean">
Excessively verbose logging
</ParamField>
<ParamField path="--no-progress" type="boolean">
Disable the progress bar
</ParamField>
<ParamField path="--no-summary" type="boolean">
Don't print a summary
</ParamField>
Script Execution
<ParamField path="--ignore-scripts" type="boolean">
Skip lifecycle scripts in the project's <code>package.json</code> (dependency scripts are never run)
</ParamField>
<ParamField path="--concurrent-scripts" type="number" default="5">
Maximum number of concurrent jobs for lifecycle scripts (default 5)
</ParamField>
Installation Controls
<ParamField path="--no-verify" type="boolean">
Skip verifying integrity of newly downloaded packages
</ParamField>
<ParamField path="--trust" type="boolean">
Add to <code>trustedDependencies</code> in the project's <code>package.json</code> and install the package(s)
</ParamField>
<ParamField path="--backend" type="string" default="clonefile">
Platform-specific optimizations for installing dependencies. Possible values: <code>clonefile</code> (default),{" "}
<code>hardlink</code>, <code>symlink</code>, <code>copyfile</code>
</ParamField>
General & Environment
<ParamField path="--config" type="string">
Specify path to config file (<code>bunfig.toml</code>). Alias: <code>-c</code>
</ParamField>
<ParamField path="--dry-run" type="boolean">
Don't install anything
</ParamField>
<ParamField path="--cwd" type="string">
Set a specific cwd
</ParamField>
<ParamField path="--help" type="boolean">
Print this help menu. Alias: <code>-h</code>
</ParamField>