Skip to main content

Release 6.5.0

· 2 min read
Hyo
Maintainer of flutter_inapp_purchase & expo-iap

We've shipped 6.5.0 with improved iOS parity to OpenIAP, safer parsing, and stronger pre-commit checks. The later 6.5.2/6.5.3 fixes are folded in here so you can see the full picture of the 6.5.x line.

Highlights

  • iOS: channel method rename buyProductrequestPurchase (Dart updated accordingly)
  • Standardized error codes/messages via OpenIAP (OpenIapError.defaultMessage)
  • Better restore flow: iOS runs syncIOS() then getAvailablePurchases()
  • iOS helpers: clearTransactionIOS, getPromotedProductIOS, requestPurchaseOnPromotedProductIOS
  • Pre-commit hook now formats, analyzes, and runs tests by default

Improvements rolled up from 6.5.2 / 6.5.3

  • iOS price parsing now tolerates numeric values (fixes “double is not a subtype of String” crashes) and pins the OpenIAP Apple pod to 1.1.9 for repeatable installs.
  • fetchProducts() always sets product.id (with fallbacks to productId/sku), and accepts type: 'all' so Android merges in-app + subs results.
  • Products now centre on id; productId is kept for compatibility but is officially deprecated and scheduled for removal in 6.6.0.
  • Deprecated Dart APIs: fetchProducts(), purchaseAsync(), requestPurchaseAuto(), finalize(), deepLinkToSubscriptionsAndroid(), and getPurchaseHistories()—switch to the modern APIs ahead of 6.6.0. (Use fetchProducts() and requestPurchase() as the replacements.)
  • Examples suppress the alert dialog when users cancel an iOS purchase flow.

Podspec now requires openiap ~> 1.1.8 (and 1.1.9 for Apple via CocoaPods). Run cd example/ios && pod install after upgrading to refresh the lockfile.

See CHANGELOG for details. Thanks for all the feedback and reviews!