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
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1-175Lines changed: 1 addition & 175 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,178 +4,4 @@ All notable changes to this project will be documented in this file.
4
4
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
7
-
## [14.3.6]
8
-
9
-
### Breaking: useIAP Hook
10
-
11
-
- JS: `useIAP` no longer returns `currentPurchase`, `currentPurchaseError`, or the associated clear helpers; consumers should rely on the `onPurchaseSuccess` / `onPurchaseError` callbacks moving forward.
12
-
13
-
## [14.3.5]
14
-
15
-
### Changed
16
-
17
-
- Android: Upgrade the fallback/config plugin to [openiap-google 1.1.10](https://github.com/hyodotdev/openiap-google/releases/tag/1.1.10) to stay current with the latest Billing integration guidance.
18
-
- iOS: Bump the pod to [openiap 1.1.12](https://github.com/hyodotdev/openiap-apple/releases/tag/1.1.12) and adopt PascalCase error constants in the native layer for consistent casing across platforms.
19
-
20
-
### Fixed
21
-
22
-
- Android: Restore the explicit `Failed to initialize connection` error message when the billing client rejects `initConnection()` so logs stay actionable.
23
-
- Android: Preserve receipt validation context for unexpected failures and avoid leaking purchase tokens in acknowledge/consume error payloads.
24
-
25
-
## [14.3.3]
26
-
27
-
### Changed
28
-
29
-
- JS: Streamline `requestPurchase` parameter handling, emit development warnings when the wrong request shape is supplied, and remove the legacy `request` fallback.
30
-
- JS: Warn when the bridge encounters an unknown iOS product type to highlight schema mismatches sooner.
31
-
- Build: Adopt [openiap-gql 1.0.0](https://github.com/hyodotdev/openiap-gql/releases/tag/1.0.0) for the transport layer to stay aligned with the GraphQL contract shipped across the ecosystem.
32
-
33
-
### Fixed
34
-
35
-
- JS: Normalize native error codes (including US/UK spelling) so cancellation flows and init‑connection guards behave like earlier releases.
36
-
- Helpers: Align Active Subscription expiration fields with generated types (`null` instead of missing `Date`) to keep downstream consumers consistent.
37
-
38
-
## [14.3.2]
39
-
40
-
### Fixed
41
-
42
-
- JS: Guard Nitro HybridObject creation with try/catch and remove `isRuntimeAlive` import to stabilize CI/Jest and avoid "not a function" errors.
43
-
44
-
### Added
45
-
46
-
- Plugin (Expo): Optional iOS Podfile workaround to disable Folly coroutines via `"with-folly-no-couroutines": true`.
47
-
48
-
### Changed
49
-
50
-
- Docs: Restore installation note for the Folly workaround and remove a local Docusaurus type shim to avoid duplicate type declarations.
51
-
52
-
## [14.3.1]
53
-
54
-
### Added
55
-
56
-
- Examples: Add “Manage Subscriptions” buttons in SubscriptionFlow and AvailablePurchases (opens native subscription management via cross‑platform deeplink)
57
-
- Examples: Allow tapping purchased items to open a details modal
58
-
59
-
### Changed
60
-
61
-
- Docs: Clarify event‑driven request model and why `request*` APIs do not resolve with results; add FAQ about transient iOS success→error timing and suggested debounce
62
-
- Docs: Prefer `purchase.id` terminology in examples and guides; continue to recommend `purchaseToken` for server validation
63
-
- Examples: Redact sensitive fields in logs and modals (no `transactionReceipt`/full `purchaseToken` shown)
64
-
65
-
### Fixed
66
-
67
-
- iOS: Sanitize purchase error payload so `purchaseToken` does not carry product identifiers in error events; keep internal deduplication based on SKU
68
-
- Examples/Tests: Align transaction row with `purchase.id`; update tests accordingly
69
-
- iOS: Fix crash on startup by lazily initializing the IAP module (Nitro HybridObject created on demand)
70
-
71
-
- Remove any references to `purchase.transactionReceipt`, `purchase.transactionReceiptIOS`, and `purchase.purchaseTokenAndroid`
72
-
73
-
## [14.3.0]
74
-
75
-
### Added
76
-
77
-
- JS: `getStorefront()` and `deepLinkToSubscriptions()` helpers for unified storefront lookup and opening native subscription management.
78
-
79
-
### Changed
80
-
81
-
- Android: Bump to OpenIAP Google 1.1.0 and align init behavior/field mapping with the OpenIAP spec.
82
-
- Docs/Examples: Migrate guidance from `transactionReceipt` to the unified `purchaseToken`.
83
-
-`purchase.purchaseToken` is now the recommended value for server validation on both platforms
84
-
- iOS: `purchaseToken` contains the JWS (StoreKit 2). The App Receipt (`transactionReceipt`) remains available for legacy flows
85
-
- Android: `transactionReceipt` is no longer populated; use `purchaseToken`
86
-
87
-
### Fixed
88
-
89
-
- Android: Address potential `init` race and improve error propagation for clearer failures.
90
-
- iOS: Add temporary stubs to keep Nitro/iOS in sync with the JS spec (no runtime behavior change).
91
-
92
-
## [14.2.3]
93
-
94
-
### Fixed
95
-
96
-
- Android: add `offerTags` and fix `pricingPhases` in `subscriptionOfferDetails` (#2998)
97
-
98
-
### Chore
99
-
100
-
- iOS: enforce iOS 15+ in podspec
101
-
- Lint: format files to sync with `.vscode` and Prettier
102
-
- ESLint: avoid `.` import in config
103
-
104
-
## [14.2.2]
105
-
106
-
### Changed
107
-
108
-
- iOS: Upgrade OpenIAP to `~> 1.1.9` (StoreKit 2 stability and error model improvements)
109
-
- iOS: Purchase flow is event‑only; add de‑duplication for error events to avoid double popups
110
-
- Examples: Guard `finishTransaction` until connected and add short delayed retry
111
-
- Examples: Normalize cancel handling with a single cancel popup
112
-
113
-
### Fixed
114
-
115
-
- iOS: Ensure synchronous errors during `requestPurchase` still surface via purchase error event (with lightweight de‑dup)
116
-
- iOS: Include original error message in receipt failures for better diagnostics
117
-
118
-
## [14.2.0]
119
-
120
-
### Changed
121
-
122
-
- iOS: Make `initConnection()` idempotent and non‑blocking; propagate failures via `E_INIT_CONNECTION`
123
-
- iOS: Bump OpenIAP to `~> 1.1.8`
124
-
- Android: Ship consumer R8 keep rules for Nitro classes
125
-
- CI: Use vendored Yarn to avoid Corepack issues
126
-
- Examples: Stabilize purchase/subscription flows and tests
127
-
128
-
## [14.1.1]
129
-
130
-
### Fixed
131
-
132
-
- iOS: Fetch missing products from StoreKit when not cached in ProductStore
133
-
134
-
## [14.1.0]
135
-
136
-
### Changed
137
-
138
-
-**BREAKING**: Renamed all platform-specific fields to include platform suffix for clarity
139
-
- iOS fields now end with `IOS` (e.g., `isFamilyShareable` → `isFamilyShareableIOS`)
140
-
- Android fields now end with `Android` (e.g., `originalPrice` → `originalPriceAndroid`)
141
-
-**DEPRECATED**: `autoRenewingAndroid` field - use common `isAutoRenewing` field instead
142
-
-**BREAKING**: `showManageSubscriptionsIOS()` now returns `Promise<NitroPurchase[]>` instead of `Promise<boolean>`
143
-
-**BREAKING**: `validateReceipt()` method signature has changed:
144
-
- Now takes a single `NitroReceiptValidationParams` object instead of separate parameters
145
-
- Returns platform-specific validation result types (`NitroReceiptValidationResultIOS` or `NitroReceiptValidationResultAndroid`)
0 commit comments