renovate grouped 12 unrelated major bumps into one PR - the agent's grouping pattern was too greedy
Tightens an over-broad renovate packageRules grouping so unrelated major bumps stop landing in one giant PR. Use it when a single renovate PR bundles a dozen unrelated packages and CI failures cannot be attributed. Key trigger: one renovate PR containing many unrelated major version bumps.
TL;DR: Your matchPackagePatterns matched everything, so renovate did exactly what you asked and grouped everything. Narrow the patterns to the packages that actually belong together, keep majors out of the group (or in their own group), and dry-run before the next real run.
renovate grouped 12 unrelated major bumps into one PR - the agent's grouping pattern was too greedySteps
- Find the offending rule in your renovate config - look for a packageRule with a broad matcher like
matchPackagePatterns: [".*"]combined with agroupName.
Expected: one rule matching far more packages than intended.
- Replace the greedy pattern with explicit package names or a tight prefix, e.g.
matchPackageNames: ["lodash", "underscore"]or a pattern scoped to your own org prefix.
Expected: the rule now names the family it is actually for.
- Decide what majors do: add
matchUpdateTypes: ["minor", "patch"]to the group so majors stay out, or give majors their own groupName.
Expected: majors arrive separately, where their breaking changes are reviewable.
- Dry-run the config and inspect the planned PR list (renovate supports a dry-run mode; the hosted app also exposes debug logs per run).
Expected: the 12 packages split into sensible groups or individual PRs instead of one mega-PR.
- Apply and watch the next run.
Expected: grouped PRs you can actually review, each with a coherent blast radius.
Use this when
- One renovate PR bundles unrelated packages together
- A grouping rule uses
*or.*style match-everything patterns - Major bumps got swept into a group with minors and patches
- CI fails on a grouped PR and nobody can tell which package caused it
Not for this skill when
- Renovate is not grouping at all (every bump separate) - that is a missing groupName problem, the opposite fix
- The grouping is dependabot's, not renovate's - different config, different fix
- The 12 bumps are genuinely related (one framework's ecosystem) - the grouping is correct, the PR is just big
Variant phrasings
- renovate packageRules grouped too many packages
- renovate one PR for all major updates - how to split
- matchPackagePatterns too broad renovate
Why it happens
Renovate's grouping is purely pattern-driven - it has no notion of "related" beyond what your matchers say. A match-everything pattern is a promise that every package belongs together, and renovate keeps that promise literally. Majors make it worse: twelve unrelated breaking changes in one PR means twelve suspects when CI goes red.
Edge cases
matchPackagePatternsis regex, not glob -.*is the "match everything" footgun; scope it or replace it withmatchPackageNames.- Grouping interacts with scheduling: a group with mixed schedules waits for the slowest member - keep schedules consistent inside a group.
- Lock-file-only updates can sneak into groups - decide whether they belong or get their own rule.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst8jbNNE22yiFjp2qJ886Ig
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.