Product

Product#

Represents a product available for purchase in the store. The type is a union of ProductIOS and ProductAndroid, discriminated by the platform field.

Cross-platform one-time product shape returned by fetchProducts. iOS: derived from Product (Apple docs). Android: derived from ProductDetails (Google docs).

Common Fields#

These fields are available on both iOS and Android:

NameSummary
idUnique product identifier configured in App Store Connect or Google Play Console
titleLocalized product title
descriptionLocalized product description
typeProduct type: "in-app" for consumables/non-consumables, "subs" for subscriptions
displayNameDisplay-friendly product name (optional)
displayPriceFormatted price with currency symbol (e.g., "$9.99", "₩12,000")
currencyISO 4217 currency code (e.g., "USD", "KRW")
priceNumeric price value (e.g., 9.99)
debugDescriptionDebug-friendly description (optional)
storeStore discriminator: "apple", "google", or "horizon"

Platform-Specific Fields#

ProductIOS#

Additional fields available on iOS:

NameSummary
typeIOSDetailed product-type wire value: consumable, non-consumable, auto-renewable-subscription, non-renewing-subscription, subscription-bundle, or subscription-suite. The final two values require an Xcode 27 build and Apple 27 runtime.
isFamilyShareableIOSWhether the product supports Family Sharing
displayNameIOSiOS-specific display name
subscriptionOffersCross-platform array of SubscriptionOffer — unified across iOS/Android.
pricingTermsIOSStoreKit 26.4 subscription billing plans, including monthly commitment and up-front pricing terms. See SubscriptionPricingTermsIOS.
bundledSubscriptionsIOSComponent subscriptions for an Apple Subscription Bundle or Suite, including product identity, display metadata, price, Family Sharing state, and subscription-group metadata. Available on ProductSubscriptionIOS with Xcode 27 and Apple 27; otherwise null.
jsonRepresentationIOSRaw StoreKit 2 JWS payload as a JSON string.