upgrade-dependencies
Upgrade Dependencies
Drive a dependency upgrade from "bump X to latest" all the way to green — without hacking around the errors it causes.
Core principle: fix upward, never patch sideways. When a bump breaks something, the fix is to upgrade the thing that's incompatible to a version that supports the target — not to suppress the error, downgrade the target, or add // @ts-ignore. If nothing upstream supports the target yet, that's a blocker you report, not a workaround you invent.
JS/TS ecosystems only (npm / pnpm / yarn / bun, including workspace monorepos and nx/turbo).
The workflow
Work the phases in order. Scan the full impact (phase 2) before touching anything, and collect all breakage (phase 4) before fixing — otherwise you'll fix the same file three times and discover missed references halfway through.
1. Resolve the target version
- Absolute latest stable by default:
npm view <pkg> version(dist-taglatest). Ignore existing semver ranges — the user asked to upgrade. - Use a prerelease (
next/rc/canary) only if the user asked for it, or if it's the only version that unblocks a phase-5 blocker (and say so). - Detect the package manager from the lockfile:
pnpm-lock.yaml→pnpm,bun.lockb→bun,yarn.lock→yarn,package-lock.json→npm. Never substitute a different runner. - Detect monorepo layout: root
workspaces,pnpm-workspace.yaml,nx.json,turbo.json.