StoreKit 2 Product.products(for:) returns no products in TestFlight after subscriptions are attached and waiting for review

We have an iOS app using StoreKit 2 only (no RevenueCat).

Products:

  • pro1 (non-consumable)
  • monthly (auto-renewable)
  • annual (auto-renewable, 14-day introductory free trial)

Current App Store Connect state:

  • all products are submitted / attached to app version 1.0
  • subscriptions and IAP are now in Waiting for Review
  • annual has an introductory offer configured in App Store Connect
  • monthly and annual are in the same subscription group

App behavior: We load products using Product.products(for:) with all three product IDs. In TestFlight, for multiple tester accounts, StoreKit still returns no usable products and the paywall remains in retry state. Earlier debug checks showed:

  • annual.subscription?.introductoryOffer == nil
  • isEligibleForIntroOffer == false

Because introductoryOffer is nil, this does not appear to be only a tester-eligibility issue. It looks like the annual subscription product is not yet surfacing its intro offer/product data in TestFlight.

Question: Is it expected that Product.products(for:) / Product.SubscriptionInfo.introductoryOffer may continue returning no subscription products or no introductory offer in TestFlight while the products are only in Waiting for Review? If so, is there a typical propagation delay, or is there anything else we should verify beyond:

  • products attached to app version
  • products in Waiting for Review
  • Paid Apps agreement active
  • intro offer configured on the annual subscription

Any guidance would be appreciated.

StoreKit 2 Product.products(for:) returns no products in TestFlight after subscriptions are attached and waiting for review
 
 
Q