chore: upgrade the apps to React Native 0.88.0-rc.2 and adopt the scene lifecycle - #10650
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (4)
📒 Files selected for processing (2)
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (4)
📒 Files selected for processing (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe FabricExample iOS app now uses Priority: ➖ Normal Change: Other Merge Risk: 🟠 High · up to The Metro 0.87.1 Worklets patch may prevent affected apps from bundling because it references an undefined path helper. Correct the patch before merging. 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
96b7e25 to
c2e6591
Compare
6e05742 to
40b3d8e
Compare
40b3d8e to
2c6b844
Compare
Mirrors the 0.88.0-rc.1 to 0.88.0-rc.2 upgrade diff: the dependency pins, the lockfiles, and the move of the React Native startup from the app delegate to a scene delegate.
Xcode 27 does not accept iOS 13.4. The React Native template already uses 15.1.
React Native 0.88.0-rc.2 raises the minimum Metro version to 0.87.1. The DependencyGraph hook moved with the file's rewrite in 0.87.1; the metro-runtime patch applied unchanged.
2c6b844 to
7145d90
Compare
#10642) > [!NOTE] > This pull request was authored by AI on behalf of @pawicao. ## Summary Every pull request that changed a package edited the same `## Unpublished` section, so pull requests conflicted with each other. I moved unreleased entries into one file per pull request in `packages/<pkg>/changelog/` and left `CHANGELOG.md` with released versions only. A fragment holds only the entry text, because the release script reads the pull request number from the squash commit that added the file and asks GitHub for the author. I added `changelog:add` and `changelog:squash` to both package workspaces, the first to write a fragment and the second to move the fragments into `CHANGELOG.md`, and I rewrote `changelog-check` to validate fragments. I added fragments for #10584, #10632, #10587, #10629 and #10650, which merged to `main` after the 4.7.0 cut, and removed their lines from `CHANGELOG.md`. ## How we use the changelog from now on - **In a pull request:** run `yarn workspace <pkg> changelog:add --type <breaking|feature|fix|other> --message '<One sentence>'`, or write `packages/<pkg>/changelog/<slug>.<type>.md` by hand. The script writes into the package of the workspace, and the slug defaults to the branch name. Do not write the pull request link or the author, and do not edit `CHANGELOG.md`. - **To read the unpublished entries:** `yarn workspace <pkg> changelog:squash` prints them and changes no file. - **In a release pull request on the stable branch:** `yarn workspace <pkg> changelog:squash x.y.z` writes the `## x.y.z — <date>` section and deletes the fragments. - **In the post-release pull request on `main`:** `yarn workspace <pkg> changelog:squash x.y.0 --date <release date> --cut origin/x.y-stable` does the same, but leaves the fragments that came to `main` after the stable branch was cut. - **Cherry-picks:** the fragment comes with the cherry-pick, and the first `(#N)` in the commit subject still points to the original pull request. - **When the script cannot resolve an entry:** add a `pr: <number>` or a `by: @user1, @user2` line to the fragment. `by:` always takes precedence. - `changelog-check` needs a new fragment for each changed package. It rejects edits of `CHANGELOG.md` and deleted fragments, unless the pull request changes the package `version`, which marks a release or post-release pull request. ## Test plan `yarn test:scripts` passes. I also ran the three scripts in scratch repositories with real squash merges, and the author lookup against GitHub. `changelog-check` fails on this pull request, because it removes the `## Unpublished` section from both `CHANGELOG.md` files and does not change a `version`. This is expected and happens only for this migration. ## Changelog - [x] I added a changelog fragment with `yarn changelog:add` for each changed package, or this PR does not change `react-native-reanimated` or `react-native-worklets`.
Note
This pull request was authored by AI on behalf of @pawicao.
Summary
React Native 0.88.0-rc.2 is out, and it moves the app startup from the app delegate to a scene delegate. I bumped
react-nativeand every pinned@react-native/*package from0.88.0-rc.1to0.88.0-rc.2in the root workspace, in both library packages and in thecommon-app,fabric-example,next-exampleandweb-exampleapps, then refreshedyarn.lockand thefabric-examplePodfile.lock. I moved the React Native startup offabric-exampleout ofAppDelegate.swiftinto a newSceneDelegate.swiftand declared the scene inInfo.plist, as the upgrade helper and the template pull request show. The new scene delegate keeps three parts of the old app delegate that the template does not have: theRUNTIME_TESTSmodule name and bundle URL, the experimental release level, and thesourceURL(for:)override that the old app delegate also had.The second commit raises the
fabric-exampledeployment target from 13.4 to 15.1. That change is not in the upgrade diff, so it is a commit of its own: Xcode 27 does not accept 13.4, and the template already uses 15.1.The third commit moves the Bundle Mode Metro patches from Metro 0.87.0 to 0.87.1, because rc.2 raises the minimum Metro version to 0.87.1 (release notes). Metro 0.87.1 rewrote
DependencyGraph.js, so I re-applied themetropatch by hand; themetro-runtimepatch applied unchanged. I added copies of both patches topackages/react-native-worklets/bundleMode/patchesnext to the older versions.macos-exampleandtvos-examplekeep their pins, because they followreact-native-macosandreact-native-tvos. TheirPodfile.lockfiles also changed when I ranyarn build-apps, but only in theRNReanimated,RNWorkletsandhermes-enginechecksums. Those checksums follow theIS_REANIMATED_PROFILING,IS_WORKLETS_PROFILINGandRCT_HERMES_V1_ENABLEDenvironment variables, so the change comes from my shell and not from this upgrade. I reverted both files.Test plan
yarn build-packages,yarn workspace react-native-reanimated type:check,yarn workspace react-native-reanimated lint:js,yarn workspace react-native-worklets type:check,yarn workspace react-native-reanimated validate-peersandyarn format:mdall pass.--reset-cacheMetro 0.87.1, both apps load in Bundle Mode, the.workletschunks are regenerated, and a Fast Refresh replaces a screen's text on Android without a reload.fabric-examplebuilds with Xcode 27.1 and with Gradle, and starts on an iPhone Duo simulator and on a Pixel 9 Pro Fold emulator. The examples list shows, an example screen opens, and the iOS device log has no exception, noTerminatingand no unrecognized selector.Changelog
Unpublishedsection of each changed package'sCHANGELOG.md, or this PR does not changereact-native-reanimatedorreact-native-worklets.