Types
This page contains the TypeScript types and interfaces used throughout the expo-iap library.
Core Types
Product
type ProductType = 'inapp' | 'subs';
interface Product {
id: string;
title: string;
description: string;
type: ProductType;
displayName?: string;
displayPrice: string;
currency: string;
price?: number;
}
⚠️ Breaking Change Notice (v2.6+)
Version 2.6+ Migration: The subscription
field in ProductIOS
has changed from a required field to an optional field (subscription?
). This reflects that not all iOS products have subscription information. Please update your code to handle this field as optional when working with non-subscription products.
iOS product contains additional information:
type SubscriptionIosPeriod = 'DAY' | 'WEEK' | 'MONTH' | 'YEAR' | '';
type PaymentMode = '' | 'FREETRIAL' | 'PAYASYOUGO' | 'PAYUPFRONT';
type ProductIOS = Product & {
displayName: string;
isFamilyShareable: boolean;
jsonRepresentation: string;
subscription?: SubscriptionInfo;
introductoryPriceNumberOfPeriodsIOS?: string;
introductoryPriceSubscriptionPeriodIOS?: SubscriptionIosPeriod;
};
type SubscriptionInfo = {
introductoryOffer?: SubscriptionOffer;
promotionalOffers?: SubscriptionOffer[];
subscriptionGroupID: string;
subscriptionPeriod: {
unit: SubscriptionIosPeriod;
value: number;
};
};
type SubscriptionOffer = {
displayPrice: string;
id: string;
paymentMode: PaymentMode;
period: {
unit: SubscriptionIosPeriod;
value: number;
};
periodCount: number;
price: number;
type: 'introductory' | 'promotional';
};
Purchase
interface Purchase {
purchaseId: string;
productId: string;
transactionId: string;
transactionDate: number;
purchaseState: PurchaseState;
isAcknowledged: boolean;
originalJson?: string;
signature?: string;
}
PurchaseState
enum PurchaseState {
PURCHASED = 'PURCHASED',
PENDING = 'PENDING',
UNSPECIFIED_STATE = 'UNSPECIFIED_STATE',
}
Subscription
interface Subscription {
productId: string;
purchaseToken: string;
isAutoRenewing: boolean;
expiryTimeMillis: number;
autoResumeTimeMillis?: number;
priceCurrencyCode?: string;
priceAmountMicros?: number;
countryCode?: string;
orderId?: string;
packageName?: string;
}
Platform-Specific Types
iOS
For other iOS-specific types and enums, refer to the iOS setup guide.
Android
For Android-specific types and enums, refer to the Android setup guide.
Error Types
For error codes and error handling types, see the Error Codes documentation.