Hello,
I’m experiencing repeated rejections related to Guideline 2.1 – App Completeness for an iOS app using auto-renewable subscriptions, and I’m struggling to understand what is missing, as the purchase flow works correctly in sandbox and TestFlight.
App setup:
iOS app built with React Native (Expo + react-native-iap)
Auto-renewable subscriptions:
• Monthly: €4.99
• Yearly: €39.99
Paid Apps Agreement accepted
Subscriptions configured and active in App Store Connect
Privacy Policy and Apple Standard EULA included:
• Visible inside the app on the subscription screen
• Added in App Store metadata
What App Review reports:
App Review states they are unable to buy the in-app purchase, resulting in a rejection under Guideline 2.1 (App Completeness).
What works correctly:
getSubscriptions() returns valid products in sandbox
Subscription titles, prices, and durations are displayed in the app UI
requestSubscription() is triggered when tapping the subscribe button
Apple purchase sheet appears and completes successfully in:
• Sandbox testing
• TestFlight (external testers)
What I’ve verified:
No conditional logic blocks purchases in review builds
Purchase button always calls requestSubscription
purchaseUpdatedListener and purchaseErrorListener are correctly registered
No hardcoded prices; prices come from StoreKit
Same behavior on iPhone and iPad
Question:
Is there any known limitation or requirement in the App Review environment for auto-renewable subscriptions that differs from sandbox/TestFlight when using a custom subscription UI (not SubscriptionStoreView)?
If App Review requires a specific implementation detail (StoreKit 2, SubscriptionStoreView, or something else), I would really appreciate clarification, as this is not explicitly stated in the rejection.
Thank you for your help.
Selecting any option will automatically load the page