You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 4, 2026. It is now read-only.
## Summary
- Sync with openiap v1.3.12 (gql: 1.3.12, apple: 1.3.10, google: 1.3.22)
- Add new cross-platform `DiscountOffer` and `SubscriptionOffer` types
- New `discountOffers` and `subscriptionOffers` fields on Product types
## Changes
### Types (auto-generated)
- New `DiscountOffer` type with cross-platform fields
- New `SubscriptionOffer` type with cross-platform fields
- Platform-specific fields use `Android`/`IOS` suffixes
- Existing `subscriptionOfferDetailsAndroid` and
`oneTimePurchaseOfferDetailsAndroid` still available for compatibility
## Test plan
- [x] `yarn typecheck` passes
- [x] `yarn test` passes (172 tests)
- [x] `yarn build` passes
- [x] Nitro code generation succeeds
🤖 Generated with [Claude Code](https://claude.ai/code)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Unified cross-platform subscription and discount offer data now
exposed to apps and UI; product details show standardized subscription
and discount offers.
* Improved subscription replacement support during purchase flows.
* **Bug Fixes**
* More robust handling when standardized offer data is missing or
malformed.
* **Documentation**
* API docs and guides updated with unified offer types, examples, and
deprecation notes for legacy fields.
* **Tests**
* Added tests covering parsing and display of standardized offers.
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Starting from v14.8.0, products include **standardized cross-platform offer types** that work consistently across iOS and Android. These new types replace the platform-specific `subscriptionInfoIOS` and `subscriptionOfferDetailsAndroid` with unified structures.
143
+
144
+
#### SubscriptionOffer
145
+
146
+
The `subscriptionOffers` field is available on both `ProductIOS` and `ProductAndroid` for subscription products:
147
+
148
+
```ts
149
+
exportinterfaceSubscriptionOffer {
150
+
/** Unique identifier for the offer */
151
+
id:string;
152
+
/** Formatted display price (e.g., "$9.99/month" or "Free") */
153
+
displayPrice:string;
154
+
/** Numeric price value */
155
+
price:number;
156
+
/** Type of offer: 'introductory' or 'promotional' */
157
+
type:DiscountOfferType;
158
+
/** Currency code (ISO 4217, e.g., "USD") */
159
+
currency?:string|null;
160
+
/** Payment mode during the offer period */
161
+
paymentMode?:PaymentMode|null;
162
+
/** Subscription period for this offer */
163
+
period?:SubscriptionPeriod|null;
164
+
/** Number of periods the offer applies */
165
+
periodCount?:number|null;
166
+
// iOS-specific fields
167
+
/** [iOS] Key identifier for signature validation */
168
+
keyIdentifierIOS?:string|null;
169
+
/** [iOS] Number of billing periods for this discount */
170
+
numberOfPeriodsIOS?:number|null;
171
+
// Android-specific fields
172
+
/** [Android] Base plan identifier */
173
+
basePlanIdAndroid?:string|null;
174
+
/** [Android] Offer token required for purchase */
175
+
offerTokenAndroid?:string|null;
176
+
/** [Android] List of tags associated with this offer */
177
+
offerTagsAndroid?:string[] |null;
178
+
/** [Android] Pricing phases for this subscription offer */
The platform-specific fields `subscriptionInfoIOS` and `subscriptionOfferDetailsAndroid` are now deprecated. Use the unified `subscriptionOffers` and `discountOffers` fields for new implementations.
252
+
:::
253
+
140
254
## Purchase Types
141
255
142
256
Purchases share the `PurchaseCommon` shape and discriminate on the same `platform` union. Both variants expose the unified `purchaseToken` field for server validation.
0 commit comments