Our app is experiencing native crashes on iOS when displaying RevenueCat paywalls. The crash occurs in Apple's HEIF image decoder when trying to render paywall images served in HEIC format.
Environment
- RevenueCat SDK (react-native) version: 9.6.9
- iOS versions affected: iOS 17.x, iOS 18.5 (confirmed)
- Devices: iPhone 13, and likely others
- App framework: React Native / Expo
Crash Stack Trace
Thread #0 (main):
VideoToolbox VTDecompressionSessionRemoteClient_CopyProperty
VideoToolbox VTDecompressionSessionRemote_CopyProperty
CMPhoto VTDecompressionPluginClass_copyPixelBufferAttributes
CMPhoto HEIFItemDecoderCreate
CMPhoto _decodeItem
CMPhoto _applyDecodeStrategy
CMPhoto _decodeImage
CMPhoto _decodeAuxiliaryImage
CMPhoto _createAuxiliaryImageForIndex
CMPhoto _createImageForIndex
CMPhoto CMPhotoDecompressionContainerCreateImageForIndex
ImageIO HEIFReadPlugin::copyImageBlockSetImp
ImageIO HEIFReadPlugin::decodeImageImp
...
QuartzCore CA::Render::copy_image
QuartzCore CA::Render::prepare_image
QuartzCore CA::Layer::prepare_contents
Root Cause
RevenueCat serves paywall images in HEIC format (e.g., https://assets.pawwalls.com/xxxxx.heic).
Apple's ImageIO HEIF decoder has known bugs in iOS 17+ and iOS 18 that cause crashes during image decoding. This was acknowledged by Apple and documented in several open-source projects:
- SDWebImage Issue #3606 - iOS 17 HEIF decode crash
- libheif Issue #1190 - iOS 18 HEIC format changes
The crash occurs in the native rendering pipeline (QuartzCore → ImageIO → HEIFReadPlugin) and cannot be caught by application-level error handlers.
Request
Could RevenueCat consider:
- Serving paywall images in JPEG/PNG format instead of HEIC to avoid iOS decoder bugs
- Or providing an option to specify preferred image format
- Or using a more resilient image loading approach that handles HEIC decoder failures gracefully
Impact
This crash affects a portion of our iOS users and results in the app terminating when trying to display paywalls - directly impacting our ability to convert users to paid subscriptions.
