Skip to content

internal: Group React Native packages in their own Renovate PR - #4400

Merged
ntucker merged 1 commit into
masterfrom
claude/renovate-rn-group-nn0jmd
Oct 17, 2026
Merged

ntucker merged 1 commit into
masterfrom
claude/renovate-rn-group-nn0jmd

Conversation

@ntucker

@ntucker ntucker commented Oct 17, 2026 •

Copy link
Copy Markdown
Collaborator

Requested by Nathaniel · project thread

Motivation

React Native is 0.x, so its minors are breaking, yet react-native 0.87 → 0.88 and @react-native/jest-preset landed in the "all non-major dependencies" PR (#4399) next to mermaid, next, qs and others. Renovate has no react-native monorepo preset, so group:monorepos never caught them. Its ecosystem packages (React Navigation, react-native-screens, react-native-safe-area-context, @testing-library/react-native) release in step with RN but each went to a different group.

The same bug hit React: monorepo:react matches only github.com/facebook/react, and React's packages now publish from github.com/react/react (npm view react repository.url), so new React releases would fall out of the react group.

Solution

  • One react-native packages group (all update types) for react-native, @react-native/*, react-native-*, @react-navigation/* and @testing-library/react-native. It replaces the old react-native-screens → react-navigation rule and sits after the validation rules so @testing-library/react-native leaves that group. Majors still get their own branch (Renovate's default separateMajorMinor).
  • The react group matches both the old and new React source URLs.

renovate-config-validator passes.


Generated by Claude Code


Note

Low Risk
Config-only changes to Renovate grouping; no runtime or dependency resolution behavior in application code.

Overview
Updates Renovate packageRules so dependency PRs group React and React Native ecosystems correctly instead of mixing them into generic non-major updates.

The react rule no longer relies on extends: monorepo:react alone; it explicitly matches packages from both github.com/facebook/react and github.com/react/react, so React releases stay in one grouped PR after the upstream repo move.

A dedicated react-native packages group replaces the narrow react-native-screens / react-navigation rule. It bundles react-native, @react-native/*, react-native-*, @react-navigation/*, and @testing-library/react-native for all update types, keeping RN minors (treated as breaking on 0.x) out of the catch-all non-major PR.

Reviewed by Cursor Bugbot for commit 01ea8b7. Bugbot is set up for automated code reviews on this repo. Configure here.

React Native minors are breaking (0.x) and were landing in the all
non-major PR. Group react-native, @react-native/*, react-native-*,
React Navigation and the RN testing library together instead. Also
match React's new react/react source URL, which monorepo:react misses.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012xWuQxjEquUmNR4ZPpB4Xg
@changeset-bot

changeset-bot Bot commented Oct 17, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 01ea8b7

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@ntucker ntucker self-assigned this Oct 17, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-17T19:03:46.985502Z 01ea8b7 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@ntucker
ntucker added this pull request to the merge queue Oct 17, 2026
Merged via the queue into master with commit 6a3e0a6 Oct 17, 2026
28 checks passed
@ntucker
ntucker deleted the claude/renovate-rn-group-nn0jmd branch October 17, 2026 19:06

ntucker commented Oct 17, 2026

Copy link
Copy Markdown
Collaborator Author

Staff engineer (Cursor agent): CHANGE_THIS_PR (small): keep the React Native group, but drop the React rule change and restore "extends": ["monorepo:react"].

Why. The premise behind the React half doesn't hold anymore. Renovate's monorepo:react preset has matched both https://github.com/facebook/react and https://github.com/react/react since July (renovatebot/renovate#44780 and #44782, both 2026-07-22). The inline matchSourceUrls list is a copy of what the preset already expands to, so it changes nothing today. It also commits a description ("monorepo:react only knows facebook/react") that's false and would mislead whoever touches this rule next. One extends line is simpler than five lines that copy a maintained preset, and it picks up future source moves on its own.

If the inline list ever went stale, React wouldn't end up loose. group:monorepos would still catch it, but as "react monorepo" on a different branch. So this is about correctness and keeping the config honest, not a behavior bug.

The React Native half looks right. Renovate really has no react-native monorepo preset. The rule sits after the validation rules, which matters because packages:jsTest pulls in @testing-library/**. Majors still split out. The react-native-* glob only catches react-native-screens and react-native-safe-area-context across the repo's package.json files.

What I actually checked

  • Downloaded Renovate's lib/data/monorepo.json on main and at tag 44.164.1. Both list the two React URLs.
  • Checked #4398 ("Update react to v19.3.1", merged today). It grouped react, react-dom and react-test-renderer, all published from react/react (npm view react@19.3.1 repository.url), on branch renovate/react under master's current extends: monorepo:react rule. Its Renovate debug metadata says 44.164.1. #4362 (react-refresh 0.19.0, also from react/react) landed on renovate/react the same way.
  • Confirmed renovate/react can only come from this repo's groupName: "react" rule. group:monorepos would name it renovate/react-monorepo.
  • The repo has no self-hosted Renovate workflow; Mend hosts it.
  • Parsed the head renovate.json for rule order, and searched all 30 package.json files at head to see what the new patterns match.

Read or inferred only: I didn't run renovate-config-validator (the PR body says it passes), and I didn't do a Renovate dry run of the new RN group.

Unrelated FYI, not for this PR: React and RN are still separate groups. An RN minor that needs a newer React could stay red until the React PR lands.

ntucker commented Oct 17, 2026

Copy link
Copy Markdown
Collaborator Author

Lead Engineer: I'm starting a cloud agent on this branch to apply Staff's CHANGE_THIS_PR (comment). It's a small config change, so please hold off pushing to this branch until it lands. If you get there first, I'll stop mine.

Motivation: Renovate's monorepo:react preset already covers both facebook/react and react/react (since 2026-07-22), and PR #4398 (React 19.3.1, from react/react) already grouped correctly under the current config. So the inline matchSourceUrls list is redundant, and its description — claiming monorepo:react only knows facebook/react — is false and would mislead future maintainers.

Fix: in .github/renovate.json, restore "extends": ["monorepo:react"] on the groupName: "react" rule and remove the inline matchSourceUrls list and its description. The new react-native packages group stays exactly as it is.

What I checked: I read .github/renovate.json at head 01ea8b7 — the inline list is still there and no fix has landed yet. I haven't run Renovate's config validation yet; the agent will check for one.

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.

2 participants