Skip to content

chore(renovate): hold react and the reanimated pair to the Expo SDK line - #311

Merged
GSTJ merged 1 commit into
mainfrom
chore-renovate-sdk-pins
Jul 28, 2026
Merged

chore(renovate): hold react and the reanimated pair to the Expo SDK line#311
GSTJ merged 1 commit into
mainfrom
chore-renovate-sdk-pins

Conversation

@GSTJ

@GSTJ GSTJ commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Two Renovate PRs are red on react-native-magic-modal#test for the same reason: each moves a version the Expo SDK picks. This adds the rules that stop them being re-proposed. #305 and #306 get closed against it.

react and react-dom

renovate.json already holds react-native, and the shared preset already disables react-test-renderer on the grounds that react's version is the SDK's to pick. The preset's Expo rule never lists react or react-dom though, so they stayed open.

The workspace is hoisted, so whichever react wins the root node_modules is the one packages/modal tests against, whatever any single package.json says. #305 only edits apps/docs/package.json:

root  node_modules/react                 19.2.8   <- docs won the root
root  node_modules/react-test-renderer   19.2.0   <- SDK's, unchanged
examples/kitchen-sink/.../react          19.2.0   <- nested, doctor stays quiet

@testing-library/react-native asserts the two match, so three of four suites died before running:

Incorrect version of "react-test-renderer" detected.
Expected "19.2.8", but found "19.2.0".

react-test-renderer can't follow it up, since the preset disables it.

Holding react costs nothing here. apps/docs is a static export (next build, then serve out), and 19.2.1 through 19.2.8 are all Server Components and Server Actions changes.

reanimated, worklets and screens

The example-app file rule only reaches examples/kitchen-sink/package.json, so Renovate kept proposing these on the packages/modal side alone. #306 took reanimated 4.5.3 there, which installed a second copy beside the example app's 4.2.3 and then asserted on its own peer:

reanimated 4.5.3 peers: react-native-worklets 0.10.x - 0.11.x
expo 55.0.28 ships:     react-native-worklets 0.7.4

[Reanimated] Your installed version of Worklets (0.7.4) is not compatible
with installed version of Reanimated (4.5.3).

Moving worklets up to 0.10.3 to satisfy it turns the suites green, 36/36. expo-doctor then fails:

X Check that packages match versions required by installed Expo SDK
  package                expected  found
  react-native-worklets  0.7.4     0.10.3

Worklets is a native module and isn't on the example app's expo.install.exclude list, only reanimated and gesture-handler are. So 4.5.3 cannot land while the repo is on SDK 55. react-native-screens sits in the same position and is held for the same reason.

Verification

Clean node_modules, rebased on main:

  • oxlint straight from node_modules/.bin in all three workspaces, exit 0. Planted an unused var first to confirm it exits 1.
  • format, typecheck, build, doctor 19/19, changelog:check all exit 0
  • 36 tests across 4 suites
  • renovate-config-validator accepts the file

Config only, so no E2E and no release.

Proof, including both reproductions and the worklets experiment: magic-modal/305-306

#305 reproduced #306 reproduced
worklets aligned, doctor fails chain green here

react and react-dom were open to bumps the SDK does not sanction. The
workspace is hoisted, so #305's react 19.2.8 for apps/docs alone won the
root node_modules and ran under jest beside the SDK's react-test-renderer
19.2.0, failing three of four suites on the peer assert.

react-native-reanimated, react-native-worklets and react-native-screens
were only held on the example app side. #306 took reanimated 4.5.3 in
packages/modal, which installed a second copy beside the example app's
4.2.3 and asserted on its worklets 0.10.x - 0.11.x peer against the SDK's
0.7.4. Moving worklets up to match fails expo-doctor instead.
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