Skip to content

chore: group the React Native family in dependabot - #1246

Merged
Naturalclar merged 1 commit into
masterfrom
chore/dependabot-group-react-native
Nov 15, 2026
Merged

Naturalclar merged 1 commit into
masterfrom
chore/dependabot-group-react-native

Conversation

@Naturalclar

Copy link
Copy Markdown
Member

Why

@react-native/* and @react-native-community/cli track the react-native minor line, and @types/react tracks react. Dependabot has been proposing each as its own PR, which yields combinations nobody ships — #1244 bumping @react-native/metro-config to 0.88.1 while react-native stays on ^0.81.1 is 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-limit instead of six.

The rule

  groups:
    react-native:
      patterns:
      - react
      - react-native
      - "@react-native/*"
      - "@react-native-community/cli"
      - "@types/react"
      exclude-patterns:
      - react-native-builder-bob
      - react-native-test-app
      - "@rnx-kit/*"
      - "@types/react-native"
      - "@callstack/react-native-visionos"

Why exclude-patterns is not redundant

GitHub'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 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. @rnx-kit/metro-config is 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 devDependencies and confirmed each lands where intended:

  • Grouped (6): react, react-native, @react-native/metro-config, @react-native/babel-preset, @react-native-community/cli, @types/react
  • Still individual: @biomejs/biome, release-it, @release-it/conventional-changelog, jest, @types/jest, pod-install, typescript, plus the five excluded above

Note 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-native 0.88.1), #1244 (@react-native/metro-config 0.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-it and @release-it/conventional-changelog are coupled the same way, and today gave a live demonstration: #1245 (release-it 21.1.2) is unmergeable because the plugin pinned at ^11.0.1 declares peer release-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

`@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
Naturalclar merged commit 0c3302a into master Nov 15, 2026
5 checks passed
@Naturalclar
Naturalclar deleted the chore/dependabot-group-react-native branch November 15, 2026 05:21
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant