{"record":{"id":"a709ea24842fe642","repo":"angular/angular-cli","slug":"packagegroup-metadata-for-metadata-name-is-malf","errorCode":null,"errorMessage":"PackageGroup metadata for ${metadata.name} is malformed. Ignoring.","messagePattern":"PackageGroup metadata for (.+?) is malformed\\. Ignoring\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/angular/cli/src/commands/update/update-resolver.ts","lineNumber":697,"sourceCode":"        acc[curr] = version;\n\n        return acc;\n      },\n      {} as Record<string, string>,\n    );\n  } else if (typeof packageGroup === 'object' && packageGroup !== null) {\n    packageGroupNormalized = Object.entries(packageGroup).reduce(\n      (acc, [name, v]) => {\n        if (typeof v === 'string') {\n          acc[name] = v;\n        }\n\n        return acc;\n      },\n      {} as Record<string, string>,\n    );\n  } else {\n    logger.warn(`PackageGroup metadata for ${metadata.name} is malformed. Ignoring.`);\n\n    return;\n  }\n\n  for (const [member, memberVersion] of Object.entries(packageGroupNormalized)) {\n    if (packages.has(member)) {\n      continue;\n    }\n    if (allDependencies.has(member)) {\n      packages.set(member, memberVersion as VersionRange);\n    }\n  }\n}\n\nasync function _addPeerDependencies(\n  packages: Map<string, VersionRange>,\n  allDependencies: ReadonlyMap<string, VersionRange>,\n  npmPackageJson: PackageMetadata,","sourceCodeStart":679,"sourceCodeEnd":715,"githubUrl":"https://github.com/angular/angular-cli/blob/bb72145f9ab45aee29f523236b3a25cd0813a841/packages/angular/cli/src/commands/update/update-resolver.ts#L679-L715","documentation":"A second, stricter path in update-resolver normalizes a package's PackageGroup metadata and, if it cannot be normalized into a Record<string, string>, warns that the metadata is malformed and returns early (no package group applied). Unlike error 396 this path aborts the group handling entirely for that metadata set.","triggerScenarios":"During update peer/group resolution, the PackageGroup entries of a package's ng-update metadata fail normalization (non-object shape or invalid member/version values), triggering the else branch that warns and returns.","commonSituations":"Third-party Angular ecosystem packages with hand-written, incorrectly typed packageGroup fields; mismatched versions between library majors; testing local/linked packages with stub metadata.","solutions":["Locate the package named in the warning and inspect its 'ng-update' metadata; update to a fixed version if the publisher corrected it.","Continue the update if acceptable — the group is skipped and other packages update normally, but be prepared to update grouped packages manually.","Manually update related group members (e.g., @angular/material with @angular/cdk) to matching versions.","If it's your library, publish corrected packageGroup metadata (flat name→version object)."],"exampleFix":"// before: invalid group values\n\"packageGroup\": { \"@angular/cdk\": 12 }\n// after\n\"packageGroup\": { \"@angular/cdk\": \"0.0.0-PLACEHOLDER\" }","handlingStrategy":"type-guard","validationCode":"const groupRaw = metadata.packageGroup;\nif (!isPlainStringRecord(groupRaw)) {\n  console.warn('packageGroup malformed; grouped packages must be updated manually');\n}","typeGuard":"function isPlainStringRecord(v: unknown): v is Record<string, string> {\n  return typeof v === 'object' && v !== null && !Array.isArray(v)\n    && Object.values(v).every(x => typeof x === 'string');\n}","tryCatchPattern":"try {\n  const group = normalizePackageGroup(metadata);\n} catch {\n  logger.warn('PackageGroup metadata malformed; skipping group');\n  return null;\n}","preventionTips":["Validate library ng-update metadata before publishing.","Update grouped packages (e.g., @angular/material and @angular/cdk) to matching versions manually when the group is skipped.","Avoid locally linked (npm link) packages during ng update — their metadata may be stubs.","Upgrade the offending package to a release with corrected metadata."],"tags":["update","metadata","angular-cli","package-resolution"],"backgroundTag":"malformed-package-group-metadata","analyzedSha":"bb72145f9ab45aee29f523236b3a25cd0813a841","analyzedAt":"2026-08-30T02:47:34.745Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}