Blog · Engineering
Why your Expo app crashes at launch on iOS 27
The symptom is confusing because nothing looks wrong: the build succeeds, the app installs, the icon appears, and the app closes the instant it opens on iOS 27. No error in your code, no crash in the simulator you were using last month. The cause is a rule Apple added with Xcode 27, and it catches Expo apps by default.
1. The rule: Xcode 27 builds must use scenes
Apple’s technote TN3187 says it plainly: apps built with the iOS 27 SDK (which is what Xcode 27 uses) are required to adopt the UIKit scene-based life cycle, the way an app manages its windows that Apple introduced years ago and has now made mandatory. An app still on the old app-delegate life cycle launches and is terminated. Expo’s issue tracker filled up with exactly this report in June 2026 (expo/expo#46664), and the team’s answer was the same sentence.
2. Why you got there without doing anything wrong
Xcode 27 has been the shipping version since mid-September 2026, and Xcode updates itself from the Mac App Store. A Mac that was fine in August builds with Xcode 27 in October unless you stopped it. And Xcode 26 cannot run on macOS 27 at all, so a Mac that took the OS update has no way back to the old toolchain.
That is the trap: the requirement arrives as a routine update, and the app you did not touch stops launching for new users.
3. Which Expo SDKs can opt in
- SDK 56 and earlier: cannot. The app shell has no scene support to turn on. An app on these SDKs must be built with Xcode 26 until it upgrades.
- SDK 57: can, with three things at once:
expoat 57.0.23 or laterexpo-build-propertiesat 57.0.20 or laterios.enableSceneSupport: truein the build-properties plugin config
With those, the app runs on the scene life cycle, builds with Xcode 27 and launches on iOS 27. Miss any one and you are back to the crash.
4. What to do this week
- Check which Xcode you actually have (
xcodebuild -version). If it says 27 and your app is on SDK 56 or earlier, that build will crash on iOS 27 phones. - If you can, keep a Mac on macOS 26 with Xcode 26 for the apps you have not upgraded. If you cannot, the upgrade to SDK 57 and the three bumps above is the job, and it is a half-day on a small app.
- Test on an iOS 27 device or simulator after the change, not just on 26. The crash only shows on 27.
5. Where we stand
Apps exported from the App Builder have had enableSceneSupport turned on since late September 2026, with the version bumps in place. We have not yet verified an Xcode 27 build of an export on an iOS 27 device, and until we have, our stated requirement is a Mac with Xcode 26, and our verify_app tool blocks a build that would hit this crash rather than let it ship. iOS 27 support is in progress; the compatibility page carries the current, dated state.
The requirement reads as strictness. It is the opposite: a crash at launch is the one bug no amount of good design survives, and the rule is the only thing standing between a routine Xcode update and your first one-star review.