| Feature | iOS | Android | ReactNative | Flutter |
|---|---|---|---|---|
| Purchase Handling | ||||
| Default purchase delegate | ✅ | ✅ | ✅ | ✅ |
| Custom purchase delegate | ✅ | ✅ | ✅ | ✅ |
| RevenueCat delegate | ✅ | ✅ | ✅ | 🚫 |
| Helium Events | ||||
| Listen for events via delegate | ✅ | ✅ | ✅ | ✅ |
| Add global event listener | ✅ | ✅ | 🚫 | 🚫 |
| Paywall event handlers | ✅ | ✅ | ✅ | ✅ |
| Custom paywall actions | ✅ | ✅ | ✅ | ✅ |
| Paywall Options | ||||
| Second try flow | ✅ | ✅ | ✅ | ✅ |
| “Should Show” for presented paywall | ✅ | ✅ | ✅ | ✅ |
| Dark mode support | ✅ | ✅ | ✅ | ✅ |
| Disable scroll | ✅ | ✅ | ✅ | ✅ |
| Automatic safe area support | ✅ | 🚫 | ✅ | ✅ |
| Intro offers | ✅ | ✅ | ✅ | ✅ |
| Presentation Options | ||||
| Modal presentation | ✅ | ✅ | ✅ | ✅ |
| Modal presentation callbacks | ✅ | ✅ | ✅ | ✅ |
| Embedded view | ✅ | ✅ | 🚫 | ✅ |
| Embedded view callbacks | ✅ | ✅ | 🚫 | ✅ |
| Loading State | ||||
| For modal presentation | ✅ | ✅ | ✅ | ✅ |
| For embedded view | ✅ | ✅ | 🚫 | 🚫 |
| Loading budget customizable | ✅ | ✅ | ✅ | ✅ |
| Loading budget per trigger | ✅ | ✅ | ✅ | ✅ |
| Fallbacks | ||||
| Fallbacks support | ✅ | ✅ | ✅ | ✅ |
| onFallback callback with presentUpsell | ✅ | ✅ | ✅ | 🚫 |
| forceShowFallback flag | ✅ | 🚫 | ✅ | ✅ |
| Entitlements | ||||
| Option to check entitlements for paywall before showing | ✅ | ✅ | ✅ | ✅ |
| hasAnySubscription/hasAnyEntitlement helpers | ✅ | ✅ | ✅ | ✅ |
| Entitlement persistence | ✅ | 🚫 | 🚫 | 🚫 |
| Cache per-trigger entitlement | ✅ | 🚫 | 🚫 | 🚫 |
| Testing | ||||
| QR code scan | ✅ | ✅ | ✅ | ✅ |
| Logging | ||||
| Logging levels | ✅ | ✅ | 🚫 | 🚫 |
| Analytics | ||||
| Custom user traits | ✅ | ✅ | ✅ | ✅ |
| Custom paywall traits | ✅ | ✅ | ✅ | ✅ |
| Revenue tracking | ✅ | ✅ | ✅ | ✅ |
| Experimentation | ||||
| Allocations | ✅ | ✅ | ✅ | ✅ |