Xcode 27 won’t launch 93% of React Native apps: the UIScene change, and the libraries that crash after it
说明与用途
Xcode 27 强制使用 UIKit 场景生命周期,导致 93% 的 React Native 和 Expo 应用在启动时崩溃。升级到 React Native 0.88 或 Expo SDK 58,修补访问 AppDelegate.window 的库,并在 SceneDelegate 中转发 URL 可解决此问题。
问题
Apps built with Xcode 27 (iOS 27 SDK) fail to launch if they have not adopted the UIKit scene life cycle, causing crashes in many React Native and Expo projects.
结果
After adopting scenes, updating libraries, and forwarding URLs, the 93% of apps that previously crashed now launch successfully under Xcode 27.
工作流
- 1. Verify scene adoption by checking Info.plist for UIApplicationSceneManifest or AppDelegate implementation of application(_:configurationForConnecting:options:).
- 2. For Expo, enable scene support in expo-build-properties or upgrade to SDK 58. For React Native, upgrade to 0.88 or later.
- 3. Identify dependencies that access AppDelegate.window (e.g., react‑native‑blob‑util, @react-native-firebase/messaging, react‑native-google‑mobile‑ads).
- 4. Apply patches or update libraries to use RCTPresentedViewController or RCTKeyWindow.
- 5. Forward URL and user activity events from the scene delegate to RCTLinkingManager.
- 6. Build with Xcode 27 before April 2027 and test launch, pickers, ads, and deep links from a cold start.
- 7. Run npx nativekeel to check scene adoption, library crashes, and URL handler placement.
证据
628 React Native and Expo apps with an iOS target; 583 (93%) not on the scene life cycle yet
Application failed to launch: UIScene life cycle is required for apps built with this SDK.
react-native-blob-util#498
react-native-google-mobile-ads#911
- 记录日期: 2026-10-11T10:56:01.694Z