You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit e04fe3b
Browse filesBrowse the repository at this point in the historyBrowse files
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>
Copy file name to clipboardExpand all lines: samples/expo/AGENTS.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,10 +14,10 @@ yarn android # Build & run the Android dev client (expo run:android)
14
14
15
15
## iOS UIScene lifecycle
16
16
17
-
The `plugins/withIosSceneLifecycle.js` config plugin makes this app adopt the iOS **UIScene lifecycle** with Expo's own `EXExpoAppSceneDelegate` (a Swift `UIWindowSceneDelegate`). This is where Apple/Expo are pushing every app ("Required by iOS 27"), and — importantly — it is the exact configuration behind the crash-handler freeze in [sentry-cocoa#9281](https://github.com/getsentry/sentry-cocoa/issues/9281). Keeping it as the sample's normal config means that bug class stays exercised by regular iOS CI. Expo 57 ships `ExpoAppSceneDelegate` but does not wire it up during prebuild yet, so the plugin adds the `UIApplicationSceneManifest`and adjusts the generated `AppDelegate`.
17
+
This app runs on the iOS **UIScene lifecycle** with a Swift `UIWindowSceneDelegate` (the Expo template's `SceneDelegate: ExpoAppSceneDelegate`). This is where Apple/Expo are pushing every app ("Required by iOS 27"), and — importantly — it is the exact configuration behind the crash-handler freeze in [sentry-cocoa#9281](https://github.com/getsentry/sentry-cocoa/issues/9281). Keeping it as the sample's normal config means that bug class stays exercised by regular iOS CI. Since Expo 58 the prebuild template wires this up itself; the `plugins/withIosSceneLifecycle.js` config plugin only fails prebuild if the scene manifest disappears (template drift) and injects the test hook below.
18
18
19
19
### Crash-handler regression check
20
20
21
-
The same plugin injects a documented test hook: launching the app with the env var **`SENTRY_TEST_ABORT=1`** crashes it via `abort()` on a **background thread**~8s after launch. That makes SentryCrash's inline signal handler run off the main thread, forcing the crash-time screenshot (`attachScreenshot: true`) to read the MainActor scene-delegate `window` getter off-main — which **hangs** on an unfixed sentry-cocoa and **terminates cleanly** on a fixed one. The hook is inert unless the env var is set.
21
+
The plugin injects a documented test hook: launching the app with the env var **`SENTRY_TEST_ABORT=1`** crashes it via `abort()` on a **background thread**~8s after launch. That makes SentryCrash's inline signal handler run off the main thread, forcing the crash-time screenshot (`attachScreenshot: true`) to read the MainActor scene-delegate `window` getter off-main — which **hangs** on an unfixed sentry-cocoa and **terminates cleanly** on a fixed one. The hook is inert unless the env var is set.
22
22
23
23
`scripts/verify-ios-crash-screenshot-no-freeze.sh` (repo root) drives this end to end against whatever cocoa the SDK currently bundles, asserting a clean terminate + a captured `screenshot.png` with no `dispatch_assert_queue_fail` re-entry. It needs **Xcode 27 / iOS 26+** (Swift 6 isolation enforcement). To validate a local cocoa build before it is released, stage it and pass `SENTRY_XCFRAMEWORK_CACHE_DIR=<cache>` (containing `<version>/Sentry.xcframework`). The `.github/workflows/ios-crash-screenshot-no-freeze.yml` workflow runs it on a cocoa version bump (and on manual dispatch) — the fix ships in sentry-cocoa 9.30.1, so a red run means a regression.
0 commit comments