chore(deps): group react + react-dom in Dependabot config - #236
Merged
Conversation
react-dom peer-requires react@^X, so a react-dom-only Dependabot PR always carries an unresolved peer requirement its react sibling PR is holding. Add an explicit react group (react, react-dom only) alongside the existing objectstack group, following the same groups: precedent. Packages are enumerated explicitly rather than pattern-matched (react*/*react*) to avoid silently pulling lucide-react — an unrelated icon library in the same manifest with its own open Dependabot PR — into the same group.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #159
What
Adds an explicit
reactgroup to.github/dependabot.yml, alongside the existingobjectstackgroup:react-dom@Xpeer-requiresreact@^X. Dependabot currently files them as two separate PRs, and a lonereact-domPR always carries a peer requirement its sibling PR is holding — the two are not independently mergeable. Grouping makes them arrive as a single, actually-mergeable PR.Why package names are enumerated, not pattern-matched
apps/docs/package.jsonalso declares"lucide-react": "^1.16.0"— an unrelated icon library with its own currently-open Dependabot PR (#161,lucide-react1.16.0 → 1.33.0). A pattern likereact*or*react*would silently pull it into this group too, coupling icon-library updates to React's release cadence with nothing failing to signal it. The group listsreactandreact-domas literal names for that reason.@types/react/@types/react-domare intentionally excludedThe issue flagged these as unmeasured. Measured now: they're already on different versions from each other (
@types/react@^19.2.17,@types/react-dom@^19.2.3), so they already float independently of the runtime pair and of one another. More importantly, the coupling this issue exists to fix — an npm/pnpm-enforcedpeerDependenciesrequirement — exists betweenreactandreact-domthemselves; DefinitelyTyped's type-only packages don't carry that same enforced peer relationship to each other or to the runtime packages. Adding them would widen this group's blast radius without addressing a real merge-blocking coupling. Not included.react-dom's exact pin: left as-is, reported rather than changed hereThe pin (
"react-dom": "19.2.7"vs"react": "^19.2.7") was introduced as a bounded workaround in #158, and grouping removes the reason it exists — reverting to a caret is the honest end state. I tested whether that revert is achievable without anypnpm-lock.yamlchange (both specifiers already resolve to19.2.7):The resolved
version:doesn't move (still19.2.7(react@19.2.7)), but thespecifier:field does —pnpm-lock.yamlis not byte-identical. Per this card's constraint (deploy-docs.ymlfires a production deploy on everypnpm-lock.yamlpush tomain, so any lockfile diff here has a blast radius no required check covers), I reverted the experiment and left the pin as exact. This is a real, if small, follow-up: someone should either accept the one-line lockfile diff in its own PR, or decide the belt-and-braces state (group + pin) is fine to keep. Recommendation: take the caret revert as its own tiny PR — the diff is exactly the one line shown above, already verified.Dependabot schema notes (verified against GitHub's docs,
github/docsdependabot-options-reference.md)updates:block compose fine, and there's a defined precedence, not silent conflict: "If a dependency matches more than one rule, it's included in the first group that it matches."objectstackandreacthave disjoint pattern sets (@objectstack/*can never match a barereact/react-domname), so there's no shadowing here regardless of declaration order — but the ordering rule is real and worth knowing for future groups added to this block.exclude-patternsneeded: that option only matters when apatternsentry is wildcard-shaped and needs carving back down; enumerating exact names sidesteps the whole class of shadowing/overlap questions.groups+ explicitpatternsis what the docs offer for "these must land together."What this would and wouldn't have caught, against the five PRs open today
reactgroup?fumadocs-corelucide-react@opennextjs/cloudflare(dev)wrangler(dev)@types/negotiator(dev)None of the five currently-open Dependabot PRs are for
reactorreact-dom, so this change doesn't retroactively affect any of them — its effect is on the next time Dependabot opens PRs for these two packages, which is exactly the mergeable-pair problem this issue is about.Verification honesty
No gate in this repo validates
dependabot.yml— GitHub only evaluates it when Dependabot itself runs. "CI green" below does not cover this change; it only confirms the change didn't break anything else. What actually tests this change: the YAML parses (yaml.safe_load), the two groups are structurally distinct (no overlapping pattern strings, disjoint by construction), and the reasoning above against the five real open PRs.Generated by Claude Code