{"record":{"id":"79e30aacf6ed2042","repo":"angular/angular-cli","slug":"incompatible-peer-dependencies-found-see-above-fo","errorCode":null,"errorMessage":"Incompatible peer dependencies found. See above for details. You can bypass this check using the --force option.","messagePattern":"Incompatible peer dependencies found\\. See above for details\\. You can bypass this check using the --force option\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/angular/cli/src/commands/update/update-resolver.ts","lineNumber":311,"sourceCode":"  logger: logging.LoggerApi,\n): void {\n  logger.debug('Validating peer dependencies...');\n  let error = false;\n\n  for (const name of infoMap.keys()) {\n    const info = infoMap.get(name);\n    if (!info || !info.target) {\n      continue;\n    }\n\n    logger.debug(`Checking ${name}...`);\n    error = _validateForwardPeerDependencies(name, infoMap, logger) || error;\n    error =\n      _validateReversePeerDependencies(name, info.target.version, infoMap, logger, next) || error;\n  }\n\n  if (error && !force) {\n    throw new Error(\n      'Incompatible peer dependencies found. See above for details. ' +\n        'You can bypass this check using the --force option.',\n    );\n  }\n}\n\nfunction _getUpdateMetadata(\n  packageJson: PackageManifest,\n  logger: logging.LoggerApi,\n): UpdateMetadata {\n  const metadata = packageJson['ng-update'] as Record<string, unknown> | undefined;\n\n  const result: UpdateMetadata = {\n    packageGroup: {},\n    requirements: {},\n  };\n\n  if (!metadata || typeof metadata != 'object' || Array.isArray(metadata)) {","sourceCodeStart":293,"sourceCodeEnd":329,"githubUrl":"https://github.com/angular/angular-cli/blob/bb72145f9ab45aee29f523236b3a25cd0813a841/packages/angular/cli/src/commands/update/update-resolver.ts#L293-L329","documentation":"During update resolution, _validateUpdatePackages walks forward and reverse peer dependencies of every package being updated. If any incompatibility is reported and --force was not passed, it throws so the user can review details logged above and consciously bypass with --force.","triggerScenarios":"Updating one or more packages whose peer dependency ranges conflict with installed versions — e.g. updating a plugin to a version requiring a different Angular core than installed — without the --force flag.","commonSituations":"Mixed-version upgrades (updating @angular/material before @angular/core); third-party libraries lagging behind new Angular majors; React/Vue plugin ecosystems with strict peer ranges.","solutions":["Read the peer dependency details logged above the error and align versions (update peer-related packages together).","Update in the recommended order (e.g. @angular/core then @angular/material) via `ng update @angular/core @angular/material`.","Rerun with --force if you accept the incompatibility and will fix it afterwards.","Choose a package version whose peer range matches your current setup (check `npm info <pkg> peerDependencies`)."],"exampleFix":"// before\nng update @angular/material@17  # requires @angular/core@17, installed core@16\n// error: Incompatible peer dependencies found...\n// after\nng update @angular/core@17 @angular/material@17","handlingStrategy":"validation","validationCode":"import { execSync } from 'child_process';\nconst peers = JSON.parse(execSync(`npm info ${pkg} peerDependencies --json`).toString());\nfor (const [dep, range] of Object.entries(peers)) {\n  const installed = require(`${dep}/package.json`).version;\n  if (!require('semver').satisfies(installed, range)) {\n    console.warn(`${pkg} needs ${dep}@${range}, installed ${installed} — update ${dep} too`);\n  }\n}","typeGuard":null,"tryCatchPattern":"try {\n  await ngUpdate(packages);\n} catch (e) {\n  if (String(e.message).includes('Incompatible peer dependencies')) {\n    console.error('Review logged peer conflicts; align versions before forcing.');\n  } else throw e;\n}","preventionTips":["Update peer-coupled packages together (ng update @angular/core @angular/material).","Check `npm info <pkg> peerDependencies` before choosing a target version.","Treat --force as last resort; schedule fixes for whatever it skips."],"tags":["angular","cli","update","peer-dependencies","npm"],"backgroundTag":"peer-dependency-conflict","analyzedSha":"bb72145f9ab45aee29f523236b3a25cd0813a841","analyzedAt":"2026-08-30T02:47:34.745Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}