> ## Documentation Index
> Fetch the complete documentation index at: https://bun.manicule.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For every page in one file, fetch https://bun.manicule.dev/llms-full.txt (large).
> To search and read these docs as tools, connect the MCP server at https://bun.manicule.dev/api/mcp.
> Every agent surface: https://bun.manicule.dev/.well-known/llms-manifest.json

# bun update (/pm/cli/update)

<!-- agent-signals: reading_time_min: 4 · est_tokens: 1960 · updated: 2026-08-02 -->
Related: [bun add](/pm/cli/add.md), [bun install](/pm/cli/install.md), [bun link](/pm/cli/link.md), [bun patch](/pm/cli/patch.md), [bun pm](/pm/cli/pm.md), [bun remove](/pm/cli/remove.md)

> Update dependencies to latest versions

<Note>To upgrade your Bun CLI version, see [`bun upgrade`](/installation#upgrading).</Note>

To update all dependencies to the latest version:

```sh icon="terminal" title="terminal" terminal
bun update
```

To update a specific dependency to the latest version:

```sh icon="terminal" title="terminal" terminal
bun update [package]
```

## `--interactive`

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

```sh icon="terminal" title="terminal" 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:

```txt
? 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:

```sh icon="terminal" title="terminal" 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:

```sh icon="terminal" title="terminal" 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`:

```json icon="file-json" title="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

```bash icon="terminal" title="terminal" terminal
bun update <name>@<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">Maximum number of concurrent jobs for lifecycle scripts (default: 2x CPU cores)</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>
