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.