Prices Showing as NaN
This means Superwall couldn’t fetch product prices from StoreKit.Check Product Status
Products must be “Ready to Submit” or “Approved” in App Store Connect. Use
the debug script to check status:
bash node scripts/debug-appstore.js Verify Product IDs Match
Product IDs in Superwall dashboard must exactly match App Store Connect.
Common mistakes: - Extra spaces - Wrong capitalization - Typos
Test on Physical Device
Simulator cannot fetch real products from StoreKit. Use a physical device
with a sandbox account signed in.
Wait for Apple
New products can take 15-30 minutes to propagate through Apple’s systems.
Check Apple System Status for
outages.
PlacementNotFound
The placement name in your code doesn’t match any active Campaign in Superwall.Solutions
- Check Campaign Status Dashboard → Campaigns → Verify status is Active (not Draft)
-
Verify Placement Name
The placement in your code must exactly match the Campaign:
- Restart App After making changes in the dashboard, fully restart the app (not just reload).
Old Paywall Showing
Superwall caches paywall assignments. To see a new paywall:Superwall uses “sticky” assignments - users see the same paywall variant
consistently. Creating a new Campaign resets this.
Paywall Not Appearing
Check SuperwallProvider
Ensure your component is wrapped with the provider:Check API Key
Verify the API key is correct and starts withpk_.
Check Campaign Status
Dashboard → Campaigns → Must be ActiveCheck Console Logs
Look for errors in the console when triggering the placement.”Cannot connect to iTunes Store”
This is an Apple/StoreKit error, not Superwall.- Check internet connection
- Try a different sandbox account
- Wait a few minutes and retry
- Check Apple System Status
Simulator Testing
Simulators cannot connect to App Store Connect. Options:-
Use Physical Device (recommended)
- Sign into sandbox account in Settings → App Store
-
Use StoreKit Configuration File
- Xcode → File → New → StoreKit Configuration File
- Add products with matching IDs
- Edit Scheme → Run → Options → StoreKit Configuration
Multiple Navigations Back
If closing the paywall navigates back multiple screens: This happens when multiple callbacks fire. The template includes a guard:Superwall vs RevenueCat
| Feature | Superwall | RevenueCat |
|---|---|---|
| Paywall A/B Testing | ✅ Built-in | ❌ Manual |
| Remote Paywall Updates | ✅ Yes | ✅ Yes (Paywalls) |
| Subscription Management | ❌ No | ✅ Yes |
| Cross-Platform Sync | ❌ No | ✅ Yes |
| Analytics | ✅ Conversion focused | ✅ Revenue focused |
Still Stuck?
Remove / Disable
To disable payments while you configure Superwall, set:apps/mobile/features/feature-registry.tsx → featureFlags.payments = false
For production removal guidance, see Removing Features.