Start with the free submission checklist →
App Store Connect missing metadata: what to check for subscriptions
You installed react-native-purchases, set your API key, defined offerings, and the paywall works in TestFlight. Then Apple rejects the build: they could not find or purchase the subscription. One possible cause is that the product was not attached to the version under review in App Store Connect. Check that saved state before assuming the SDK integration is at fault.
What does “Missing Metadata” mean?
Inspect the subscription record and its subscription group for incomplete required information. Check localization, pricing and review information, including the review screenshot. Then verify review submission separately: a completed product record and a product included with an app version are different states. RevenueCat configuration alone does not confirm either one.
Two different systems
RevenueCat sits between your app and Apple. Your repository holds the SDK, the API key, and your offering configuration — everything RevenueCat needs at runtime. But whether a specific in-app purchase is submitted with a specific app version is state that lives only in App Store Connect. RevenueCat's own launch checklist and its products and entitlements docs walk through configuring products in App Store Connect first; the SDK reads that state, it does not create it.
Why Apple rejects it
A brand-new in-app purchase has to be submitted alongside a new app version: you select it on the version page in App Store Connect before you submit. If you do not, the reviewer's build has no purchase to exercise, so it reads as a non-functional or missing purchase and is rejected under app-completeness rules. Apple documents the submission flow in the App Store Connect Help and the completeness rule in Review Guideline 2.1. A purchase can sit in the "Ready to Submit" state and still not be attached to the build — the two are independent.
Why a repository check can only warn, never clear it
A static scan of your project can confirm the honest half: the purchase SDK is present, and if you keep a local metadata export it can check that a product is declared. What it cannot do is read your App Store Connect account to confirm the product is attached to this version — that would require signing in to Apple, which a local, network-free preflight will not do. So the correct output is not a pass and not a blocker: it is needs confirmation. The tool tells you exactly what to verify by hand and leaves the claim to you.
What to check before you submit
- Open the version in App Store Connect and confirm the subscription or product is listed under In-App Purchases and Subscriptions for that version.
- Confirm the product's own state is at least "Ready to Submit", and that its identifier matches the one your RevenueCat offering references.
- Test a real sandbox purchase and restore against the build you are submitting, not an older one.
The App Store Preflight Kit detects a purchase SDK, checks any committed store metadata, and — because it will not read your App Store Connect account — marks the attachment as needing confirmation with the exact step to verify. The playbook and agent pack are $29 one-time — see what they check.