NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #2843 most downloaded on pub.dev
Adapty SDK is an open-source framework that makes implementing in-app subscriptions in Flutter applications fast and easy. It’s 100% open-source and lightweight.
Last release 15 days ago
23 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 58 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
6 years old
93 releases · first in 2021
AdaptyCustomAsset.linearGradient accepts AlignmentDirectional and mixed begin / end values, resolved left-to-right. Before, the flow failed to open wi
AdaptyCustomAsset.linearGradient accepts AlignmentDirectional and mixed begin/end values, resolved left-to-right. Before, the flow failed to open with a TypeError.AdaptyUI.createFlowView fails with an AdaptyError (wrongParam) naming a custom asset it can't encode, instead of a raw ArgumentError or JsonUnsupportedObjectError.transform, or a tileMode other than TileMode.clamp, on a custom LinearGradient is still ignored and now logs a warning.❗️ Don't forget to update your local fallback file if needed.
Full Changelog: 4.1.0...4.1.1
External attribution APIs are renamed, with no deprecated aliases: .updateAttribution() is now .updateExternalAttribution() , AdaptyAttributionSource…
One column per quarter.
👉 See the migration guide for the full details.
.updateAttribution() is now .updateExternalAttribution(), AdaptyAttributionSource is now AdaptyExternalAttributionProvider, and AdaptyProfile.appliedAttributionSources is now appliedExternalAttributionProviders..withAdaptyAttributionEnabled(true) on your AdaptyConfiguration.AdaptyExternalAttributionProvider ships appleAds, adjust, appsflyer, branch, tenjin, and custom.Adapty().didReceivePromotedPurchaseStream; complete it with .makePromotedPurchase(). While nothing is subscribed to that stream, the SDK completes the purchase itself. Requires iOS 16.4 or later.AdaptyUI.dismissFlowView and AdaptyUIFlowView.dismiss accept destroy: false to keep the view alive after dismissing it: presenting it again resumes on the screen the user left. The default destroy: true releases the view as before.preloadProducts had no effect on AdaptyUI.createFlowView.flowViewDidReceiveAnalyticEvent as numbers; before, every 0/1 arrived as false/true.❗️ Don't forget to update your local fallback file if needed.
Full Changelog: 4.0.4...4.1.0
👉 See the migration guide for the full details.
.updateAttribution() is now .updateExternalAttribution(), AdaptyAttributionSource is now AdaptyExternalAttributionProvider, and AdaptyProfile.appliedAttributionSources is now appliedExternalAttributionProviders..withAdaptyAttributionEnabled(true) on your AdaptyConfiguration.AdaptyExternalAttributionProvider ships appleAds, adjust, appsflyer, branch, tenjin, and custom.Adapty().didReceivePromotedPurchaseStream; complete it with .makePromotedPurchase(). While nothing is subscribed to that stream, the SDK completes the purchase itself. Requires iOS 16.4 or later.AdaptyUI.dismissFlowView and AdaptyUIFlowView.dismiss accept destroy: false to keep the view alive after dismissing it: presenting it again resumes on the screen the user left. The default destroy: true releases the view as before.preloadProducts had no effect on AdaptyUI.createFlowView.flowViewDidReceiveAnalyticEvent as numbers; before, every 0/1 arrived as false/true.Native dependencies in this release: iOS 4.1.3, Android 4.1.1 (crossplatform 4.1.5).
❗️ Don't forget to update your local fallback file.
Full Changelog: https://github.com/adaptyteam/AdaptySDK-Flutter/compare/4.0.4...4.1.0
[Android] restorePurchases() no longer throws when there is nothing to restore. It now completes successfully with the current AdaptyProfile — check t
restorePurchases() no longer throws when there is nothing to restore. It now completes successfully with the current AdaptyProfile — check the access level in the returned profile instead of catching an error. If your code treats a failed restore as "nothing to restore", that branch will no longer be reached on Android.text_color and text_background keys. The old color and background keys are still read, so views built before the change keep rendering as they did. Affected both platforms.AdaptyErrorCode.noPurchasesToRestore — no longer returned on Android. Check the access level status in the profile returned by restorePurchases().Native dependencies in this release: iOS 4.0.3, Android 4.0.2.
❗️ Don't forget to update your local fallback file if needed.
Full Changelog: 4.0.3...4.0.4
restorePurchases() no longer fails with noPurchasesToRestore when there is nothing to restore. It now completes successfully with the current AdaptyProfile — check the access level status in the returned profile instead of catching an error. AdaptyErrorCode.noPurchasesToRestore is deprecated on Android.text_color and text_background keys. The old color and background keys are still read, so views built before the change keep rendering as they did. Fixed on both platforms.4.0.3.4.0.2.The locale argument of getFlow and getFlowForDefaultAudience has had no effect on flows since 4.0.0. It is now deprecated and logs a warning instead o…
AdaptyUI.createFlowView and AdaptyUIFlowPlatformView now accept a locale — the localization the flow view is rendered with. Since 4.0.0 a flow is localized when its view is built, and there was no way to choose that localization from Dart.
Without a locale the view is rendered in en, falling back to the flow's default localization when the flow has no en. Asking for a localization the flow does not have falls back to the flow default as well, without an error. Strings missing from the chosen localization are filled in from the default one.
AdaptyUIFlowView now reports the locale the view was actually built with, so you can tell which localization was applied.
LinearGradient had no explicit stops — the idiomatic LinearGradient(colors: [a, b]) reached the native side with no colors at all. Affected both platforms.locale argument of getFlow and getFlowForDefaultAudience has had no effect on flows since 4.0.0. It is now deprecated and logs a warning instead of being dropped silently — pass the locale to createFlowView or AdaptyUIFlowPlatformView instead.Native dependencies in this release: iOS 4.0.2, Android 4.0.1.
Full Changelog: 4.0.2...4.0.3
AdaptyUI.createFlowView and AdaptyUIFlowPlatformView now accept a locale — the localization the flow view is rendered with. Since 4.0.0 a flow is localized when its view is built, and there was no way to choose that localization from Dart. Requires the native iOS 4.0.2 and Android 4.0.1 releases.
Without a locale the view is rendered in en, falling back to the flow's default localization when the flow has no en. Asking for a localization the flow does not have falls back to the flow default as well, without an error. Strings missing from the chosen localization are filled in from the default one.
AdaptyUIFlowView now reports the locale the view was actually built with, so you can tell which localization was applied. It is null when paired with an older native SDK.
The locale argument of getFlow and getFlowForDefaultAudience has had no effect on flows since 4.0.0. It is now marked deprecated and logs a warning instead of being silently dropped; pass the locale to createFlowView or AdaptyUIFlowPlatformView instead.
Fixed custom gradient assets losing all of their colors when the LinearGradient had no explicit stops. Affected both platforms.
The "paywall" concept is generalized into flow ; most Paywall / paywall symbols are renamed to Flow / flow , and previously deprecated aliases are rem…
freed pointer was not the last allocation) when a placement was served from cache, on Xcode 26.3 / Swift 6.2.4 release builds.adapty_flutter_kids no longer imports AppTrackingTransparency — the native ATT surface is now fully compiled out under the kids trait.Native iOS SDK dependency is pinned to 4.0.1 in this release.
Full Changelog: 4.0.1...4.0.2
⚠️ Major release with breaking API changes. The "paywall" concept is generalized into flow; most
Paywall/paywallsymbols are renamed toFlow/flow, and previously deprecated aliases are removed.
4.0.0 introduces Flow, which replaces the Paywall as the core unit of presentation and analytics. A flow can contain multiple screens, with its rendering, navigation, and analytics driven by the new flow runtime.
👉 Read more about Adapty Flow Builder.
👉 See the migration guide to move from 3.x.
flutter config --enable-swift-package-manager; Flutter 3.44+ enables it by default.AdaptyPaywall is split into AdaptyFlow (+ AdaptyFlowPaywall); AdaptyUIPaywallView → AdaptyUIFlowView; Adapty().getPaywall(...) → getFlow(...) and getPaywallForDefaultAudience(...) → getFlowForDefaultAudience(...); AdaptyUI().createPaywallView(...) → createFlowView(...); logShowPaywall(...) → logShowFlow(...).AdaptyUIPaywallsEventsObserver → AdaptyUIFlowsEventsObserver (setPaywallsEventsObserver → setFlowsEventsObserver); all paywallViewDid* callbacks → flowViewDid*. The separate rendering-failure callback is folded into flowViewDidReceiveError.AdaptyPaywallViewConfiguration is no longer exposed; the view configuration is now opaque.Adapty.setFallbackPaywalls() (use setFallback()), AdaptyConfigurationBuilder.withIdfaCollectionDisabled() (use withAppleIdfaCollectionDisabled()), AdaptyFlow.placementId / AdaptyFlow.revision (use placement.id / placement.revision), AdaptyPurchaseResultSuccess.jwsTransaction (use appleJwsTransaction), and AdaptyUIFlowView.paywallVariationId (use variationId).AndroidSystemBackAction in your events observer if you want it to close the flow.AdaptyUISystemRequestsHandler — handle flow system requests (OS permission prompts and App Store review requests) triggered by flow actions. Register via AdaptyUI().setSystemRequestsHandler(...).AdaptyUIObserverModeResolver — drive purchases and restores initiated from flows while running in Observer Mode. Register via AdaptyUI().setObserverModeResolver(...).flowViewDidReceiveAnalyticEvent — receive customer-facing analytic events emitted by a flow.Adapty.openWebPaywall and Adapty.createWebPaywallUrl now accept an AdaptyFlowPaywall in addition to an AdaptyPaywallProduct.setFlowsEventsObserver / setOnboardingsEventsObserver now accept null to detach a previously set observer, so the SDK no longer retains it (useful for cleanup).AdaptyOnboarding, AdaptyUIOnboardingView, AdaptyUIOnboardingPlatformView, AdaptyUIOnboardingsEventsObserver, the onboarding state / input / analytics models, and the related Adapty / AdaptyUI methods (getOnboarding, getOnboardingForDefaultAudience, create/present/dismissOnboardingView, register/unregister/setOnboardingsEventsObserver) are now annotated @Deprecated.Full Changelog: 3.17.1...4.0.0
freed pointer was not the last allocation) when a placement was served from cache, on Xcode 26.3 / Swift 6.2.4 release builds.adapty_flutter_kids no longer imports AppTrackingTransparency — the native ATT surface is now fully compiled out under the kids trait.4.0.1.The "paywall" concept is generalized into flow ; most Paywall / paywall symbols are renamed to Flow / flow , and previously deprecated aliases are rem…
Full Changelog: 4.0.0...4.0.1
⚠️ Major release with breaking API changes. The "paywall" concept is generalized into flow; most
Paywall/paywallsymbols are renamed toFlow/flow, and previously deprecated aliases are removed.
4.0.0 introduces Flow, which replaces the Paywall as the core unit of presentation and analytics. A flow can contain multiple screens, with its rendering, navigation, and analytics driven by the new flow runtime.
👉 Read more about Adapty Flow Builder.
👉 See the migration guide to move from 3.x.
flutter config --enable-swift-package-manager; Flutter 3.44+ enables it by default.AdaptyPaywall is split into AdaptyFlow (+ AdaptyFlowPaywall); AdaptyUIPaywallView → AdaptyUIFlowView; Adapty().getPaywall(...) → getFlow(...) and getPaywallForDefaultAudience(...) → getFlowForDefaultAudience(...); AdaptyUI().createPaywallView(...) → createFlowView(...); logShowPaywall(...) → logShowFlow(...).AdaptyUIPaywallsEventsObserver → AdaptyUIFlowsEventsObserver (setPaywallsEventsObserver → setFlowsEventsObserver); all paywallViewDid* callbacks → flowViewDid*. The separate rendering-failure callback is folded into flowViewDidReceiveError.AdaptyPaywallViewConfiguration is no longer exposed; the view configuration is now opaque.Adapty.setFallbackPaywalls() (use setFallback()), AdaptyConfigurationBuilder.withIdfaCollectionDisabled() (use withAppleIdfaCollectionDisabled()), AdaptyFlow.placementId / AdaptyFlow.revision (use placement.id / placement.revision), AdaptyPurchaseResultSuccess.jwsTransaction (use appleJwsTransaction), and AdaptyUIFlowView.paywallVariationId (use variationId).AndroidSystemBackAction in your events observer if you want it to close the flow.AdaptyUISystemRequestsHandler — handle flow system requests (OS permission prompts and App Store review requests) triggered by flow actions. Register via AdaptyUI().setSystemRequestsHandler(...).AdaptyUIObserverModeResolver — drive purchases and restores initiated from flows while running in Observer Mode. Register via AdaptyUI().setObserverModeResolver(...).flowViewDidReceiveAnalyticEvent — receive customer-facing analytic events emitted by a flow.Adapty.openWebPaywall and Adapty.createWebPaywallUrl now accept an AdaptyFlowPaywall in addition to an AdaptyPaywallProduct.setFlowsEventsObserver / setOnboardingsEventsObserver now accept null to detach a previously set observer, so the SDK no longer retains it (useful for cleanup).AdaptyOnboarding, AdaptyUIOnboardingView, AdaptyUIOnboardingPlatformView, AdaptyUIOnboardingsEventsObserver, the onboarding state / input / analytics models, and the related Adapty / AdaptyUI methods (getOnboarding, getOnboardingForDefaultAudience, create/present/dismissOnboardingView, register/unregister/setOnboardingsEventsObserver) are now annotated @Deprecated.Full Changelog: 3.17.1...4.0.0
4.0.0 (was from: "4.0.0"). The Flutter bridge targets this exact native version, so the plugin no longer resolves to newer 4.x native releases it wasn't built against.The "paywall" concept is generalized into flow ; most Paywall / paywall symbols are renamed to Flow / flow , and previously deprecated aliases are rem…
⚠️ Major release with breaking API changes. The "paywall" concept is generalized into flow; most
Paywall/paywallsymbols are renamed toFlow/flow, and previously deprecated aliases are removed.
4.0.0 introduces Flow, which replaces the Paywall as the core unit of presentation and analytics. A flow can contain multiple screens, with its rendering, navigation, and analytics driven by the new flow runtime.
👉 Read more about Adapty Flow Builder.
👉 See the migration guide to move from 3.x.
flutter config --enable-swift-package-manager; Flutter 3.44+ enables it by default.AdaptyPaywall is split into AdaptyFlow (+ AdaptyFlowPaywall); AdaptyUIPaywallView → AdaptyUIFlowView; Adapty().getPaywall(...) → getFlow(...) and getPaywallForDefaultAudience(...) → getFlowForDefaultAudience(...); AdaptyUI().createPaywallView(...) → createFlowView(...); logShowPaywall(...) → logShowFlow(...).AdaptyUIPaywallsEventsObserver → AdaptyUIFlowsEventsObserver (setPaywallsEventsObserver → setFlowsEventsObserver); all paywallViewDid* callbacks → flowViewDid*. The separate rendering-failure callback is folded into flowViewDidReceiveError.AdaptyPaywallViewConfiguration is no longer exposed; the view configuration is now opaque.Adapty.setFallbackPaywalls() (use setFallback()), AdaptyConfigurationBuilder.withIdfaCollectionDisabled() (use withAppleIdfaCollectionDisabled()), AdaptyFlow.placementId / AdaptyFlow.revision (use placement.id / placement.revision), AdaptyPurchaseResultSuccess.jwsTransaction (use appleJwsTransaction), and AdaptyUIFlowView.paywallVariationId (use variationId).AndroidSystemBackAction in your events observer if you want it to close the flow.AdaptyUISystemRequestsHandler — handle flow system requests (OS permission prompts and App Store review requests) triggered by flow actions. Register via AdaptyUI().setSystemRequestsHandler(...).AdaptyUIObserverModeResolver — drive purchases and restores initiated from flows while running in Observer Mode. Register via AdaptyUI().setObserverModeResolver(...).flowViewDidReceiveAnalyticEvent — receive customer-facing analytic events emitted by a flow.Adapty.openWebPaywall and Adapty.createWebPaywallUrl now accept an AdaptyFlowPaywall in addition to an AdaptyPaywallProduct.setFlowsEventsObserver / setOnboardingsEventsObserver now accept null to detach a previously set observer, so the SDK no longer retains it (useful for cleanup).AdaptyOnboarding, AdaptyUIOnboardingView, AdaptyUIOnboardingPlatformView, AdaptyUIOnboardingsEventsObserver, the onboarding state / input / analytics models, and the related Adapty / AdaptyUI methods (getOnboarding, getOnboardingForDefaultAudience, create/present/dismissOnboardingView, register/unregister/setOnboardingsEventsObserver) are now annotated @Deprecated.Full Changelog: 3.17.1...4.0.0
⚠️ Major release with breaking API changes. The "paywall" concept is generalized into "flow"; most
Paywall/paywallUI symbols are renamed toFlow/flow, and previously deprecated aliases are removed.
AdaptyPaywall is split into AdaptyFlow (+ AdaptyFlowPaywall); AdaptyUIPaywallView → AdaptyUIFlowView; Adapty().getPaywall(...) → getFlow(...) and getPaywallForDefaultAudience(...) → getFlowForDefaultAudience(...); AdaptyUI().createPaywallView(...) → createFlowView(...); logShowPaywall(...) → logShowFlow(...).AdaptyUIPaywallsEventsObserver → AdaptyUIFlowsEventsObserver (setPaywallsEventsObserver → setFlowsEventsObserver); all paywallViewDid* callbacks → flowViewDid*. The separate rendering-failure callback is folded into flowViewDidReceiveError.AdaptyPaywallViewConfiguration is no longer exposed; the view configuration is now opaque.Adapty.setFallbackPaywalls() (use setFallback()), AdaptyConfigurationBuilder.withIdfaCollectionDisabled() (use withAppleIdfaCollectionDisabled()), AdaptyFlow.placementId / AdaptyFlow.revision (use placement.id / placement.revision), AdaptyPurchaseResultSuccess.jwsTransaction (use appleJwsTransaction), and AdaptyUIFlowView.paywallVariationId (use variationId).AndroidSystemBackAction in your events observer if you want it to close the flow.flutter config --enable-swift-package-manager; Flutter 3.44+ enables it by default.AdaptyUISystemRequestsHandler — handle flow system requests (OS permission prompts and App Store review requests) triggered by flow actions. Register via AdaptyUI().setSystemRequestsHandler(...).AdaptyUIObserverModeResolver — drive purchases and restores initiated from flows while running in Observer Mode. Register via AdaptyUI().setObserverModeResolver(...).flowViewDidReceiveAnalyticEvent — receive customer-facing analytic events emitted by a flow.Adapty.openWebPaywall and Adapty.createWebPaywallUrl now accept an AdaptyFlow (uses the flow's first paywall variation) in addition to an AdaptyPaywallProduct.setFlowsEventsObserver / setOnboardingsEventsObserver now accept null to detach a previously set observer, so the SDK no longer retains it (useful for cleanup).AdaptyOnboarding, AdaptyUIOnboardingView, AdaptyUIOnboardingPlatformView, AdaptyUIOnboardingsEventsObserver, the onboarding state / input / analytics models, and the related Adapty/AdaptyUI methods (getOnboarding, getOnboardingForDefaultAudience, create/present/dismissOnboardingView, register/unregister/setOnboardingsEventsObserver) are now annotated @Deprecated.[iOS] Updated native iOS SDK to 3.17.3, fixing a crash when a placement was served from cache on recent Xcode / Swift Release builds.
[Android] Updated native Android SDK to 3.17.2.
⚠️ Swift Package Manager support is experimental. If anything doesn't work with the SwiftPM integration, please report it at https://github.com/adapty
⚠️ Swift Package Manager support is experimental. If anything doesn't work with the SwiftPM integration, please report it at https://github.com/adaptyteam/AdaptySDK-Flutter/issues. Kids Mode does not work with SwiftPM yet — use the CocoaPods integration if you need Kids Mode.
3.15.0 the SDK has been compatible with Billing Library 8 (opt-in); it is now used by default.OpenUrlAction now carries an openIn parameter (AdaptyWebPresentation) indicating where the URL should be opened — external browser or in-app browser.AdaptyProfile now exposes appliedAttributionSources (List<AdaptyAttributionSource>), reporting which attribution sources have been applied to the profile (e.g. appleSearchAds).Package.swift alongside the CocoaPods podspec, so apps with SwiftPM enabled build it via SwiftPM while CocoaPods keeps working unchanged. #184OpenUrlAction constructor signature changed: it now requires a second positional argument openIn of type AdaptyWebPresentation.OpenUrlAction now carries an openIn parameter (AdaptyWebPresentation) indicating where the URL should be opened — external browser or in-app browser.Package.swift alongside the CocoaPods podspec, so apps with SwiftPM enabled build it via SwiftPM while CocoaPods keeps working unchanged.AdaptyProfile now exposes appliedAttributionSources (List<AdaptyAttributionSource>), reporting which attribution sources have been applied to the profile (e.g. appleSearchAds).OpenUrlAction constructor signature changed: it now requires a second positional argument openIn of type AdaptyWebPresentation. The action instances are normally produced by the SDK from native events, so most integrations are unaffected; direct constructions need an explicit openIn.[iOS] Updated native iOS SDK to 3.15.7.
[iOS] Fixed backend errors handling.
Full Changelog: 3.15.3...3.15.4
[iOS] Fixed a bug where the placementId value was incorrect for AdaptyUIPaywallView.
placementId value was incorrect for AdaptyUIPaywallView.Onboardings: External links now work correctly. You can configure which browser is used by passing the externalUrlsPresentation parameter to the .crea
externalUrlsPresentation parameter to the .createOnboardingView method or to the AdaptyUIOnboardingPlatformView constructor (.inAppBrowser by default)..withAppleClearDataOnBackup() setting in AdaptyConfiguration.[Android] Custom tags, timers, and assets now work correctly with AdaptyUIPaywallPlatformView
AdaptyUIPaywallPlatformViewSupport for Local Access Levels, allowing the SDK to verify purchases directly with the store even when Adapty servers are unreachable. Read More.
accessLevelId property for AdaptyPaywallProduct.createWebPaywallUrl() or .openWebPaywall() to navigate users to an external webpage with alternative checkout options. Read More..openWebPaywall() method now supports a new openIn parameter. Available options: externalBrowser (default) and inAppBrowser.customerUserId is in UUID format..withBackendBaseUrl(), .withBackendFallbackBaseUrl(), .withBackendConfigsBaseUrl(), .withBackendUABaseUrl() methods of AdaptyConfiguration were being removed, please use .withServerCluster() method to configure the SDK❗️ Don't forget to update your local fallback file if needed.
[iOS] Fixed a bug where custom timers would start at zero. #174
[Android] Fixed onboarding dismiss issue
Support for Adapty Android SDK 3.11.1
[Android] Fixed AdaptyUIOnboardingPlatformView events
AdaptyUIOnboardingPlatformView eventsOnboarding Builder now supports localizations. Read More.
AdaptyUI: added support for purchase button animations
productPurchaseParams in .createPaywallView method.Deprecations:
.makePurchase method instead of subscriptionUpdateParams and isOfferPersonalized arguments use parameters.AdaptyPaywall model instead of vendorProductIds use productIdentifiers.Added support for the User Acquisition feature. Read more.
Changed the makePurchase() method signature when using parameters other than product – they have been extracted into AdaptyPurchaseParameters
makePurchase() method signature when using parameters other than product – they have been extracted into AdaptyPurchaseParametersobfuscatedProfileId and obfuscatedAccountId[Android] Fixed AdaptyUI rendering issues
[Android] Fixed AdaptyUI rendering issues
- [iOS] Fixed dependency issue
🎉 With this version we're introducing support for the Onboarding Builder that allows your non-technical teams to create attractive and customizable on
🎉 With this version we're introducing support for the Onboarding Builder that allows your non-technical teams to create attractive and customizable onboarding flows without coding. Read More.
assetsResolver parameter to getPaywallConfiguration method.paywallPlacementId and paywallVariationId public fields for AdaptyPaywallController.setFallbackPaywalls(fileURL:) renamed to setFallback(fileURL:).AdaptyUIView was renamed to AdaptyUIPaywallView.[Android] Fix AdaptyUI video support
Crossplacement A/B Test: Introduced support for Crossplacement A/B testing – a test type that spans multiple placements within your app. Read more.
.createWebPaywallUrl or .openWebPaywall to navigate users to an external webpage with alternative checkout options. Read More.profileWasChanged error could be thrown when calling .getPaywall immediately after activating the sdk with a customerUserId.- Fixed support for Xcode 16.3
Added audienceName property to AdaptyPaywall struct.
audienceName property to AdaptyPaywall struct.updateCollectingRefundDataConsent and updateRefundPreference methods. Read More.reportTransaction behaviour for iOS and Android.AdaptyConfiguration: withIdfaCollectionDisabled is now deprecated, use withAppleIdfaCollectionDisabled instead.
withAppleIdfaCollectionDisabled parameter.withGoogleAdvertisingIdCollectionDisabled parameter.withIdfaCollectionDisabled is now deprecated, use withAppleIdfaCollectionDisabled instead.[Android] Fix AdaptyUI Close button
You no longer need to activate AdaptyUI separately, as it is now handled automatically during the usual activation process. Use .withMediaCacheConfigu
.withMediaCacheConfiguration in AdaptyConfiguration if you wish to override the default settings:await Adapty().activate(
configuration: AdaptyConfiguration(apiKey: 'YOUR_API_KEY')
..withMediaCacheConfiguration(...),
);
New Method for Setting Integration Identifiers:
setIntegrationIdentifier(key:value:):
updateProfile method, passing integration IDs to the builder.setIntegrationIdentifier to set integration identifiers with a key and value.Updated updateAttribution Method:
source parameter is now a String instead of an enum.networkUserId parameter has been removed. Use setIntegrationIdentifier to set the networkUserId instead.setVariationId() with reportTransaction(transactionId:,variationId:) after every transaction.finish().variationId parameter in reportTransaction is now optional.[iOS] Fix errors in Xcode 15.0 (#100).
identify method was called[iOS] Added support for Xcode 16.2
AdaptyUI: Internal improvements to paywall rendering
isActivated() method returned incorrect valuecontent field of AdaptyUIDialog was not displaying correctlysubscriptionUpdateParams wrong serializationsetupAfterHotRestart method to Adapty and AdaptyUI which allows you to initialize the plugin after hot restart. Please check isActivated before calling this method. Please consider using this method in debug builds only to avoid any unexpected issues in release builds.- added missing models exports
AdaptyErrorCode change final to const
AdaptyErrorCode change final to const🎉 Meet the Adapty Flutter SDK 3.2.0!
🎉 Meet the Adapty Flutter SDK 3.2.0!
With this version we're introducing support for the new paywall builder that offers more templates and layout flexibility. Note that:
On top of that, this version also offers complete support of StoreKit 2 and Swift 6 on the iOS side. See more here.
Breaking Changes:
makePurchase now returns AdaptyPurchaseResult instead of AdaptyPurchasedInfo.getProductsIntroductoryOfferEligibility(products:) has been removed. The getPaywallProducts function now returns a product object with prepopulated offer information. Consider using the getPaywallProductsWithoutDeterminingOffer(paywall:) method if you need to load products without determining offer eligibilities.paywallViewDidFinishPurchase now accepts AdaptyPurchaseResult instead of AdaptyPurchasedInfo.paywallViewDidSelectProduct now accepts String (productId) instead of AdaptyPaywallProduct.paywallViewDidCancelPurchase has been removed. Please use the purchaseResult from paywallViewDidFinishPurchase to detect purchase cancellations.Nothing published for this version
Nothing published for this version
[Android] Add parameters to activate method
activate method- Support for Flutter 3.22+
- Support for Flutter 3.22+
Support for Adapty iOS SDK 2.10.3
⚠️ Warning: In this version, we have changed the minimal supported versions:
⚠️ Warning: In this version, we have changed the minimal supported versions:
⚠️ Breaking Changes:
AdaptyStoreKit2Usage parameter in the the Adapty-Info.plist method. Adapty SDK now utilizes the StoreKit 2 method for introductory offer eligibility checks if available.[Android] Fixed the incorrect format of some analytics events in rare cases.
Added support for AdaptyUI 2.1.x
[iOS] Fixed support for Swift 5.7.x (Xcode 14.0 - 14.2)
⚠️ Warning: This version relies on StoreKit 2 instead of StoreKit 1. Starting from this version, you must connect your account to Apple In-App Purchas
⚠️ Warning: This version relies on StoreKit 2 instead of StoreKit 1. Starting from this version, you must connect your account to Apple In-App Purchase API in Adapty Dashboard. Otherwise, we won't be able to make or validate purchases.
New:
fetchPolicy parameter into .getPaywall() methodloadTimeout parameter into .getPaywall() methodRead More in our documentation.
Breaking Changes:
placementId parameter has been added to the getPaywall method, replacing the previously unnamed parameter id. Read MoreAdaptyEnableUsageLogs of Adapty-Info.plist is no longer supported, since this feature is enabled by default. Read MoreAdaptyStoreKit2Usage parameter to Adapty-Info.plist, the default value will be .forIntroEligibilityCheck (this means that by default we will fetch introductory offers eligibility using StoreKit 2). Read More[Android] fixes for AdaptyUI library
[iOS] Update Adapty-iOS dependency to 2.7.0
[Android] Updated retry logic according to new PBL error.
[Android] Fixed error on purchase validation.
AdaptyPaywallProduct now has a unified structure for both systems.[Android] Support for Google Billing Library v5+. Read More
AdaptyPaywallProduct now has a unified structure for both systems.Added hasViewConfiguration for AdaptyPaywall object
hasViewConfiguration for AdaptyPaywall object[iOS] Improved variation_id delivery mechanism when validating purchases (iOS 2.4.4)
[Android] fixed subscription change functionality
Your coding agent can read these notes before it upgrades. Set up the MCP server →