Our first submission has now been rejected under Guideline 2.1(b), with the message: "the in-app purchases do not load successfully." Each review was performed on an iPad Air 11-inch (M3) running iPadOS 26.6.
The app sells only auto-renewable subscriptions. We cannot reproduce the failure, and we have verified every part of the configuration we can think of.
WHAT WE VERIFIED (via the App Store Connect API, not just the UI)
- Two subscriptions in one group, state READY_TO_SUBMIT
- Product IDs exactly match what the app requests
- Available in 175 territories, including the United States
- Prices set, en-US localizations present for both products and for the group
- App review screenshots attached to both, state COMPLETE
- Both subscriptions are included in the review submission (READY_FOR_REVIEW)
- Paid Apps Agreement: Active. Bank account: Active. Tax forms: Active.
WHAT WORKS
On our own devices, installed via TestFlight (sandbox environment), the products load correctly and a purchase completes and activates as expected. This works on both a real Apple ID and a Sandbox Tester account.
WHAT WE OBSERVED FROM THE REVIEW SESSION
We use RevenueCat. Their server-side API returns our offering with both packages and the correct product identifiers, so the offering metadata is fine. Our backend also shows that the reviewer's session reached our servers and signed in successfully at the review timestamp, so the device had working network connectivity.
That leaves StoreKit itself returning no products on the reviewer's device, which is what empties the offering.
QUESTIONS
-
Are there known conditions under which StoreKit returns no products in the App Review sandbox for subscriptions that are in "Ready to Submit" and are attached to the same submission as the binary?
-
For an app that has never been approved, is product loading during review handled differently from a normal sandbox session on a released app?
-
Is there any way to obtain diagnostics from a review session, or to ask the reviewer for a screenshot of the failing screen? Replies in Resolution Center so far have only repeated the original rejection text.
-
Is there anything specific to iPadOS 26.6 that could affect StoreKit 2 product lookups?
For the next submission we have added a timeout and automatic retries around the product lookup, plus a visible retry control instead of a spinner, in case the failure is a transient cold-start timeout. But we would rather understand the actual cause than keep guessing.
Any pointers appreciated.