From April 2027, apps uploaded to App Store Connect must be built with the iOS & iPadOS 27 SDK or later (Apple, App Store submissions). For React Native teams, that SDK brings a hard rule. The React Native 0.88 release post puts it plainly: "Starting with the iOS 27 SDK, Apple requires the UIScene lifecycle", and UIKit apps built with Xcode 27 fail to launch.
The build succeeds. The app stops at launch. That is the worst kind of breakage, because nothing in CI tells you about it.
What React Native 0.88 actually changes
React Native 0.88 (release post, 19 October 2026) adds support for the scene life cycle "as an additive change, keeping backwards compatibility with the AppDelegate path".
That sentence matters. Upgrading an existing app to 0.88 gives you the APIs, but it does not move your app onto them. The community template has been updated, so new apps start with the scene entry point. An existing app keeps its AppDelegate until you change it.
The release post lists three steps:
- Move the React Native entry point from your
AppDelegateto aSceneDelegate. - Forward the scene's URL and user-activity callbacks to
RCTLinkingManager, so deep links and universal links keep working. - Add a
UIApplicationSceneManifestkey toInfo.plist.
Support in 0.88 is limited to a single scene, so keep UIApplicationSupportsMultipleScenes set to false. For the exact code, compare your files with the 0.88 template's SceneDelegate.swift and Info.plist in the upgrade helper.
Expo SDK 58: mostly done for you
Expo SDK 58 (changelog, 15 October 2026) is built for iOS 27 and includes React Native 0.88. More importantly, npx expo prebuild now generates SceneDelegate.swift and a UIApplicationSceneManifest entry in Info.plist.
So the path depends on how you manage the native project:
-
You generate
ios/with prebuild (Continuous Native Generation): upgrade to SDK 58 and run prebuild again. The scene files come with it. -
You commit and edit
ios/by hand: you are in the same position as a bare React Native app. Make the three changes above yourself.
Staying on 0.87 or earlier
If upgrading is not possible yet, the alternative is to port the 0.88 template's SceneDelegate and scene manifest to your version: create the window from the UIWindowScene and start React Native into it there. It is more work and you own it, so plan the 0.88 upgrade anyway.
Two failure modes to look for
When I ran an audit on a React Native 0.87 test project, it reported two errors:
-
No scene configuration.
Info.plisthas noUIApplicationSceneManifest, and the app delegate does not return a scene configuration. Built with the iOS 27 SDK, the app stops at launch. -
Window created in the app delegate.
AppDelegatecreates the window withUIWindow(frame:). Once the app has a scene, UIKit does not show a window that belongs to no scene, and the app opens to a black screen.
The second one is easy to miss: you add a scene manifest, the app launches, and you get a black screen instead of a crash.
Checking your project
I wrote an open-source CLI for this check, sdkbump. In your app folder:
npx @mcamdali/sdkbump
It tells you whether the app will launch with the iOS 27 SDK, lists app delegate code that stops working once the app has a scene (links, Handoff, quick actions), and gives the fix that fits your project: upgrade to 0.88, or add the SceneDelegate by hand. It works on React Native/Expo, Flutter and native iOS projects. It only reads the project; it does not build or change anything.
It is a static check, not a compiler, so treat its output as a checklist and confirm by building with Xcode 27 and launching the app.
Checklist
- [ ] Upgrade to React Native 0.88 (or Expo SDK 58).
- [ ] Move the entry point to a
SceneDelegate, or regenerateios/with prebuild. - [ ] Forward URL and user-activity callbacks to
RCTLinkingManager; test a cold-start deep link. - [ ] Add
UIApplicationSceneManifest; keepUIApplicationSupportsMultipleScenesfalse. - [ ] Remove window creation from
AppDelegate. - [ ] Build with Xcode 27 and launch on a device before April 2027.
Have you moved your React Native app to the scene life cycle yet, or are you planning to do it by hand on 0.87?
Originally published on Medium.
Top comments (0)