Repository navigation
chore: group the React Native family in dependabot - #1246
Merged
Merged
Conversation
`@react-native/*` and `@react-native-community/cli` track the react-native minor line, and `@types/react` tracks `react`. Dependabot was proposing each of them as its own PR, which produces version combinations nobody ships -- the open PRs bumping @react-native/metro-config to 0.88.1 while react-native stays on ^0.81.1 are exactly that. Group them so they are offered as a single coordinated PR instead. Grouping rather than ignoring keeps the updates visible; ignoring would have made them invisible and fully manual. `exclude-patterns` is deliberate, not redundant. GitHub's reference documents `*` as the wildcard but never states how a pattern without one is matched -- exact name or substring. Under a substring reading, bare `react` would also capture react-native-builder-bob, react-native-test-app, @rnx-kit/metro-config, @types/react-native and @callstack/react-native-visionos, grouping packages that do move independently. Excludes take precedence over patterns, so naming them makes the config behave identically under either reading. Verified every devDependency lands where intended: the six family members are matched, and biome, release-it, @release-it/conventional-changelog, jest, @types/jest, pod-install and typescript continue to get individual PRs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Naturalclar
added a commit
that referenced
this pull request
Nov 15, 2026
release-it and @release-it/conventional-changelog are coupled through a peer range: the plugin declares `release-it: ^18 || ^19 || ^20`, so bumping release-it alone to 21 produces a combination the plugin refuses. This is not hypothetical. #1245 bumps release-it 18.1.2 -> 21.1.2 on its own and cannot be merged for exactly this reason, and nothing in CI catches it: yarn treats the peer mismatch as a warning, and no CI job runs the release path, so the failure would only surface on a real publish. Grouping them means dependabot offers the pair together, at versions that satisfy each other. No exclude-patterns needed -- `release-it` and `@release-it/conventional-changelog` are the only dependencies either pattern can match, so the group is identical under either reading of non-wildcard pattern matching. Replaces #1247, which GitHub closed when its base branch was deleted on the merge of #1246. Content is byte-identical; only the base differs. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Why
@react-native/*and@react-native-community/clitrack thereact-nativeminor line, and@types/reacttracksreact. Dependabot has been proposing each as its own PR, which yields combinations nobody ships — #1244 bumping@react-native/metro-configto0.88.1whilereact-nativestays on^0.81.1is exactly that.Grouped rather than ignored. Ignoring these (the original request) would stop the bad PRs but also make RN updates invisible and fully manual. A group keeps the signal and fixes the actual problem: they now arrive as one PR that moves them together, and it costs one slot against
open-pull-requests-limitinstead of six.The rule
Why
exclude-patternsis not redundantGitHub's options reference documents
*as the wildcard but never states how a pattern without one is matched — exact name or substring. I checked and the docs are genuinely silent on it.That ambiguity matters here: under a substring reading, bare
reactwould also capturereact-native-builder-bob,react-native-test-app,@rnx-kit/metro-config,@types/react-nativeand@callstack/react-native-visionos— grouping packages that do move independently.@rnx-kit/metro-configis the clearest counter-example: it was bumped on its own in #1242 with CI clean.Excludes take precedence over patterns, so naming them makes this config behave identically under either interpretation rather than depending on undocumented behaviour.
Verification
I enumerated every entry in
devDependenciesand confirmed each lands where intended:react,react-native,@react-native/metro-config,@react-native/babel-preset,@react-native-community/cli,@types/react@biomejs/biome,release-it,@release-it/conventional-changelog,jest,@types/jest,pod-install,typescript, plus the five excluded aboveNote that CI does not parse
dependabot.yml, so green checks here say nothing about this file. GitHub validates it on push to the default branch; problems appear under Insights → Dependency graph → Dependabot.Expected follow-on
Once this merges, dependabot should supersede #1241 (
react-native0.88.1), #1244 (@react-native/metro-config0.88.1) and #1203 (react+@types/react), replacing them with a single grouped PR. That also frees slots against the 10-PR cap.Not included
release-itand@release-it/conventional-changelogare coupled the same way, and today gave a live demonstration: #1245 (release-it21.1.2) is unmergeable because the plugin pinned at^11.0.1declares peerrelease-it: ^18 || ^19 || ^20. Grouping those two would prevent a repeat. Left out to keep this PR to the requested scope — happy to add it here or in a follow-up.🤖 Generated with Claude Code