StoreKit

RSS for tag

Support in-app purchases and interactions with the App Store using StoreKit.

StoreKit Documentation

Posts under StoreKit subtopic

Post

Replies

Boosts

Views

Activity

Subscription bundle & suite testing failure on XCode 27 Beta 3
I'm quite excited about the newly announced bundle and suite feature and trying to test the new Subscription Bundle type introduced in the recent Xcode Beta (using a local .storekit configuration file). I have set up: A local .storekit file. Inside it, I configured a Subscription Bundle with the ID "bundle". This bundle is linked to two internal auto-renewable subscriptions in the same file. The StoreKit configuration is active in my Scheme options. When I try to fetch a standard auto-renewable subscription ID, it works perfectly. However, when I try to fetch the "bundle" ID, the API returns successfully but with an empty array [] (no errors thrown). Is there a different way to query/fetch the new Subscription Bundle type in StoreKit 2, or is local testing for bundles not yet supported in the simulator in this beta? My sample code import StoreKit @MainActor class StoreManager: ObservableObject { @Published var products: [Product] = [] func fetchProducts() async { do { // "bundle" is defined in our local .storekit file as a SubscriptionBundle self.products = try await Product.products(for: ["bundle"]) print("Fetched products: \(self.products.map { $0.id })") } catch { print("Fetch error: \(error)") } } } struct ContentView: View { @StateObject private var store = StoreManager() var body: some View { VStack { if store.products.isEmpty { Text("Stuck Loading: Product not found.") } else { ForEach(store.products, id: \.id) { product in Text("Found: \(product.displayName) - \(product.displayPrice)") } } } .task { await store.task { await store.fetchProducts() } } } } My storekit "appPolicies" : { "eula" : "", "policies" : [ { "locale" : "en_US", "policyText" : "", "policyURL" : "" } ] }, "identifier" : "2B237494", "nonRenewingSubscriptions" : [ ], "products" : [ ], "settings" : { "_askToBuyEnabled" : false, "_billingGracePeriodEnabled" : false, "_billingIssuesEnabled" : false, "_disableDialogs" : false, "_failTransactionsEnabled" : false, "_locale" : "en_US", "_renewalBillingIssuesEnabled" : false, "_storefront" : "USA", "_storeKitErrors" : [ ], "_timeRate" : 0 }, "subscriptionBundleGroups" : [ { "id" : "EE1EB207", "localizations" : [ ], "name" : "bundle_group", "subscriptions" : [ { "displayPrice" : "0.99", "duration" : "P1M", "groupNumber" : 1, "internalID" : "84A95B47", "introductoryOffers" : [ { "billingPlanType" : "BILLED_UPFRONT", "internalID" : "DD9208A6", "numberOfPeriods" : 1, "paymentMode" : "free", "subscriptionPeriod" : "P1W" } ], "isFamilyShareable" : false, "linkedSubscriptions" : [ { "internal" : "D1A384C1" }, { "internal" : "01ABB5D2" } ], "localizations" : [ { "description" : "", "displayName" : "", "locale" : "en_US" } ], "productID" : "bundle", "referenceName" : "Awesome Bundle", "subscriptionGroupID" : "EE1EB207", "type" : "SubscriptionBundle" } ] } ], "subscriptionGroups" : [ { "id" : "84E94B59", "localizations" : [ ], "name" : "premium_group", "subscriptions" : [ { "adHocOffers" : [ ], "billingPlans" : [ { "billingPlanType" : "BILLED_UPFRONT", "commitmentDisplayPrice" : "1.99", "displayPrice" : "1.99", "internalID" : "21C9C75B", "isEnabled" : true } ], "codeOffers" : [ ], "displayPrice" : "1.99", "familyShareable" : false, "groupNumber" : 1, "internalID" : "D1A384C1", "introductoryOffer" : { "billingPlanType" : "BILLED_UPFRONT", "displayPrice" : "0.99", "internalID" : "F0651A66", "numberOfPeriods" : 1, "paymentMode" : "payUpFront", "subscriptionPeriod" : "P1M" }, "introductoryOffers" : [ { "billingPlanType" : "BILLED_UPFRONT", "displayPrice" : "0.99", "internalID" : "F0651A66", "numberOfPeriods" : 1, "paymentMode" : "payUpFront", "subscriptionPeriod" : "P1M" } ], "localizations" : [ { "description" : "", "displayName" : "", "locale" : "en_US" } ], "productID" : "premium_monthly", "recurringSubscriptionPeriod" : "P1M", "referenceName" : "premiume monthly", "subscriptionGroupID" : "84E94B59", "type" : "RecurringSubscription", "winbackOffers" : [ ] } ] }, { "id" : "39607B86", "localizations" : [ ], "name" : "basic_group", "subscriptions" : [ { "adHocOffers" : [ ], "billingPlans" : [ { "billingPlanType" : "BILLED_UPFRONT", "commitmentDisplayPrice" : "0.99", "displayPrice" : "0.99", "internalID" : "0FAC3C7D", "isEnabled" : true } ], "codeOffers" : [ ], "displayPrice" : "0.99", "familyShareable" : false, "groupNumber" : 1, "internalID" : "01ABB5D2", "introductoryOffers" : [ ], "localizations" : [ { "description" : "", "displayName" : "", "locale" : "en_US" } ], "productID" : "basic_monthly", "recurringSubscriptionPeriod" : "P1M", "referenceName" : "basic monthly", "subscriptionGroupID" : "39607B86", "type" : "RecurringSubscription", "winbackOffers" : [ ] } ] } ], "subscriptionSuiteGroups" : [ ], "version" : { "major" : 6, "minor" : 3 } }
0
0
322
Jul ’26
"Sandbox Apple Account" Developer Setting Does Not Work
I am trying to test a sandbox account for an in-app subscription. It will not work. When I try to check out in my app, I'm told... 2026-07-08 14:41:59.282977-0700 PlainSite[1364:48033] [Default] [StoreKit] Purchase did not return a transaction: Error Domain=ASDErrorDomain Code=500 "Unhandled exception" UserInfo={NSUnderlyingError=0x2835d21f0 {Error Domain=AMSErrorDomain Code=100 "Authentication Failed" UserInfo={NSMultipleUnderlyingErrorsKey=( "Error Domain=AMSErrorDomain Code=2 \"An unknown error occurred. Please try again.\" UserInfo={NSLocalizedDescription=An unknown error occurred. Please try again.}", "Error Domain=AMSServerErrorDomain Code=-5000 \"(null)\" UserInfo={failureType=-5000, m-allowed=false, pings=(\n), cancel-purchase-batch=true, customerMessage=Check the account information you entered and try again.}" ), NSLocalizedDescription=Authentication Failed, NSLocalizedFailureReason=The authentication failed.}}, NSLocalizedFailureReason=An unknown error occurred, NSLocalizedDescription=Unhandled exception} [CreateAccountView] purchaseForSignup threw: userCancelled This is false. The user (me) did not cancel. This is with me manually typing in the sandbox credentials as the Apple ID and password at the point of completing the transaction on both iOS 15 and iOS 26. So I try to make sure that my sandbox account is properly set in iOS 26's Settings -> Developer -> Sandbox Apple Account screen. It says Sign In. Then it says "Apple Account Sign in Requested". What does this actually mean? Who knows. It could mean my App Store Connect credentials are what it wants so that it can query which sandbox accounts are available to use—after all, that is where they are set up. It could also mean that you should type in the sandbox account's credentials directly because a sandbox account is basically a fake Apple ID. I try both. Neither works. No matter what I do, it just goes back to the Developer view and says "Sign In". Have I signed in? I don't know. Maybe, but probably not, given that nothing works. Is the problem that I didn't confirm the sandbox account's e-mail address? No. It doesn't work before or after I've confirmed the e-mail. Is the problem that I don't have two-factor authentication on for the sandbox account? No. It doesn't work whether or not two-factor authentication is enabled. I am not the only one having this problem. People on a certain Reddit thread I'm for some reason not allowed to link to here (sandbox_accounts_simulator_help) have been having it for the past year it looks like, except they got it to work on a real device, and I'm using an iPhone 17, which is a real device, and it doesn't work. This is the third bug in Apple's code I've found in the past couple of weeks that is preventing me from getting my app published and it's getting frustrating. Any assistance would be appreciated. Fix your code, Apple.
2
0
429
Jul ’26
Product.SubscriptionInfo.Status.all returns empty for accounts with an active auto-renewable subscription
Summary: We gate premium access on the renewal status returned by Product.SubscriptionInfo.Status.all, following the pattern in your Implementing a store in your app using the StoreKit API sample (CustomerEntitlements.checkCurrentStatuses()). In production we are seeing a subset of users whose Status.all yields zero statuses, even though they hold an active subscription with a future expiration date (according to our own persisted state). This causes us to incorrectly treat them as unsubscribed. How we read status: func currentSubscriptionStatuses() async -> [SubscriptionStatusInfo] { await Product.SubscriptionInfo.Status.all .collect() .flatMap(.1) .compactMap(SubscriptionStatusInfo.init(skStatus:)) } The compactMap only drops entries failing case .verified. In the affected cases Status.all itself emits no (groupID, statuses) pairs at all - the sequence is empty, not filtered. Affected population: Previously had an active paid subscription (our own persisted state shows pro with an expiry date in the future). Not new installs. Questions: Under what conditions can Product.SubscriptionInfo.Status.all return an empty sequence for an Apple Account that currently holds an active auto-renewable subscription (e.g. not signed into the App Store, StoreKit not yet initialized at launch, offline, renewal in flight, Family Sharing)? Is an empty result from Status.all ever authoritative ("no subscription"), or must it always be treated as inconclusive and never used to revoke access? Is there a recommended way to distinguish "no subscription for this account" from "status temporarily unavailable" (e.g. a signal for no signed-in App Store account, or a readiness/error path)? Does Status.all guarantee it reflects a signed-in account context, and what is the expected behavior when the device has no active App Store account at call time?
0
2
348
Jul ’26
Our sandbox accounts don't work now.
Our sandbox accounts don't work now. We are testing our IAP product now, so we need our sandbox accounts to be logged in, for purchaise test. Settings -> Developer -> Sandbox Apple Account screen - > log in : Not working Logged out status -> test app -> purchasing IAP product : Not working our 4 members of dev team have same problem now.
0
0
283
Jul ’26
Non-Consumable IAP stuck in ‘Developer Action Required’ – cannot link to version page
My Non-Consumable IAP was rejected with Guideline 3.1.1 and now has status ‘Developer Action Required’. The problem: On the version page in App Store Connect, the ‘In-App Purchases and Subscriptions’ section does not appear at the bottom. I cannot link the IAP to a new version submission. Every time I submit a new binary, Apple approves the app version but rejects the IAP afterward — even though I have no way to attach it to the version in the first place. This seems to be a circular issue: the IAP doesn’t appear on the version page because of its current status, but the only way to fix the status is to submit it with a new version. Has anyone experienced this and found a solution? Any help appreciated!​​​​​​​​​​​​​​​​
4
0
571
Jul ’26
In App Purchase Sandbox Testing - Clear Purchase History Not Working
I'm testing iAP in a sandbox account (as configured in App Store Connect under 'Sandbox Testers'). So the in app purchase works. Cool. But I wanted to retry it. So I cleared the purchase history (both in App Store Connect and on my iPad in the 'Developer' section in Settings). But when I relaunch my app the purchase still validates and my app displays the item as 'unlocked'. Figure the receipt must still be cached so I nuke the app and completely reinstall it but it appears StoreKit is still getting the receipt and it isn't being cleared because my app is displaying it as 'purchased.' Also tried rebooting the iPad. But the sandbox purchase doesn't clear. I just did a sandbox test since it is closer to real life than StoreKit Configuration so I just wanted to do it a few times to make sure all is good but making a burner test account for every purchase is kind of tiresome. Anyone know of a workaround? I might just declare victory and go back to StoreKit Configuration.
3
2
403
Jul ’26
SKTestSession configurations broken?
SKTestSession configurations seem to have been broken starting in Xcode 26.3. The release notes for iOS 26.5 indicate that it was supposed to be fixed there, but I still haven't been able to get it to work. Is there something that has changed recently about how SKTestSession configurations need to be used?
4
2
477
Jul ’26
Cannot load products in Sandbox
Hi, I'm trying to hook up some test in app purchases to test purchase code between our app and our app's backend. When I try to load products (requestProductData) with my Sandbox account, my product identifiers come back in the invalid product identifiers member of the response. My product says it's in "waiting for review" status in app store connect, and I'm logged in to the app store with my sandbox account on my device. We just accepted the paid apps agreement as well--is there some propagation time to that? The product ID I'm using (both in app store connect and in-app) is test_durable. Do I need to append the package name to that or something? I've dug through the docs and through the forums here and come up empty. I tried using the Xcode storekit test harness and the issue there is that because that doesn't actually talk to the store apis, I can't use that to test my backend correctly validating/processing the transactions. Thanks!
0
0
350
Jul ’26
StoreKit 2 returns no products for auto-renewable subscriptions in TestFlight
Hi everyone, I’m having an issue where my TestFlight build cannot load auto-renewable subscription products from App Store Connect. The app is built with Flutter and uses StoreKit 2 through an in-app purchase implementation. The same subscription system works correctly on Google Play Billing and returns product details/prices there, but on iOS StoreKit returns no subscription products. I tested this on a real iPhone installed from TestFlight, not from Xcode debug and not using a local StoreKit configuration. The app requests four auto-renewable subscription product IDs. The IDs in code exactly match the product IDs in App Store Connect. The app diagnostics show: Platform: iOS StoreKit mode: StoreKit 2 Store available: true Requested IDs: 4 subscription product IDs Returned IDs: none Missing IDs: all requested product IDs Error source: app_store Error code: storekit_no_response Error message: StoreKit: Failed to get response from platform. Store note: The store accepted the query, but did not return details for these product IDs. Things I have already checked: Product IDs match exactly between Flutter code and App Store Connect Bundle ID matches the App Store Connect app record In-App Purchase capability is enabled Subscriptions are in one subscription group Subscription availability is set for all countries/regions The TestFlight build is installed on a real device Local StoreKit configuration was removed StoreKit reports store availability as true App Store Connect / In-App Purchase keys are configured for backend verification The same product-loading flow works on Google Play The current App Store Connect status for the subscriptions is: Subscriptions: Ready to Submit / Ready for Review Localizations: Prepare for Submission Also, the bank information is not submitted yet. My question is: can StoreKit in TestFlight return subscription product details while the first auto-renewable subscriptions are still only “Ready to Submit” and have not yet been submitted with an app version for review? Or will StoreKit return no products until: The first subscriptions are attached to an app version and submitted for review Subscription localizations are fully prepared/submitted Paid agreements, tax, and banking are fully completed Since StoreKit is available and accepts the product query, but returns zero products, I’m trying to understand whether this is expected App Store Connect behavior or if there is another configuration issue I should check. Thanks.
1
0
598
Jun ’26
StoreKit 2: Transaction.all and Transaction.currentEntitlements return empty for valid non-consumable purchases in production
FB: https://feedbackassistant.apple.com/feedback/22556883 We're seeing a small number of production users where both Transaction.currentEntitlements and Transaction.all return zero transactions for a valid, active, non-refunded non-consumable IAP. This makes it impossible to restore the purchase via any StoreKit 2 API. Environment: Xcode 26.4 (Build 17E192) iOS 26.4.1 Direct call to SK2 Transactions.all & Flutter in_app_purchase package v3.2.3 (uses SK2 on iOS 15+) Non-consumable IAP (one-time purchase) What we observe: AppStore.sync() triggers but the purchase stream returns 0 transactions Transaction.all returns empty Transaction.currentEntitlements also returns empty User is confirmed on the correct Apple ID Issue reproduces on both iPhone and Mac for the same Apple ID Issue appears to have started recently for users who previously had no problems Debug log from affected production user: [2026-04-20T08:50:10.744115Z] init: iapAvailable=true [2026-04-20T08:50:10.744566Z] init: isPremium=false [2026-04-20T08:50:10.744567Z] init: triggering silent restorePurchases [2026-04-20T08:50:45.974566Z] restore: started [2026-04-20T08:50:45.986848Z] restore: sk2Transactions count=0 [2026-04-20T08:50:45.993004Z] restore: sk2Direct isVerified=false active=null [2026-04-20T08:50:45.993011Z] restore: sk2Direct inconclusive — falling back to standard restore [2026-04-20T08:51:16.000851Z] restore: timed out after 30s — fallback isPremium=false [2026-04-20T08:51:16.000910Z] restore: completed — succeeded=false foundPurchase=false Unable to reproduce in sandbox — Transaction.all works correctly there. Appears specific to production for a small subset of users. Has anyone else seen this?
23
5
2.8k
Jun ’26
Your first subscription must be submitted with a new app version.
I have seen this problem arise from multiple sources. I am trying to submit my app but a new app version must be bundled with the subscription. The guide consistently says (copy pasted from the "Submit an In-App Purchase" guide) _"On the right, scroll down to the In-App Purchases and Subscriptions section. Click Select In-App Purchases or Subscriptions, or if you’ve already started selecting In-App Purchases or subscriptions, click Edit."_ The problem is there IS NO In-App Purchases or subscription section in the the app section. I have submitted again but at this point I'm loosing hope. I am hoping that adding a StoreKit config file this time on the Xcode side will help however again reading "submission (1)" does not give much hope. Please help as this has delayed launch by quite a lot.
0
0
311
Jun ’26
Can Product.products / SKProductsRequest be used only for display metadata when EU storefront uses ExternalPurchaseCustomLink only?
This is a StoreKit / ExternalPurchaseCustomLink clarification. Apple DTS asked me to post the follow-up question here. We are designing an SDK for apps that support EU external purchase. In EU storefronts, the app will use ExternalPurchaseCustomLink only: No App Store In-App Purchase will be offered to users. No Product.purchase() will be called. No SKPaymentQueue.add(_:) will be called. The actual purchase will happen only on our external website through the ExternalPurchaseCustomLink flow. Question: In this EU ExternalPurchaseCustomLink-only setup, is it acceptable and supported to call Product.products(for:) / SKProductsRequest only to fetch product display metadata from App Store Connect? The metadata would only be used to display the product list UI, for example: product title / display name localized price currency / priceLocale formatting information The returned Product / SKProduct would not be used to start an App Store purchase. Or should apps avoid Product.products(for:) / SKProductsRequest entirely in EU storefronts where only ExternalPurchaseCustomLink is offered, and use their own product catalog instead?
1
0
417
Jun ’26
IAP products not loading in sandbox after activating Paid Apps Agreement
I activated the Paid Apps Agreement today along with banking and tax information. My app uses react-native-purchases (RevenueCat) with StoreKit 2. When tapping purchase buttons in TestFlight I still get "Product not available - Could not load this product." Products show "Waiting for Review" in App Store Connect. Sandbox tester is configured. Is there a delay after activating the Paid Apps Agreement before sandbox purchases work? How long should I expect to wait?
0
0
315
Jun ’26
New auto-renewable subscription not appearing in sandbox (getOfferings/StoreKit returns 0) after re-creating the product — new app, not yet approved
I have a new app (first version, not yet approved) with one auto-renewable subscription. Earlier in development, the subscription loaded and I could complete a sandbox purchase (the StoreKit sheet showed "Sandbox", the price, and my sandbox account). To resolve an App Store Connect submission deadlock, I deleted that subscription and created a new one with a new Product ID. Since then, the new subscription does NOT appear in the sandbox: StoreKit returns no products, so getOfferings (via RevenueCat) returns 0 packages — both during App Review and on my own development build signed into a sandbox account. Configuration (all verified): Subscription is "Ready to Submit" / "Waiting for Review" Available in all territories Paid Apps Agreement active; banking and tax complete Bundle ID and shared secret unchanged from when it worked App Review keeps rejecting under Guideline 2.1(b) ("プレミアムをはじめる" / purchase button unresponsive) because the product never loads. Questions: For a newly created IAP on a not-yet-approved app, how long does it take to become available in the sandbox? Is there a known propagation delay (24h+)? Does re-creating the product with a new Product ID reset or delay sandbox availability? Is anything required for a new product to be served in the sandbox before the app's first version is approved? Any guidance appreciated. Thanks!
1
0
417
Jun ’26
Help with Subscriptions and Localization
Let me start by saying i found 1000s of posts for similar topic and nothing so far worked for me so im here now. This is the first im i developed an app with subscriptions now the problem im facing it is showing missing metadata on all subscriptions i created. inside there is no error just on localization section it shows "Prepare for Submission" and hovering it says i have to submit localization seperately. Now the question is there is no way to submit localization and no way to select subscription when im submitting app for review which i believe is for above reason. I have followed almost everything available online since yesterday from business to screenshots to notes nothing so far worked for me. Need your support to resolve this issue asap Thank you
1
0
449
Jun ’26
initConnection() from react-native-iap throws "undefined is not a function" in TestFlight build — StoreKit not connecting
Platform & Versions React Native: 0.85.3 Expo SDK: 56 react-native-iap: 15.3.3 iOS: 18.7.8 Device: iPhone 16 Pro Distribution: TestFlight (distribution: "store" via EAS Build) Problem In a TestFlight build (App Store distribution, not ad-hoc), calling initConnection() from react-native-iap throws a TypeError: "undefined is not a function" on iOS. This happens on every app launch. The error is caught in a try/catch around initConnection() and we never reach getSubscriptions() or purchaseUpdatedListener(). The app never connects to StoreKit. All IAP attempts fail immediately with "Store unavailable." What we've confirmed Sandbox tester account is configured in Settings → App Store → Sandbox Account "Allow Purchases & Renewals" is ON in the Sandbox Testing screen An active sandbox subscription exists (visible in Settings → App Store → Sandbox Account → Subscriptions), meaning StoreKit was reachable at some earlier point react-native-iap is listed in the Expo config plugins in app.json — EAS should be linking StoreKit.framework and adding the com.apple.developer.in-app-payments entitlement Built with --clear-cache to force a clean native project generation All 5 IAP product IDs (2 subscriptions, 3 consumables) are linked to the app version in App Store Connect and are in "Ready to Submit" state ITSAppUsesNonExemptEncryption is set to false in Info.plist Code try { await initConnection(); // throws "undefined is not a function" // never reaches here await getSubscriptions({ skus: ['com.smartailearning.iem.pro.yearly', 'com.smartailearning.iem.pro.monthly'] }); } catch (e) { console.error(e.message); // "undefined is not a function" } Question Is react-native-iap v15 incompatible with React Native 0.85 / Expo SDK 56 on iOS? Is there a known issue with the StoreKit native module not loading in EAS-managed builds? Should we be using StoreKit directly via a custom native module instead?
0
0
260
Jun ’26
First app release rejected because IAPs didn’t appear, and now the In-App Purchases section is missing from the app version page
I’m trying to submit the first release of my iOS app together with the app’s first consumable in-app purchases, and I’m stuck in what looks like an App Store Connect state issue. My app was already rejected by App Review because the in-app purchases did not appear inside the app when the reviewer opened the paywall. Current setup: First app release Current app version page: iOS App Version 1.0.2 Current attached build: 5 App has never been released before 4 consumable IAPs: com.glowup.credits.100 com.glowup.credits.500 com.glowup.credits.1000 com.glowup.credits.2500 What I see in App Store Connect: All 4 IAPs show Waiting for Review On the iOS App Version 1.0.2 page, the In-App Purchases and Subscriptions section does not appear at all Because of that, I cannot explicitly select or attach the IAPs from the version page What I’ve already done: Uploaded a new build and attached build 5 to version 1.0.2 Removed my local StoreKit configuration file so the app now uses live App Store / StoreKit only Confirmed RevenueCat is configured correctly and sees the offering/packages RevenueCat logs show the products exist remotely, but StoreKit cannot fetch any live products and returns an “offerings empty / none of the products could be fetched” type error RevenueCat also reports the products are still in WAITING_FOR_REVIEW My questions: If the IAPs already show Waiting for Review, are they automatically linked to the current app submission? Is it expected that the In-App Purchases and Subscriptions section can disappear from the app version page in this state? For a first-release app that was already rejected, is attaching a new build and clicking Update Review enough, or is there another step required to associate the IAPs with the resubmission? Has anyone seen App Review reject an app for missing IAPs while the IAPs were still pending review and not yet fetchable from StoreKit? Any guidance from someone who has dealt with this exact first-release + first-IAP submission flow would help a lot.
2
0
579
Jun ’26
Subscription bundle & suite testing failure on XCode 27 Beta 3
I'm quite excited about the newly announced bundle and suite feature and trying to test the new Subscription Bundle type introduced in the recent Xcode Beta (using a local .storekit configuration file). I have set up: A local .storekit file. Inside it, I configured a Subscription Bundle with the ID "bundle". This bundle is linked to two internal auto-renewable subscriptions in the same file. The StoreKit configuration is active in my Scheme options. When I try to fetch a standard auto-renewable subscription ID, it works perfectly. However, when I try to fetch the "bundle" ID, the API returns successfully but with an empty array [] (no errors thrown). Is there a different way to query/fetch the new Subscription Bundle type in StoreKit 2, or is local testing for bundles not yet supported in the simulator in this beta? My sample code import StoreKit @MainActor class StoreManager: ObservableObject { @Published var products: [Product] = [] func fetchProducts() async { do { // "bundle" is defined in our local .storekit file as a SubscriptionBundle self.products = try await Product.products(for: ["bundle"]) print("Fetched products: \(self.products.map { $0.id })") } catch { print("Fetch error: \(error)") } } } struct ContentView: View { @StateObject private var store = StoreManager() var body: some View { VStack { if store.products.isEmpty { Text("Stuck Loading: Product not found.") } else { ForEach(store.products, id: \.id) { product in Text("Found: \(product.displayName) - \(product.displayPrice)") } } } .task { await store.task { await store.fetchProducts() } } } } My storekit "appPolicies" : { "eula" : "", "policies" : [ { "locale" : "en_US", "policyText" : "", "policyURL" : "" } ] }, "identifier" : "2B237494", "nonRenewingSubscriptions" : [ ], "products" : [ ], "settings" : { "_askToBuyEnabled" : false, "_billingGracePeriodEnabled" : false, "_billingIssuesEnabled" : false, "_disableDialogs" : false, "_failTransactionsEnabled" : false, "_locale" : "en_US", "_renewalBillingIssuesEnabled" : false, "_storefront" : "USA", "_storeKitErrors" : [ ], "_timeRate" : 0 }, "subscriptionBundleGroups" : [ { "id" : "EE1EB207", "localizations" : [ ], "name" : "bundle_group", "subscriptions" : [ { "displayPrice" : "0.99", "duration" : "P1M", "groupNumber" : 1, "internalID" : "84A95B47", "introductoryOffers" : [ { "billingPlanType" : "BILLED_UPFRONT", "internalID" : "DD9208A6", "numberOfPeriods" : 1, "paymentMode" : "free", "subscriptionPeriod" : "P1W" } ], "isFamilyShareable" : false, "linkedSubscriptions" : [ { "internal" : "D1A384C1" }, { "internal" : "01ABB5D2" } ], "localizations" : [ { "description" : "", "displayName" : "", "locale" : "en_US" } ], "productID" : "bundle", "referenceName" : "Awesome Bundle", "subscriptionGroupID" : "EE1EB207", "type" : "SubscriptionBundle" } ] } ], "subscriptionGroups" : [ { "id" : "84E94B59", "localizations" : [ ], "name" : "premium_group", "subscriptions" : [ { "adHocOffers" : [ ], "billingPlans" : [ { "billingPlanType" : "BILLED_UPFRONT", "commitmentDisplayPrice" : "1.99", "displayPrice" : "1.99", "internalID" : "21C9C75B", "isEnabled" : true } ], "codeOffers" : [ ], "displayPrice" : "1.99", "familyShareable" : false, "groupNumber" : 1, "internalID" : "D1A384C1", "introductoryOffer" : { "billingPlanType" : "BILLED_UPFRONT", "displayPrice" : "0.99", "internalID" : "F0651A66", "numberOfPeriods" : 1, "paymentMode" : "payUpFront", "subscriptionPeriod" : "P1M" }, "introductoryOffers" : [ { "billingPlanType" : "BILLED_UPFRONT", "displayPrice" : "0.99", "internalID" : "F0651A66", "numberOfPeriods" : 1, "paymentMode" : "payUpFront", "subscriptionPeriod" : "P1M" } ], "localizations" : [ { "description" : "", "displayName" : "", "locale" : "en_US" } ], "productID" : "premium_monthly", "recurringSubscriptionPeriod" : "P1M", "referenceName" : "premiume monthly", "subscriptionGroupID" : "84E94B59", "type" : "RecurringSubscription", "winbackOffers" : [ ] } ] }, { "id" : "39607B86", "localizations" : [ ], "name" : "basic_group", "subscriptions" : [ { "adHocOffers" : [ ], "billingPlans" : [ { "billingPlanType" : "BILLED_UPFRONT", "commitmentDisplayPrice" : "0.99", "displayPrice" : "0.99", "internalID" : "0FAC3C7D", "isEnabled" : true } ], "codeOffers" : [ ], "displayPrice" : "0.99", "familyShareable" : false, "groupNumber" : 1, "internalID" : "01ABB5D2", "introductoryOffers" : [ ], "localizations" : [ { "description" : "", "displayName" : "", "locale" : "en_US" } ], "productID" : "basic_monthly", "recurringSubscriptionPeriod" : "P1M", "referenceName" : "basic monthly", "subscriptionGroupID" : "39607B86", "type" : "RecurringSubscription", "winbackOffers" : [ ] } ] } ], "subscriptionSuiteGroups" : [ ], "version" : { "major" : 6, "minor" : 3 } }
Replies
0
Boosts
0
Views
322
Activity
Jul ’26
"Sandbox Apple Account" Developer Setting Does Not Work
I am trying to test a sandbox account for an in-app subscription. It will not work. When I try to check out in my app, I'm told... 2026-07-08 14:41:59.282977-0700 PlainSite[1364:48033] [Default] [StoreKit] Purchase did not return a transaction: Error Domain=ASDErrorDomain Code=500 "Unhandled exception" UserInfo={NSUnderlyingError=0x2835d21f0 {Error Domain=AMSErrorDomain Code=100 "Authentication Failed" UserInfo={NSMultipleUnderlyingErrorsKey=( "Error Domain=AMSErrorDomain Code=2 \"An unknown error occurred. Please try again.\" UserInfo={NSLocalizedDescription=An unknown error occurred. Please try again.}", "Error Domain=AMSServerErrorDomain Code=-5000 \"(null)\" UserInfo={failureType=-5000, m-allowed=false, pings=(\n), cancel-purchase-batch=true, customerMessage=Check the account information you entered and try again.}" ), NSLocalizedDescription=Authentication Failed, NSLocalizedFailureReason=The authentication failed.}}, NSLocalizedFailureReason=An unknown error occurred, NSLocalizedDescription=Unhandled exception} [CreateAccountView] purchaseForSignup threw: userCancelled This is false. The user (me) did not cancel. This is with me manually typing in the sandbox credentials as the Apple ID and password at the point of completing the transaction on both iOS 15 and iOS 26. So I try to make sure that my sandbox account is properly set in iOS 26's Settings -> Developer -> Sandbox Apple Account screen. It says Sign In. Then it says "Apple Account Sign in Requested". What does this actually mean? Who knows. It could mean my App Store Connect credentials are what it wants so that it can query which sandbox accounts are available to use—after all, that is where they are set up. It could also mean that you should type in the sandbox account's credentials directly because a sandbox account is basically a fake Apple ID. I try both. Neither works. No matter what I do, it just goes back to the Developer view and says "Sign In". Have I signed in? I don't know. Maybe, but probably not, given that nothing works. Is the problem that I didn't confirm the sandbox account's e-mail address? No. It doesn't work before or after I've confirmed the e-mail. Is the problem that I don't have two-factor authentication on for the sandbox account? No. It doesn't work whether or not two-factor authentication is enabled. I am not the only one having this problem. People on a certain Reddit thread I'm for some reason not allowed to link to here (sandbox_accounts_simulator_help) have been having it for the past year it looks like, except they got it to work on a real device, and I'm using an iPhone 17, which is a real device, and it doesn't work. This is the third bug in Apple's code I've found in the past couple of weeks that is preventing me from getting my app published and it's getting frustrating. Any assistance would be appreciated. Fix your code, Apple.
Replies
2
Boosts
0
Views
429
Activity
Jul ’26
Product.SubscriptionInfo.Status.all returns empty for accounts with an active auto-renewable subscription
Summary: We gate premium access on the renewal status returned by Product.SubscriptionInfo.Status.all, following the pattern in your Implementing a store in your app using the StoreKit API sample (CustomerEntitlements.checkCurrentStatuses()). In production we are seeing a subset of users whose Status.all yields zero statuses, even though they hold an active subscription with a future expiration date (according to our own persisted state). This causes us to incorrectly treat them as unsubscribed. How we read status: func currentSubscriptionStatuses() async -> [SubscriptionStatusInfo] { await Product.SubscriptionInfo.Status.all .collect() .flatMap(.1) .compactMap(SubscriptionStatusInfo.init(skStatus:)) } The compactMap only drops entries failing case .verified. In the affected cases Status.all itself emits no (groupID, statuses) pairs at all - the sequence is empty, not filtered. Affected population: Previously had an active paid subscription (our own persisted state shows pro with an expiry date in the future). Not new installs. Questions: Under what conditions can Product.SubscriptionInfo.Status.all return an empty sequence for an Apple Account that currently holds an active auto-renewable subscription (e.g. not signed into the App Store, StoreKit not yet initialized at launch, offline, renewal in flight, Family Sharing)? Is an empty result from Status.all ever authoritative ("no subscription"), or must it always be treated as inconclusive and never used to revoke access? Is there a recommended way to distinguish "no subscription for this account" from "status temporarily unavailable" (e.g. a signal for no signed-in App Store account, or a readiness/error path)? Does Status.all guarantee it reflects a signed-in account context, and what is the expected behavior when the device has no active App Store account at call time?
Replies
0
Boosts
2
Views
348
Activity
Jul ’26
Our sandbox accounts don't work now.
Our sandbox accounts don't work now. We are testing our IAP product now, so we need our sandbox accounts to be logged in, for purchaise test. Settings -> Developer -> Sandbox Apple Account screen - > log in : Not working Logged out status -> test app -> purchasing IAP product : Not working our 4 members of dev team have same problem now.
Replies
0
Boosts
0
Views
283
Activity
Jul ’26
Our sandbox accounts don't work now.
Our sandbox accounts don't work now. We are testing our IAP product now, so we needed our sandbox accounts to be logged in, for purchaise test. Settings -> Developer -> Sandbox Apple Account screen - > log in : Not working Logged out status -> test app -> purchasing IAP product : Not working our 4 members of dev team have same problem now.
Replies
0
Boosts
0
Views
320
Activity
Jul ’26
Non-Consumable IAP stuck in ‘Developer Action Required’ – cannot link to version page
My Non-Consumable IAP was rejected with Guideline 3.1.1 and now has status ‘Developer Action Required’. The problem: On the version page in App Store Connect, the ‘In-App Purchases and Subscriptions’ section does not appear at the bottom. I cannot link the IAP to a new version submission. Every time I submit a new binary, Apple approves the app version but rejects the IAP afterward — even though I have no way to attach it to the version in the first place. This seems to be a circular issue: the IAP doesn’t appear on the version page because of its current status, but the only way to fix the status is to submit it with a new version. Has anyone experienced this and found a solution? Any help appreciated!​​​​​​​​​​​​​​​​
Replies
4
Boosts
0
Views
571
Activity
Jul ’26
In App Purchase Sandbox Testing - Clear Purchase History Not Working
I'm testing iAP in a sandbox account (as configured in App Store Connect under 'Sandbox Testers'). So the in app purchase works. Cool. But I wanted to retry it. So I cleared the purchase history (both in App Store Connect and on my iPad in the 'Developer' section in Settings). But when I relaunch my app the purchase still validates and my app displays the item as 'unlocked'. Figure the receipt must still be cached so I nuke the app and completely reinstall it but it appears StoreKit is still getting the receipt and it isn't being cleared because my app is displaying it as 'purchased.' Also tried rebooting the iPad. But the sandbox purchase doesn't clear. I just did a sandbox test since it is closer to real life than StoreKit Configuration so I just wanted to do it a few times to make sure all is good but making a burner test account for every purchase is kind of tiresome. Anyone know of a workaround? I might just declare victory and go back to StoreKit Configuration.
Replies
3
Boosts
2
Views
403
Activity
Jul ’26
SKTestSession configurations broken?
SKTestSession configurations seem to have been broken starting in Xcode 26.3. The release notes for iOS 26.5 indicate that it was supposed to be fixed there, but I still haven't been able to get it to work. Is there something that has changed recently about how SKTestSession configurations need to be used?
Replies
4
Boosts
2
Views
477
Activity
Jul ’26
Referrer System at Subscriptions
Hi, I want to develop a referral system for my subscribers. If someone suggests my app and his/her friend buy a subscription I want to give the referrer a one-month free subscription or extend the existing subscription to one month for free. Is it possible to do this with offer codes?
Replies
3
Boosts
0
Views
956
Activity
Jul ’26
Cannot load products in Sandbox
Hi, I'm trying to hook up some test in app purchases to test purchase code between our app and our app's backend. When I try to load products (requestProductData) with my Sandbox account, my product identifiers come back in the invalid product identifiers member of the response. My product says it's in "waiting for review" status in app store connect, and I'm logged in to the app store with my sandbox account on my device. We just accepted the paid apps agreement as well--is there some propagation time to that? The product ID I'm using (both in app store connect and in-app) is test_durable. Do I need to append the package name to that or something? I've dug through the docs and through the forums here and come up empty. I tried using the Xcode storekit test harness and the issue there is that because that doesn't actually talk to the store apis, I can't use that to test my backend correctly validating/processing the transactions. Thanks!
Replies
0
Boosts
0
Views
350
Activity
Jul ’26
How to manage TestFlight subscriptions on macOS?
I purchased a subscription within my TestFlight macOS build. I would like to access a screen to manage subscriptions and cancel it. How can I do that? I can't find this screen. In the App Store app I can only see my personal purchases.
Replies
1
Boosts
0
Views
542
Activity
Jul ’26
StoreKit 2 returns no products for auto-renewable subscriptions in TestFlight
Hi everyone, I’m having an issue where my TestFlight build cannot load auto-renewable subscription products from App Store Connect. The app is built with Flutter and uses StoreKit 2 through an in-app purchase implementation. The same subscription system works correctly on Google Play Billing and returns product details/prices there, but on iOS StoreKit returns no subscription products. I tested this on a real iPhone installed from TestFlight, not from Xcode debug and not using a local StoreKit configuration. The app requests four auto-renewable subscription product IDs. The IDs in code exactly match the product IDs in App Store Connect. The app diagnostics show: Platform: iOS StoreKit mode: StoreKit 2 Store available: true Requested IDs: 4 subscription product IDs Returned IDs: none Missing IDs: all requested product IDs Error source: app_store Error code: storekit_no_response Error message: StoreKit: Failed to get response from platform. Store note: The store accepted the query, but did not return details for these product IDs. Things I have already checked: Product IDs match exactly between Flutter code and App Store Connect Bundle ID matches the App Store Connect app record In-App Purchase capability is enabled Subscriptions are in one subscription group Subscription availability is set for all countries/regions The TestFlight build is installed on a real device Local StoreKit configuration was removed StoreKit reports store availability as true App Store Connect / In-App Purchase keys are configured for backend verification The same product-loading flow works on Google Play The current App Store Connect status for the subscriptions is: Subscriptions: Ready to Submit / Ready for Review Localizations: Prepare for Submission Also, the bank information is not submitted yet. My question is: can StoreKit in TestFlight return subscription product details while the first auto-renewable subscriptions are still only “Ready to Submit” and have not yet been submitted with an app version for review? Or will StoreKit return no products until: The first subscriptions are attached to an app version and submitted for review Subscription localizations are fully prepared/submitted Paid agreements, tax, and banking are fully completed Since StoreKit is available and accepts the product query, but returns zero products, I’m trying to understand whether this is expected App Store Connect behavior or if there is another configuration issue I should check. Thanks.
Replies
1
Boosts
0
Views
598
Activity
Jun ’26
StoreKit 2: Transaction.all and Transaction.currentEntitlements return empty for valid non-consumable purchases in production
FB: https://feedbackassistant.apple.com/feedback/22556883 We're seeing a small number of production users where both Transaction.currentEntitlements and Transaction.all return zero transactions for a valid, active, non-refunded non-consumable IAP. This makes it impossible to restore the purchase via any StoreKit 2 API. Environment: Xcode 26.4 (Build 17E192) iOS 26.4.1 Direct call to SK2 Transactions.all & Flutter in_app_purchase package v3.2.3 (uses SK2 on iOS 15+) Non-consumable IAP (one-time purchase) What we observe: AppStore.sync() triggers but the purchase stream returns 0 transactions Transaction.all returns empty Transaction.currentEntitlements also returns empty User is confirmed on the correct Apple ID Issue reproduces on both iPhone and Mac for the same Apple ID Issue appears to have started recently for users who previously had no problems Debug log from affected production user: [2026-04-20T08:50:10.744115Z] init: iapAvailable=true [2026-04-20T08:50:10.744566Z] init: isPremium=false [2026-04-20T08:50:10.744567Z] init: triggering silent restorePurchases [2026-04-20T08:50:45.974566Z] restore: started [2026-04-20T08:50:45.986848Z] restore: sk2Transactions count=0 [2026-04-20T08:50:45.993004Z] restore: sk2Direct isVerified=false active=null [2026-04-20T08:50:45.993011Z] restore: sk2Direct inconclusive — falling back to standard restore [2026-04-20T08:51:16.000851Z] restore: timed out after 30s — fallback isPremium=false [2026-04-20T08:51:16.000910Z] restore: completed — succeeded=false foundPurchase=false Unable to reproduce in sandbox — Transaction.all works correctly there. Appears specific to production for a small subset of users. Has anyone else seen this?
Replies
23
Boosts
5
Views
2.8k
Activity
Jun ’26
Your first subscription must be submitted with a new app version.
I have seen this problem arise from multiple sources. I am trying to submit my app but a new app version must be bundled with the subscription. The guide consistently says (copy pasted from the "Submit an In-App Purchase" guide) _"On the right, scroll down to the In-App Purchases and Subscriptions section. Click Select In-App Purchases or Subscriptions, or if you’ve already started selecting In-App Purchases or subscriptions, click Edit."_ The problem is there IS NO In-App Purchases or subscription section in the the app section. I have submitted again but at this point I'm loosing hope. I am hoping that adding a StoreKit config file this time on the Xcode side will help however again reading "submission (1)" does not give much hope. Please help as this has delayed launch by quite a lot.
Replies
0
Boosts
0
Views
311
Activity
Jun ’26
Can Product.products / SKProductsRequest be used only for display metadata when EU storefront uses ExternalPurchaseCustomLink only?
This is a StoreKit / ExternalPurchaseCustomLink clarification. Apple DTS asked me to post the follow-up question here. We are designing an SDK for apps that support EU external purchase. In EU storefronts, the app will use ExternalPurchaseCustomLink only: No App Store In-App Purchase will be offered to users. No Product.purchase() will be called. No SKPaymentQueue.add(_:) will be called. The actual purchase will happen only on our external website through the ExternalPurchaseCustomLink flow. Question: In this EU ExternalPurchaseCustomLink-only setup, is it acceptable and supported to call Product.products(for:) / SKProductsRequest only to fetch product display metadata from App Store Connect? The metadata would only be used to display the product list UI, for example: product title / display name localized price currency / priceLocale formatting information The returned Product / SKProduct would not be used to start an App Store purchase. Or should apps avoid Product.products(for:) / SKProductsRequest entirely in EU storefronts where only ExternalPurchaseCustomLink is offered, and use their own product catalog instead?
Replies
1
Boosts
0
Views
417
Activity
Jun ’26
IAP products not loading in sandbox after activating Paid Apps Agreement
I activated the Paid Apps Agreement today along with banking and tax information. My app uses react-native-purchases (RevenueCat) with StoreKit 2. When tapping purchase buttons in TestFlight I still get "Product not available - Could not load this product." Products show "Waiting for Review" in App Store Connect. Sandbox tester is configured. Is there a delay after activating the Paid Apps Agreement before sandbox purchases work? How long should I expect to wait?
Replies
0
Boosts
0
Views
315
Activity
Jun ’26
New auto-renewable subscription not appearing in sandbox (getOfferings/StoreKit returns 0) after re-creating the product — new app, not yet approved
I have a new app (first version, not yet approved) with one auto-renewable subscription. Earlier in development, the subscription loaded and I could complete a sandbox purchase (the StoreKit sheet showed "Sandbox", the price, and my sandbox account). To resolve an App Store Connect submission deadlock, I deleted that subscription and created a new one with a new Product ID. Since then, the new subscription does NOT appear in the sandbox: StoreKit returns no products, so getOfferings (via RevenueCat) returns 0 packages — both during App Review and on my own development build signed into a sandbox account. Configuration (all verified): Subscription is "Ready to Submit" / "Waiting for Review" Available in all territories Paid Apps Agreement active; banking and tax complete Bundle ID and shared secret unchanged from when it worked App Review keeps rejecting under Guideline 2.1(b) ("プレミアムをはじめる" / purchase button unresponsive) because the product never loads. Questions: For a newly created IAP on a not-yet-approved app, how long does it take to become available in the sandbox? Is there a known propagation delay (24h+)? Does re-creating the product with a new Product ID reset or delay sandbox availability? Is anything required for a new product to be served in the sandbox before the app's first version is approved? Any guidance appreciated. Thanks!
Replies
1
Boosts
0
Views
417
Activity
Jun ’26
Help with Subscriptions and Localization
Let me start by saying i found 1000s of posts for similar topic and nothing so far worked for me so im here now. This is the first im i developed an app with subscriptions now the problem im facing it is showing missing metadata on all subscriptions i created. inside there is no error just on localization section it shows "Prepare for Submission" and hovering it says i have to submit localization seperately. Now the question is there is no way to submit localization and no way to select subscription when im submitting app for review which i believe is for above reason. I have followed almost everything available online since yesterday from business to screenshots to notes nothing so far worked for me. Need your support to resolve this issue asap Thank you
Replies
1
Boosts
0
Views
449
Activity
Jun ’26
initConnection() from react-native-iap throws "undefined is not a function" in TestFlight build — StoreKit not connecting
Platform & Versions React Native: 0.85.3 Expo SDK: 56 react-native-iap: 15.3.3 iOS: 18.7.8 Device: iPhone 16 Pro Distribution: TestFlight (distribution: "store" via EAS Build) Problem In a TestFlight build (App Store distribution, not ad-hoc), calling initConnection() from react-native-iap throws a TypeError: "undefined is not a function" on iOS. This happens on every app launch. The error is caught in a try/catch around initConnection() and we never reach getSubscriptions() or purchaseUpdatedListener(). The app never connects to StoreKit. All IAP attempts fail immediately with "Store unavailable." What we've confirmed Sandbox tester account is configured in Settings → App Store → Sandbox Account "Allow Purchases & Renewals" is ON in the Sandbox Testing screen An active sandbox subscription exists (visible in Settings → App Store → Sandbox Account → Subscriptions), meaning StoreKit was reachable at some earlier point react-native-iap is listed in the Expo config plugins in app.json — EAS should be linking StoreKit.framework and adding the com.apple.developer.in-app-payments entitlement Built with --clear-cache to force a clean native project generation All 5 IAP product IDs (2 subscriptions, 3 consumables) are linked to the app version in App Store Connect and are in "Ready to Submit" state ITSAppUsesNonExemptEncryption is set to false in Info.plist Code try { await initConnection(); // throws "undefined is not a function" // never reaches here await getSubscriptions({ skus: ['com.smartailearning.iem.pro.yearly', 'com.smartailearning.iem.pro.monthly'] }); } catch (e) { console.error(e.message); // "undefined is not a function" } Question Is react-native-iap v15 incompatible with React Native 0.85 / Expo SDK 56 on iOS? Is there a known issue with the StoreKit native module not loading in EAS-managed builds? Should we be using StoreKit directly via a custom native module instead?
Replies
0
Boosts
0
Views
260
Activity
Jun ’26
First app release rejected because IAPs didn’t appear, and now the In-App Purchases section is missing from the app version page
I’m trying to submit the first release of my iOS app together with the app’s first consumable in-app purchases, and I’m stuck in what looks like an App Store Connect state issue. My app was already rejected by App Review because the in-app purchases did not appear inside the app when the reviewer opened the paywall. Current setup: First app release Current app version page: iOS App Version 1.0.2 Current attached build: 5 App has never been released before 4 consumable IAPs: com.glowup.credits.100 com.glowup.credits.500 com.glowup.credits.1000 com.glowup.credits.2500 What I see in App Store Connect: All 4 IAPs show Waiting for Review On the iOS App Version 1.0.2 page, the In-App Purchases and Subscriptions section does not appear at all Because of that, I cannot explicitly select or attach the IAPs from the version page What I’ve already done: Uploaded a new build and attached build 5 to version 1.0.2 Removed my local StoreKit configuration file so the app now uses live App Store / StoreKit only Confirmed RevenueCat is configured correctly and sees the offering/packages RevenueCat logs show the products exist remotely, but StoreKit cannot fetch any live products and returns an “offerings empty / none of the products could be fetched” type error RevenueCat also reports the products are still in WAITING_FOR_REVIEW My questions: If the IAPs already show Waiting for Review, are they automatically linked to the current app submission? Is it expected that the In-App Purchases and Subscriptions section can disappear from the app version page in this state? For a first-release app that was already rejected, is attaching a new build and clicking Update Review enough, or is there another step required to associate the IAPs with the resubmission? Has anyone seen App Review reject an app for missing IAPs while the IAPs were still pending review and not yet fetchable from StoreKit? Any guidance from someone who has dealt with this exact first-release + first-IAP submission flow would help a lot.
Replies
2
Boosts
0
Views
579
Activity
Jun ’26