StoreKit 2 Product.products(for:) returns empty array without error on device and TestFlight

Hello,

I’m investigating subscription product discovery in my iOS app, BiteTempo. StoreKit 2 completes the product request successfully but returns an empty array for both auto-renewable subscriptions.

The issue occurs on a physical iPhone running through Xcode and also in TestFlight.

App and products

  • Bundle ID: shehan.NouriJournal
  • App version: 1.0 (4)
  • Monthly: shehan.NouriJournal.plus.monthly
  • Annual: shehan.NouriJournal.plus.annual
  • Reported storefront: USA
  • Device system version reported in diagnostics: 26.6.1 (23G83)

Reproduction

  1. Run the app on a physical iPhone through Xcode with StoreKit Configuration set to None.
  2. Open the subscription paywall.
  3. Request both products using Product.products(for:).
  4. Inspect the returned array immediately after the awaited call, before filtering.

At that breakpoint, returnedProducts contains 0 values.

The empty result is not created by application filtering or by converting a caught error into an empty array. Errors are reported separately.

Diagnostic output from the Xcode device run

Date: 2026-09-26T10:06:24Z App: shehan.NouriJournal 1.0 (4) Storefront: USA Requested: shehan.NouriJournal.plus.monthly, shehan.NouriJournal.plus.annual Returned: 0 Products: Lookup: completed

I also see unavailable plans in TestFlight, although the diagnostic output above is specifically from the Xcode device run.

Configuration checked

  • Product IDs match App Store Connect exactly.
  • Both subscriptions have pricing and all-country availability.
  • Both products and their subscription group have English (U.S.) localization.
  • Paid Apps Agreement is Active.
  • Other apps under my developer account have working live subscriptions.
  • Debug and Release use the same bundle identifier and signing team.
  • No local StoreKit configuration file is selected.
  • A Sandbox Apple Account is signed in on the test device.

These are the first subscriptions for this app and have not yet been submitted for review. I have retried after completing the missing localization, but the result remains empty.

The failure occurs during product discovery, before any purchase or server-side transaction verification.

What additional checks or diagnostics would help distinguish an app/signing configuration issue from a sandbox product-catalog availability issue? Is there any additional product state or configuration required for these subscriptions to appear in sandbox?

I have also submitted a support request to Apple and can provide a minimal reproduction project through the appropriate support channel.

Thank you.

StoreKit 2 Product.products(for:) returns empty array without error on device and TestFlight
 
 
Q