StoreKit Product.products(for:) / fetchProducts returns empty array for an Approved, correctly-configured auto-renewable subscription — regression since Aug 24, 2026

Our app's auto-renewable subscription (Product ID: istanbul.membership.monthly, Bundle ID: com.mehmetozenen.ustaistanbulapp) has been returning zero products from Product.products(for:) since August 24, 2026, blocking 100% of new iOS subscriptions on our live production app.

Verified correct on our side:

Subscription status: Approved Paid Applications Agreement: Active (continuously since Feb 2026, no gaps) Territory pricing: set, including Turkey Product ID matches exactly, correct app No changes to Agreements/Tax/Banking around the failure date Steps to reproduce:

Call Product.products(for:) (or via react-native-iap's fetchProducts) with SKU istanbul.membership.monthly, type auto-renewable subscription. Result: empty product array, no error thrown. Purchase sheet never appears since there is no product to purchase. Reproduced on:

4+ independent physical iOS devices Multiple different Apple IDs Both Sandbox and Production StoreKit environments (identical failure in both) Both Wi-Fi and cellular networks A historical app build (from before Aug 24) that was never modified and worked correctly as recently as Aug 23 — ruling out any client-side code cause This same product worked correctly as recently as 2026-08-23 (server-side purchase verification log confirms a real successful transaction that day). It broke starting 2026-08-24, with no corresponding change on our end.

I've already opened a Developer Technical Support case (Case-ID 21790415) and submitted a full sysdiagnose with reproduction timestamps, but have not received a substantive update in over a week. Posting here in case others have hit the same regression, or in case anyone from Apple can help escalate.

Has anyone else seen Product.products(for:) / fetchProducts silently returning empty for an otherwise valid, Approved auto-renewable subscription starting around late August 2026?

Your product identifier is problematic because it doesn't necessarily and uniquely point to your software product. That doesn't mean that's the root of the issue, though.

Thanks for pointing this out — you're right that our product identifier (istanbul.membership.monthly) doesn't follow the bundle-ID-prefixed convention (e.g. com.mehmetozenen.ustaistanbulapp.membership.monthly).

One thing that makes me hesitant to attribute the root cause to this alone: this exact identifier has worked correctly for months, with real successful purchases as recently as Aug 23, 2026, and broke abruptly on Aug 24 with no changes on our end. If the naming format itself were the fundamental problem, I'd expect it to have failed from day one rather than regressing suddenly.

That said, is it possible something changed server-side in how StoreKit resolves/validates non-namespaced product identifiers around that date? If you know of any related StoreKit backend change or have seen this pattern before, I'd really appreciate more detail — this is genuinely useful to bring back to my DTS case.

StoreKit Product.products(for:) / fetchProducts returns empty array for an Approved, correctly-configured auto-renewable subscription — regression since Aug 24, 2026
 
 
Q