npm ERESOLVE unable to resolve dependency tree — how to fix

# Quick fix — use legacy peer deps resolution
npm install --legacy-peer-deps

# Or force install (riskier — may have broken packages)
npm install --force

# Inspect what is conflicting
npm install 2>&1 | head -30
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: my-app@1.0.0
npm ERR! Found: react@18.3.0
npm ERR! node_modules/react
npm ERR!   react@"^18.3.0" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^17.0.0" from some-library@2.1.0

A dependency requires a specific peer dependency version that conflicts with another installed version.

Use overrides to force a version (npm 8.3+)

// package.json
{
  "overrides": {
    "some-library": {
      "react": "^18.0.0"
    }
  }
}

Upgrade the conflicting package first

# Check if a newer version supports your peer dep version
npm info some-library peerDependencies

# Install specific version
npm install some-library@3.0.0

Difference between --legacy-peer-deps and --force

# --legacy-peer-deps: ignores peer dep conflicts (npm 6 behavior)
# --force: installs even with version mismatches (can break things)
# Prefer --legacy-peer-deps as it is less destructive