A .storekit file is not an in-app purchase
A .storekit file in your project configures StoreKit testing in Xcode. It is development configuration and nothing else: the products it describes do not exist on the App Store. Real products are created in App Store Connect and have to be submitted for review along with the app.
Why it matters
StoreKit testing exists so you can exercise purchase flows in the simulator without touching real products. That makes it easy to build a complete, working purchase experience against products that have never been created for real.
Products in App Store Connect have their own review state. A product left in a draft state is not reviewed and not available, so the purchase fails in the reviewer’s build the same way it would for a customer.
For a first submission, in-app purchases have to be submitted together with the app version. Creating them and leaving them unsubmitted is the step most often missed.
How to fix it
- Create each product in App Store Connect with the same product identifier your code requests.
- Complete the required metadata for each: display name, description, price and the App Review screenshot.
- Submit the products for review with the app version, rather than assuming they ship because they exist.
- Check the product state in App Store Connect right before you submit. The state, not the existence, is what decides whether it works.
The guidelines behind it
Read from Apple’s App Review Guidelines as last updated October 16, 2026.
What ReviewAhead checks
App Store Connect products. A local .storekit file is development configuration, not real products.
- Whether the project contains a local .storekit configuration file and says plainly that it is not evidence of real products.
- Asks whether the products exist and are submitted in App Store Connect, and reads the products and subscription groups back from your account when it is linked.
Apple’s own documentation for this requirement: developer.apple.com. Where this page and Apple disagree, Apple is right and this page is a bug.