iOS 27 & UIScene support
customerio-expo-plugin 3.9.0 is ready for the scene lifecycle in Expo SDK 58. Stable Expo SDK 57 apps keep the AppDelegate path.
customerio-expo-plugin 3.9.0 is ready for the scene lifecycle that Expo SDK 58 generates. Expo
SDK 58 is currently pre-release. Stable Expo SDK 57 apps keep the AppDelegate path and don’t need a
scene-related Customer.io change.
After Expo SDK 58 is available as a stable release, use customerio-expo-plugin 3.9.0 and its
required customerio-reactnative 6.9.0 peer. The plugin configures the native Customer.io bridge.
What changes on the scene path:
- Deep link readiness: Register your router before routing becomes ready. With native
auto-initialization, call
CustomerIO.setDeepLinkRoutingReady()after the router is ready. With JavaScript initialization, register the router beforeCustomerIO.initialize(...); initialization marks routing ready automatically. Cold-start notification destinations arrive asLinkingurlevents, not throughLinking.getInitialURL(). Expo Router apps shouldn’t add a second navigating listener. - Killed-state deep links:
handleDeeplinkInKilledStateis the legacy AppDelegate workaround for Expo SDK 53–57. The plugin doesn’t inject it on the scene path because scene routing replaces it. - Live Activities: AppDelegate tap handling moves to JavaScript. Process URLs once with
CustomerIO.liveActivities.handleWidgetUrl(path). Useapp/+native-intent.tsxfor Expo Router, or your centralLinkingpipeline otherwise.
Below Expo SDK 58, the plugin keeps the AppDelegate path and no change is required.
See the iOS 27 UIScene migration guide for full steps and a verification checklist.