Hello,
My app "MyCourses" (bundle id: com.ahmedbaqer.mycourses) was rejected under Guideline 2.1 because "No action followed when we tapped the button to subscribe to a course" on iPadOS 26.1.
When I run the same code (version 1.0.0 (11)) from Xcode on a real device using a StoreKit configuration file (In App Purchase.storekit), the purchase flow works correctly:
- When I tap the "Subscribe via Apple" button, the App Store purchase sheet appears.
- The purchase completes successfully and unlocks the course.
- I use the
in_app_purchaseFlutter plugin andqueryProductDetailsto load products.
However, when I install the build via TestFlight (and in App Review), tapping the same "Subscribe via Apple" button does nothing – which matches the behavior described by App Review. From my logs it looks like queryProductDetails is returning an empty productDetails list in that environment.
For In‑App Purchases:
- I created 7 non‑consumable products in App Store Connect.
- Their Product IDs exactly match the IDs in my
In App Purchase.storekitfile (used only for local Xcode testing). - All IAPs are now in "Waiting for Review" status and are linked to the iOS app version 1.0.0 (11) in the “In‑App Purchases and Subscriptions” section.
At the time of the original review, some IAPs were in "Developer Action Needed / Rejected" state, so I suspect queryProductDetails may have returned no products and the reviewer saw no action after tapping the button.
My questions:
- When IAP products are in "Waiting for Review" and linked to the app version, should
queryProductDetailsreturn them during App Review / TestFlight, or do they need to be fully approved first? - Is there any additional configuration required so that the subscribe button reliably shows the App Store purchase sheet for reviewers (for example, any specific StoreKit / sandbox settings)?
- Are there recommended best practices to show a clearer error state when
queryProductDetailsreturns no products, so that App Review understands this is a configuration / IAP-status issue rather than a UI bug?
Any guidance from Apple engineers or other developers who faced a similar situation would be greatly appreciated.
Thanks in advance.