NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #498 most downloaded on pub.dev
Flutter in-app purchases and subscriptions made easy. The plugin supports iOS, macOS and Android.
Last release today
01 Oct 2026
Ships on a steady schedule
a new release about every 2 weeks
Some releases are documented
notes for 28 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
292 releases · first in 2019
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 5.3.0 (#759) via RevenueCat Git Bot (@RCGitBot)
Adds package back to AndroidManifest.xml (#749) via Cesar de la Vega (@vegaro)
One column per quarter.
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 5.2.3 (#744) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 5.2.2 (#740) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 5.2.0 (#735) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 5.1.0 (#730) via RevenueCat Git Bot (@RCGitBot)
RevenueCat Purchases Flutter v5 is here!! 😻
RevenueCat Purchases Flutter v5 is here!! 😻
This latest release updates the Android SDK dependency from v5 to v6 to use BillingClient 5. This version of BillingClient brings an entire new subscription model which has resulted in large changes across the entire SDK.
SubscriptionOption conceptIn v4, a Google Play Android Package or StoreProduct represented a single purchaseable entity, and free trials or intro
offers would automatically be applied to the purchase if the user was eligible.
Now, in Flutter v5, an Google Play Android Package or StoreProduct represents a duration of a subscription and contains all the ways to purchase that duration -- any offers and its base plan. Each of these purchase options are SubscriptionOptions.
When passing a Package to purchasePackage() or StoreProduct to purchaseStoreProduct(), the SDK will use the following logic to choose which
SubscriptionOption to purchase:
SubscriptionOption with the longest free trial or cheapest first phase
For more control, purchase subscription options with the new purchaseSubscriptionOption() method.
StoreProduct now has a few new properties use for Google Play Android:
defaultOption
Package or StoreProductsubscriptionOptions
Observer mode is still supported in v5. Other than updating the SDK version, there are no changes required.
✨ With this new feature, even if our main and backup servers are down, the SDK can continue to process purchases. This is enabled transparently to the user, and when the servers come back online, the SDK automatically syncs the information so it can be visible in the dashboard.
✨ Metadata allows attaching arbitrary information as key/value pairs to your Offering to control how to display your products inside your app. The metadata you configure in an Offering is available from the RevenueCat SDK. For example, you could use it to remotely configure strings on your paywall, or even URLs of images shown on the paywall.
See the metadata documentation for more info!
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fix deprecation warning (#694) via Andy Boedo (@aboedo)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.15.0 (#680) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.14.3 (#674) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.14.2 (#661) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.14.1 (#645) via RevenueCat Git Bot (@RCGitBot)
Deprecate revenueCatId in favor of transactionIdentifier (#612) via Toni Rico (@tonidero)
immediateAndChargeFullPrice proration mode (#639) via Andy Boedo (@aboedo)Deprecate usesStoreKit2IfAvailable (#632) via Andy Boedo (@aboedo)
usesStoreKit2IfAvailable (#632) via Andy Boedo (@aboedo)Bump fastlane from 2.212.0 to 2.212.1 (#627) via dependabot[bot] (@dependabot[bot])
Fixes NullPointerException at setUpdatedCustomerInfoListener (#621) via Cesar de la Vega (@vegaro)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.13.2 (#617) via RevenueCat Git Bot (@RCGitBot)
Add syncObserverModeAmazonPurchase (#609) via Cesar de la Vega (@vegaro)
syncObserverModeAmazonPurchase (#609) via Cesar de la Vega (@vegaro)Sends PurchasesCustomerInfoUpdatedEvent and PurchasesReadyForPromotedProductPurchaseEvent on UiThread (#600) via Cesar de la Vega (@vegaro)
Added Purchases.setLogHandler (#591) via Cesar de la Vega (@vegaro)
Purchases.setLogLevel (#589) via NachoSoto (@NachoSoto)DEVELOPMENT.md: added section on how to run tests (#590) via NachoSoto (@NachoSoto)Change default usesStoreKit2IfAvailable to false (#587) via Cesar de la Vega (@vegaro)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.8.0 (#572) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.7.0 (#566) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.5.4 (#558) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.5.3 (#553) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.5.2 (#550) via RevenueCat Git Bot (@RCGitBot)
Fix for java.lang.IllegalAccessError: Interface androidx.lifecycle.c (#547) via Cesar de la Vega (@vegaro)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.5.1 (#544) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.5.0 (#539) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.4.4 (#534) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.4.3 (#532) via RevenueCat Git Bot (@RCGitBot)
[AUTOMATIC BUMP] Updates purchases-hybrid-common to 4.4.1 (#528) via RevenueCat Git Bot (@RCGitBot)
Add setCleverTapId, setMixpanelDistinctID, setFirebaseAppInstanceId (#522) via Sergio Durban Belmonte (@sdurban)
Update fastlane-plugin-revenuecat_internal (#518) via Cesar de la Vega (@vegaro)
[AUTOMATIC] Updates purchases-hybrid-common to 4.3.2 (#502) via RevenueCat Git Bot (@RCGitBot)
Another fix on update_hybrid_common (#491) via Cesar de la Vega (@vegaro)
[AUTOMATIC] Updates purchases-hybrid-common to 4.2.2 (#476) via RevenueCat Git Bot (@RCGitBot)
purchaseProduct not working when SK2 is enabled
purchaseProduct not working when SK2 is enabled (https://github.com/RevenueCat/react-native-purchases/issues/402)next_version and automatic_release to automatic_bump (#457) via Cesar de la Vega (@vegaro)Fixed crash when cancelling purchases (#403) via NachoSoto (@NachoSoto)
purchases-ios to 4.10.2SK2 as the default on iOSPurchasesFlutterPlugin: silenced unused warning (#444) via NachoSoto (@NachoSoto)README: removed Amazon note since it's now supported. (#442) via NachoSoto (@NachoSoto)Bump compileSdkVersion to version 31 (#436) via Toni Rico (@tonidero)
Fix for no-op calls on Android (enableAdServicesAttributionTokenCollection) (#434) via Josh Holtz (@joshdholtz)
New method for automatic collecting of attribution tokens on iOS and macOS using AdServices - Purchases.enableAdServicesAttributionTokenCollection()
Purchases.enableAdServicesAttributionTokenCollection() (https://github.com/RevenueCat/purchases-ios/pull/1727)purchases-hybrid-common to 4.0.2
In addition to all the changes included in the latest major release 4.0.0!
RevenueCat Flutter SDK v4 is here!!
RevenueCat Flutter SDK v4 is here!!
⚠️ ⚠️ Important ⚠️ ⚠️ Observer mode for Amazon is not supported yet.
We have introduced support for using the Amazon Appstore. We have extensively tested this, and there are some apps using our pre-release Amazon versions in production.
However, we have found some inconsistencies in the way Amazon Appstore prices are reported. We are actively working on patching these inconsistencies.
Please help us help you by reporting any issues you find. New RevenueCat Issue.
You can enable Amazon Appstore support by configuring the SDK using the new RevenueCatAPIKeyAmazon field.
For more information around configuration please take a look at the Amazon Appstore section in our docs. The official Amazon In-App Purchasing docs also contain very valuable information, especially around testing and best practices.
This version of the SDK automatically uses StoreKit 2 APIs under the hood only for APIs that the RevenueCat team has determined work better than StoreKit 1.
New types that wrap native types from Apple, Google and Amazon, and we cleaned up the naming of other types and methods for a more consistent experience.
| 3.x | 4.0.0 |
|---|---|
Purchases.setup |
Purchases.configure |
| 3.x | 4.0.0 |
|---|---|
IntroductoryPrice.periodUnit (String) |
IntroductoryPrice.periodUnit (PeriodUnit) |
IntroductoryPrice.introPrice |
IntroductoryPrice.price |
IntroductoryPrice.introPriceString |
IntroductoryPrice.priceString |
IntroductoryPrice.introPricePeriod |
IntroductoryPrice.period |
IntroductoryPrice.introPricePeriodNumberOfUnits |
IntroductoryPrice.periodNumberOfUnits |
IntroductoryPrice.introPriceCycles |
IntroductoryPrice.cycles |
Purchases.addAttributionData |
Set<NetworkID> |
Purchases.identify |
Purchases.logIn |
Purchases.createAlias |
Purchases.logIn |
Purchases.reset |
Purchases.logOut |
PurchasesAttributionNetwork |
Set<NetworkID> |
| 3.x | 4.0.0 |
|---|---|
PurchaserInfo |
CustomerInfo |
Transaction |
StoreTransaction |
Product |
StoreProduct |
Discount |
StoreProductDiscount |
PaymentDiscount |
PromotionalOffer |
Package.product |
Package.storeProduct |
Purchases.PurchaserInfoUpdateListener |
Purchases.CustomerInfoUpdateListener |
Purchases.removePurchaserInfoUpdateListener |
Purchases.removeCustomerInfoUpdateListener |
Purchases.restoreTransactions |
Purchases.restorePurchases |
Purchases.getPurchaseInfo |
Purchases.getCustomerInfo |
Purchases.invalidatePurchaserInfoCache |
Purchases.invalidateCustomerInfoCache |
Purchases.getPaymentDiscount |
Purchases.getPromotionalOffer |
Store enum has been moved from entitlement_info_wrapper.dart to store.dart- Fixes userCancelled crash: PR
⚠️ ⚠️ Important ⚠️ ⚠️ Observer mode for Amazon is not supported yet.
⚠️ ⚠️ Important ⚠️ ⚠️ Observer mode for Amazon is not supported yet.
We have introduced support for using the Amazon Appstore. We have extensively tested this, and there are some apps using our pre-release Amazon versions in production.
However, we have found some inconsistencies in the way Amazon Appstore prices are reported. We are actively working on patching these inconsistencies.
Please help us help you by reporting any issues you find. New RevenueCat Issue.
You can enable Amazon Appstore support by configuring the SDK using the new RevenueCatAPIKeyAmazon field.
For more information around configuration please take a look at the Amazon Appstore section in our docs. The official Amazon In-App Purchasing docs also contain very valuable information, especially around testing and best practices.
This version of the SDK automatically uses StoreKit 2 APIs under the hood only for APIs that the RevenueCat team has determined work better than StoreKit 1.
New types that wrap native types from Apple, Google and Amazon, and we cleaned up the naming of other types and methods for a more consistent experience.
| 3.x | 4.0.0 |
|---|---|
Purchases.setup |
Purchases.configure |
| 3.x | 4.0.0 |
|---|---|
IntroductoryPrice.periodUnit (String) |
IntroductoryPrice.periodUnit (PeriodUnit) |
IntroductoryPrice.introPrice |
IntroductoryPrice.price |
IntroductoryPrice.introPriceString |
IntroductoryPrice.priceString |
IntroductoryPrice.introPricePeriod |
IntroductoryPrice.period |
IntroductoryPrice.introPricePeriodNumberOfUnits |
IntroductoryPrice.periodNumberOfUnits |
IntroductoryPrice.introPriceCycles |
IntroductoryPrice.cycles |
Purchases.addAttributionData |
Set<NetworkID> |
Purchases.identify |
Purchases.logIn |
Purchases.createAlias |
Purchases.logIn |
Purchases.reset |
Purchases.logOut |
PurchasesAttributionNetwork |
Set<NetworkID> |
| 3.x | 4.0.0 |
|---|---|
PurchaserInfo |
CustomerInfo |
Transaction |
StoreTransaction |
Product |
StoreProduct |
Discount |
StoreProductDiscount |
PaymentDiscount |
PromotionalOffer |
Package.product |
Package.storeProduct |
Purchases.PurchaserInfoUpdateListener |
Purchases.CustomerInfoUpdateListener |
Purchases.removePurchaserInfoUpdateListener |
Purchases.removeCustomerInfoUpdateListener |
Purchases.restoreTransactions |
Purchases.restorePurchases |
Purchases.getPurchaseInfo |
Purchases.getCustomerInfo |
Purchases.invalidatePurchaserInfoCache |
Purchases.invalidateCustomerInfoCache |
Purchases.getPaymentDiscount |
Purchases.getPromotionalOffer |
Store enum has been moved from entitlement_info_wrapper.dart to store.dart⚠️⚠️ This is a pre-release version. ⚠️⚠️
⚠️⚠️ This is a pre-release version. ⚠️⚠️
purchaserInfo renamed to customerInfoStoreProduct, StoreTransaction and StoreProductDiscount. package.product to package.storeProductsetup changed with configureKnown issues: Amazon support currently doesn't work correctly in the Live App Testing and production environments. The purchase modal will not show correctly for Amazon in these environments.
Nothing published for this version
Add support for iOS promoted purchases (https://github.com/RevenueCat/purchases-flutter/pull/344) New type: ReadyForPromotedProductPurchaseListener Ne
ReadyForPromotedProductPurchaseListener
New methods: addReadyForPromotedProductPurchaseListener(ReadyForPromotedProductPurchaseListener listener)
removeReadyForPromotedProductPurchaseListener(ReadyForPromotedProductPurchaseListener listenerToRemove)Add instructions for how to install Amazon Store version in README
Add back IntroductoryPrice fields that were accidentally removed without a major release
IntroductoryPrice.introPricePeriodUnit
IntroductoryPrice.introPrice
IntroductoryPrice.introPriceString
IntroductoryPrice.introPriceCycles
IntroductoryPrice.introPricePeriodNumberOfUnitsFix missing IntroductoryPrice export
Fix purchasePackage, purchaseProduct, purchaseDiscountedPackage and purchaseDiscountedProduct crashes due to a wrong type.
purchasePackage, purchaseProduct, purchaseDiscountedPackage and purchaseDiscountedProduct crashes due to a wrong type.Fixed a crash in getOfferings on Android for products that don't have intro pricing https://github.com/RevenueCat/purchases-flutter/pull/294
getOfferings on Android for products that don't have intro pricing
https://github.com/RevenueCat/purchases-flutter/pull/294Breaking changes (these were unintended and fixed in 3.9.4): IntroductoryPrice.introPricePeriodUnit -> IntroductoryPrice.periodUnit (+ changed from st…
IntroductoryPrice.introPricePeriodUnit -> IntroductoryPrice.periodUnit (+ changed from string to PeriodUnit enum type)
IntroductoryPrice.introPrice -> IntroductoryPrice.price
IntroductoryPrice.introPriceString -> IntroductoryPrice.priceString
IntroductoryPrice.introPriceCycles -> IntroductoryPrice.cycles
IntroductoryPrice.introPricePeriodNumberOfUnits -> IntroductoryPrice.periodNumberOfUnitsAdded isConfigured, which returns true if the SDK has already been configured through setup.
isConfigured, which returns true if the SDK has already been configured through setup.EntitlementInfo.ownershipType for Android
https://github.com/RevenueCat/purchases-hybrid-common/pulls/106purchases-hybrid-common to 1.11.1 Changelog herepurchases-ios to 3.13.1 (Changelog here)purchases-android to 4.6.0 (Changelog here)Your coding agent can read these notes before it upgrades. Set up the MCP server →