Hi,
Not sure what information to share to help debug this. It doesn’t happen always, but when trying to load the Paywall component using React Native it freezes randomly (not sure the reason). It makes me wonder if it could be happening in production.
I’m sharing the environment I’m using:
| Component | Version |
|---|---|
react-native-purchases | ^9.9.0 |
react-native-purchases-ui | ^9.9.0 |
PurchasesHybridCommon (iOS) | 17.37.0 |
RevenueCat (iOS native SDK) | 5.58.0 |
RevenueCatUI (iOS native) | 5.58.0 |
| React Native | 0.81.5 |
| Expo SDK | 54 |
| iOS Deployment Target | 16.2 |
| Xcode Simulator OS | macOS 26.3 (25D125) |
| Architecture | ARM-64 (Apple Silicon) |
According to Claude (after I dumped the crash report from the iOS simulator) it said this:
Issue:
RevenueCatUI.Paywallcauses main thread deadlock on iOS SimulatorThe native SwiftUI paywall (
RevenueCatUI.Paywall) triggers a HEIF image decode deadlock on the iOS Simulator, resulting in a0x8BADF00Dwatchdog kill.Crash signature:
- Main thread blocked on
__psynch_mutexwaitinsideSwiftUICore _SwiftUIProxyImage CA_prepareRenderValueduring aCA::Transaction::commit()- 10+
com.apple.SwiftUI.prepare-imagedispatch threads all blocked onsemaphore_wait_trapwaiting for HEVC codec sessions (CMPhotoCodecSessionPoolCreateDecompressionSession)Dispatch Thread Soft Limit Reached: 64 (too many dispatch threads blocked in synchronous operations)- Termination:
0x8BADF00D(main thread unresponsive >5s)Root cause: SwiftUI images in the paywall template are decoded as HEIF/HEVC. The simulator lacks hardware HEVC decoders, so all decode operations go through software codecs with a limited session pool. When the paywall renders, it spawns many concurrent image decodes that exhaust the pool, and the main thread deadlocks waiting for an image needed for the CA render commit.
Reproduction: Intermittent on iOS Simulator (ARM64 Mac). Does not reproduce on physical devices (hardware HEVC decoder).
I tried to remove the image from the Paywall, but nothing. I’m using a Storekit file I loaded using Xcode.
For now I’m skipping the paywall while developing, but any help it will be more than welcome and appreciated.
