A paying subscriber who cannot see their renewal date, current tier, or next charge amount inside the app has to dig through App Store or Play Store settings to answer basic billing questions — and many will just email support or dispute the charge instead. Hiding subscription status is also a common trigger for App Store Review Guideline 3.1.2 rejections on subscription transparency. The data is already in customerInfo.entitlements.active[...] on every launch; not surfacing it is pure UX negligence.
Medium because missing status UI drives support load and chargebacks without blocking the purchase flow itself.
Add a subscription status block to the Settings or Account screen that reads from the IAP SDK's cached customer info and renders tier, renewal date, and next billing amount. In src/screens/SettingsScreen.tsx:
const customerInfo = await Purchases.getCustomerInfo();
const premium = customerInfo.entitlements.active['premium'];
if (premium) {
return <Text>Premium — renews {premium.expirationDate}</Text>;
}
Include trial end date when a trial is active, and link to the platform's native subscription management screen for cancel/change flows.
app-store-iap-subscriptions.subscription-lifecycle.subscription-statusmediumcustomerInfo.entitlements.active[...].expirationDate, transaction.expirationDate (StoreKit 2), or API responses containing subscription period end timestamps. In RevenueCat: customerInfo.entitlements.active['premium']?.expirationDate. In Adapty: profile.accessLevels['premium']?.activatedAt and expiresAt. Failure pattern: premium status is gated (locked/unlocked UI) but no screen tells the user when their subscription renews or how much they will be charged next."No screen in the app displays subscription renewal date or status — premium users have no way to know when they will be charged or when their subscription expires" or "SettingsScreen shows 'Pro Member' badge but no renewal date, expiration, or subscription management options"// RevenueCat
const customerInfo = await Purchases.getCustomerInfo();
const premium = customerInfo.entitlements.active['premium'];
if (premium) {
const expiryDate = premium.expirationDate;
return <Text>Premium — renews {expiryDate}</Text>;
}