I’m using RevenueCat’s new paywall components with the Flutter SDK (flutter_purchases ^9.2.0). On Android, the paywall displays localized prices correctly using {{ product.price_per_year }} and {{ product.price_per_month }}. On iOS, those same variables are always blank when the user navigates to the paywall.
Here’s what I’ve already verified:
-
The app is live in production on the App Store (not TestFlight).
-
The subscription product is approved, cleared for sale, and has U.S. pricing active.
-
All legal agreements in App Store Connect are signed and up to date.
-
The product belongs to a valid subscription group, and product identifiers match across App Store Connect, RevenueCat, and the app code.
-
Only base price variables (
{{ product.price_per_* }}) are used, since there are no introductory offers configured. -
The RevenueCat dashboard shows the iOS product as active (not missing).
-
Verified on multiple real iOS devices with different Apple IDs. The issue persists on all devices.
-
English (U.S.) localization exists for both the product and the subscription group in App Store Connect.
-
Reinstalling the app, logging out and back into the App Store, and changing storefront region did not resolve it.
The paywall loads fine, but price variables remain blank on iOS even though everything works correctly on Android.
Has anyone experienced this behavior where iOS paywall price variables stay blank despite valid setup and active products?
Could this be related to a localization or StoreKit data issue on the iOS side, or a potential bug in the Flutter SDK?
