Repository navigation
chore(e2e): Update Expo sample to SDK 58 - #6914
Conversation
Bump samples/expo to Expo SDK 58 (expo@58, expo-* and RN community libs aligned to the published bundledNativeModules manifest, React 19.3.0, React Native 0.88.0). Expo 58's prebuild template adopts the UIScene lifecycle itself (its own SceneDelegate: ExpoAppSceneDelegate), so withIosSceneLifecycle now only guards against template drift and injects the SENTRY_TEST_ABORT hook. The crash-screenshot verify script guards are updated to match. Fix Themed prop types for RN 0.88 function-component Text/View. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Semver Impact of This PR⚪ None (no version bump detected) 📋 Changelog PreviewThis is how your changes will appear in the changelog.
🤖 This preview updates automatically when you update the PR. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c7ed980. Configure here.
| react-native: "*" | ||
| checksum: 10c0/90683af7ba17c95045b3a870d3f18d30c0468a59f25c8542cd91ad92c5c6a3248da7678a9329de90ed8a4bba0b5c94b4c949e1f35218edc0c0995412ad9570bf | ||
| languageName: node | ||
| linkType: hard |
There was a problem hiding this comment.
Alpha screens version resolved in lockfile
Medium Severity
expo-router’s react-native-screens range (^4.30.0 || ^5.0.0-alpha.3) resolved to 5.0.0-alpha.4 while the sample pins ~4.30.0. Two copies of this native module often cause duplicate RNSScreen registration or a JS/native mismatch at runtime, which undermines using the sample to validate SDK 58.
Additional Locations (1)
Triggered by project rule: PR Review Guidelines for Cursor Bot
Reviewed by Cursor Bugbot for commit c7ed980. Configure here.
There was a problem hiding this comment.
The alpha resolution is only a lockfile entry: expo-router declares react-native-screens as both a dependency and a peer, and the peer is satisfied by the sample's 4.30.0. Only one copy is installed (samples/expo/node_modules/react-native-screens@4.30.0, nothing nested under expo-router), and only that one is linked (RNScreens (4.30.0) in Podfile.lock). Main had the same kind of entry on Expo 57 (^4.25.2 → 4.27.0 while the sample pinned ~4.25.2). No change needed.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c7ed980. Configure here.
| peerDependencies: | ||
| react: "*" | ||
| react-native: "*" | ||
| checksum: 10c0/90683af7ba17c95045b3a870d3f18d30c0468a59f25c8542cd91ad92c5c6a3248da7678a9329de90ed8a4bba0b5c94b4c949e1f35218edc0c0995412ad9570bf |
There was a problem hiding this comment.
Conflicting screens native module versions
Medium Severity
expo-router declares react-native-screens as ^4.30.0 || ^5.0.0-alpha.3, and the lockfile resolved that range to 5.0.0-alpha.4 while the Expo sample still pins ~4.30.0. Yarn will install both a stable 4.x copy and an alpha 5.x copy. React Native autolinking can then pick the wrong native module, producing duplicate symbols, a JS/native mismatch, or sample build/runtime failures. This was flagged from the dependency-update review guidance because the new range selects a prerelease that the sample did not intend to use.
Additional Locations (1)
Triggered by project rule: PR Review Guidelines for Cursor Bot
Reviewed by Cursor Bugbot for commit c7ed980. Configure here.
There was a problem hiding this comment.
The alpha resolution is only a lockfile entry: expo-router declares react-native-screens as both a dependency and a peer, and the peer is satisfied by the sample's 4.30.0. Only one copy is installed (samples/expo/node_modules/react-native-screens@4.30.0, nothing nested under expo-router), and only that one is linked (RNScreens (4.30.0) in Podfile.lock). Main had the same kind of entry on Expo 57 (^4.25.2 → 4.27.0 while the sample pinned ~4.25.2). No change needed.


📢 Type of change
📜 Description
Bumps
samples/expoto the final Expo SDK 58 and validates the SDK against it. No SDK changes were needed.expo@^58.0.14withexpo-*and RN community libs aligned to the SDK 58bundledNativeModulesmanifest: React 19.3.0, React Native 0.88.0,react-native-gesture-handler3.3,react-native-safe-area-context5.10,react-native-screens4.30,@types/react19.3.expoandexpo-routerfloors are one patch behind the manifest (58.0.14/58.0.23) because yarn's 24h age gate quarantines58.0.16/58.0.24. The ranges pick them up once they age in.SceneDelegate: ExpoAppSceneDelegate+UIApplicationSceneManifest), so the oldwithIosSceneLifecycleanchors no longer exist and prebuild would throw. The plugin now only fails prebuild if the scene manifest disappears (template drift) and injects theSENTRY_TEST_ABORTtest hook.scripts/verify-ios-crash-screenshot-no-freeze.sh: guards updated to check for the template'sSceneDelegate(subclass ofExpoAppSceneDelegate) instead ofEXExpoAppSceneDelegate.components/Themed.tsx: RN 0.88 typesText/Viewas function components, soDefaultText['props']no longer type-checks; use RN'sTextProps/ViewProps.New transitive deps from Expo's own packages:
noxcturnal(via@expo/metro-config, repoexpo/noxcturnal) and2g(via@expo/cli, repokitten/2g).💡 Motivation and Context
Fixes #6904
💚 How did you test it?
CI, Locally
📝 Checklist
sendDefaultPIIis enabled.🔮 Next steps