feat: adopt SceneDelegate - #246
Merged
cipolleschi merged 5 commits intoSep 17, 2026
Merged
Conversation
|
Good |
Member
|
This is quite invasive change to the template. Can it wait till beginning of September? cc @cipolleschi |
Contributor
|
that's tricky. This needs to land after we land react/react-native#53744. This PR is technically additive and not breaking. However, Apple will start rejecting apps that are not using the SceneDelegate at some point and app built with Xcode27 (that's going to exit beta in September) will crash at startup. |
4 tasks
cipolleschi
approved these changes
Sep 17, 2026
Removed RCTUseAssetCatalog key from Info.plist.
cipolleschi
approved these changes
Sep 17, 2026
cipolleschi
added a commit
that referenced
this pull request
Sep 17, 2026
Co-authored-by: Riccardo Cipolleschi <cipolleschi@meta.com> Co-authored-by: Riccardo Cipolleschi <riccardo.cipolleschi@gmail.com>
1 task
pawicao
added a commit
to software-mansion/react-native-reanimated
that referenced
this pull request
Sep 22, 2026
…ne lifecycle (#10650) > [!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-native` and every pinned `@react-native/*` package from `0.88.0-rc.1` to `0.88.0-rc.2` in the root workspace, in both library packages and in the `common-app`, `fabric-example`, `next-example` and `web-example` apps, then refreshed `yarn.lock` and the `fabric-example` `Podfile.lock`. I moved the React Native startup of `fabric-example` out of `AppDelegate.swift` into a new `SceneDelegate.swift` and declared the scene in `Info.plist`, as the [upgrade helper](https://react-native-community.github.io/upgrade-helper/?from=0.88.0-rc.1&to=0.88.0-rc.2) and the [template pull request](react-native-community/template#246) show. The new scene delegate keeps three parts of the old app delegate that the template does not have: the `RUNTIME_TESTS` module name and bundle URL, the experimental release level, and the `sourceURL(for:)` override that the old app delegate also had. The second commit raises the `fabric-example` deployment 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](https://github.com/react/react-native/releases/tag/v0.88.0-rc.2)). Metro 0.87.1 rewrote `DependencyGraph.js`, so I re-applied the `metro` patch by hand; the `metro-runtime` patch applied unchanged. I added copies of both patches to `packages/react-native-worklets/bundleMode/patches` next to the older versions. `macos-example` and `tvos-example` keep their pins, because they follow `react-native-macos` and `react-native-tvos`. Their `Podfile.lock` files also changed when I ran `yarn build-apps`, but only in the `RNReanimated`, `RNWorklets` and `hermes-engine` checksums. Those checksums follow the `IS_REANIMATED_PROFILING`, `IS_WORKLETS_PROFILING` and `RCT_HERMES_V1_ENABLED` environment 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-peers` and `yarn format:md` all pass. - With a fresh `--reset-cache` Metro 0.87.1, both apps load in Bundle Mode, the `.worklets` chunks are regenerated, and a Fast Refresh replaces a screen's text on Android without a reload. - `fabric-example` builds 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, no `Terminating` and no unrecognized selector. ## Changelog - [x] I added an entry to the `Unpublished` section of each changed package's `CHANGELOG.md`, or this PR does not change `react-native-reanimated` or `react-native-worklets`.
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.
Summary:
This PR migrates to SceneDelegate to make React Native apps bootstrapped with the Community Template and built with Xcode 27+ run on iOS 27+. It is based on instructions from react/react-native-website#5176 (with exception of
devMenuConfigurationinSceneDelegate.swift, which is added in the template).This PR should be merged after the following PR to React Native is merged: react/react-native#53744
Changelog:
[IOS] Adopt UIScene lifecycle (migrate to SceneDelegate)
Test Plan:
CI green, working locally.