apphud
Official Apphud Flutter SDK is a lightweight open-source library to manage auto-renewable subscriptions and other in-app purchases in your iOS/Android app. No backend required.
3.3.0
882 downloads/mo
#604 most downloaded on pub.dev
apphud/ApphudSDK-Flutter
What this package is like to depend on
Last release 27 days ago
27 Jul 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 53 of 53 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
53 releases · first in 2021
14 releases in the last 12 months
see the full history below
Release timeline
53 releases · Mar 2021 to Jul 2026Releases
latest 53-
3.3.027 Jul 2026Release notes
Open source →What's New in Flutter SDK v3.3.0:
-
Apphud Rules — Full Rules support for Figma rule paywalls and legacy rule screens via
Apphud.setRuleListener()/ApphudRuleListener(appear, purchase, dismiss, survey, andapphudRulePaywallWithoutScreenon both platforms). Also addsApphud.checkRules(),Apphud.pendingRule(),Apphud.showPendingRuleScreen(), plusApphud.submitPushNotificationsToken()andApphud.handlePushNotification()for push-triggered rules.ApphudRulenow exposesscreenId,paywallId, andpaywallIdentifier. -
Rule purchase details —
apphudRulePurchaseCompleteddelivers the purchasedsubscription/nonRenewingPurchase, thetransactionon [iOS] (nullfor StoreKit 2 purchases) andpurchaseon [Android]. Failed rule purchases now report a descriptive message,errorCode, andnetworkIssue. -
Direct & deferred deep link attribution — Added
Apphud.setDeeplinkHandler()(ApphudDeeplinkAttributionwithattribution,kind(direct/deferred), andurl) andApphud.requestDeferredDeeplinkAttribution(). -
BREAKING — Removed
Apphud.attributeFromDeeplink(). UseApphud.setDeeplinkHandler()andApphud.requestDeferredDeeplinkAttribution()instead. -
iOS deep links — Direct deep links (
open url, universal links viacontinue userActivity, launch options) are captured automatically through the Flutter app-delegate plugin. HostAppDelegatemust subclassFlutterAppDelegateand callsuperif those lifecycle methods are overridden. Only universal links on Apphud'saphd.ccdomain are reported as handled, so other deep link SDKs (Firebase Dynamic Links, OneSignal, Branch) keep receiving their own links. SetFlutterDeepLinkingEnabledtofalseinInfo.plistunless you intentionally route the same universal links through Flutter. -
Android deep links — Forward incoming links from
Activity.onCreate/onNewIntentviaApphud.handleIntent(intent)(see example app). -
Example app — Rules debug actions, Android FCM / iOS APNs push token submit, deep link handling samples, and rule/deeplink listener logging.
-
Included Native SDK Versions — [Android] ApphudSDK-Android 3.4.2, [iOS] ApphudSDK 4.4.8.
Release notes
Open source →- [Dart] Apphud Rules support (Figma rule paywalls and legacy rule screens):
Apphud.setRuleListener()/ApphudRuleListenerfor screen appear, purchase, dismiss and survey events.Apphud.checkRules(),Apphud.pendingRule(),Apphud.showPendingRuleScreen().Apphud.submitPushNotificationsToken()andApphud.handlePushNotification()for push-triggered rules.ApphudRuleexposesscreenId,paywallId, andpaywallIdentifieron both platforms.apphudRulePaywallWithoutScreenon both iOS and Android.apphudRulePurchaseCompleteddelivers the purchasedsubscription/nonRenewingPurchase, thetransaction(iOS, when the purchase was not made via StoreKit 2) andpurchase(Android).
- [iOS] Rules bridge via
ApphudUIDelegate(auto-perform / auto-show) andApphudUtils.checkRules(). - [Android] Rules bridge via
ApphudRuleCallbackpassed intoApphud.start()(auto-perform / auto-show). - [Dart] Direct and deferred deep link attribution support:
Apphud.setDeeplinkHandler()to receive deep link attribution updates (ApphudDeeplinkAttributionwithattribution,kind(direct/deferred), andurl).Apphud.requestDeferredDeeplinkAttribution()to trigger deferred attribution.
- BREAKING [Dart] Removed
Apphud.attributeFromDeeplink(). UseApphud.setDeeplinkHandler()andApphud.requestDeferredDeeplinkAttribution()instead. - [iOS] Direct deep links (
open url, universal links viacontinue userActivity, and launch options) are captured automatically through the Flutter app delegate plugin. This requires the hostAppDelegateto subclassFlutterAppDelegateand to not override those lifecycle methods without callingsuper. Only universal links hosted on Apphud'saphd.ccdomain are consumed by the plugin, so other deep link SDKs (Firebase Dynamic Links, OneSignal, Branch) keep receiving their own links. - [Android] Forward incoming links from your
Activity'sonCreateandonNewIntentto the native SDK viaApphud.handleIntent(intent)(see the updated example app). - Example app: Rules debug menu actions, Android FCM / iOS APNs push token submit, deep link handling examples, and rule/deeplink listener logging.
- Dependencies of Native SDK's were updated to:
- [Android] 3.4.2
- [iOS] 4.4.8
-
-
3.2.517 Jun 2026Release notes
Open source →What's new in v3.2.5:
- [Android] Fixed a bug that could lead to a crash while upgrading from previous SDK versions to newer.
Release notes
Open source →- [Android] Fixed a bug that could lead to a crash when upgrading SDK from older versions to newer.
- Dependencies of Native SDK's were updated to:
- [Android] 3.2.6
-
3.2.425 May 2026Release notes
Open source →What's New in Flutter SDK v3.2.4:
-
iOS
ApphudErrorfields fix — Errors returned frompurchase,purchaseProduct,purchasePromo,restorePurchases,loadFallbackPaywalls, andshowPaywallnow exposenetworkIssueanderrorCodeon the Flutter side (not justmessage). Previously these fields were alwaysfalse/nullon iOS, so offline/network failures could not be detected from Dart (e.g. show cached paywalls when purchase fails with no internet). -
iOS
fetchPlacementserror forwarding —fetchPlacementsnow forwards native errors to Flutter viaApphudPlacements.error, matching Android behavior. Errors includenetworkIssueanderrorCodewhen applicable. -
Included Native SDK Versions — [Android] ApphudSDK-Android 3.2.5, [iOS] ApphudSDK 4.2.3.
Release notes
Open source →- [iOS]
ApphudErrorreturned frompurchase,purchaseProduct,purchasePromo,restorePurchases,loadFallbackPaywalls,showPaywallandfetchPlacementsnow exposesnetworkIssueanderrorCodeinstead of onlymessage. Previously these fields always came asfalse/nullon iOS, making it impossible to detect offline/network failures from Flutter. - [iOS]
fetchPlacementsnow forwards native errors to Flutter (matching Android behavior).
-
-
3.2.322 May 2026Release notes
Open source →What's New in Flutter SDK v3.2.3:
-
User-Level Remote Config & Experiment Metadata —
ApphudUser(fromApphud.start()/startManually()andApphudListener.userDidLoad) now includesremoteConfig(),remoteConfigString,experimentName,variationName,targetingName, andtotalDevicesCount, so you can drive UI/logic from Mission control targeting without an app update. -
Deep-Link Attribution — Added
Apphud.attributeFromDeeplink()to attribute users from a recently opened deep link and receive attribution payload data when available. -
Placement-First API (Paywalls API Cleanup) — SDK flow is now centered on placements/targetings. Legacy paywall-centric entry points were removed (including
ApphudUser.rawPaywalls,Apphud.rawPaywalls(),Apphud.paywallsDidLoadCallback(), andApphudListener.paywallsDidFullyLoad()). Migrate to placements APIs likeApphud.placements(),Apphud.placement(),Apphud.rawPlacements(), andApphudListener.placementsDidFullyLoad(). -
Richer Placement & Product Models —
ApphudPlacementaddsvariationName.ApphudProductaddsproperties,variationIdentifier, andexperimentIdfor more accurate experiment/targeting context in purchases and analytics. -
Commitment Plan Helpers (iOS) — Added
Apphud.isCommitmentPlanPreferred()andApphud.isCommitmentPlanSupported()(iOS 26.4+; Android returnsfalse) to check Mission control commitment-plan configuration and device support before purchase. -
Custom API Host — Added
Apphud.setHost().baseUrlonstart/startManuallyis now applied before SDK initialization on iOS and Android. -
Mission control Naming — Public documentation updated from Product Hub to Mission control.
-
Native SDK Updates — [Android] ApphudSDK-Android 3.2.5, [iOS] ApphudSDK 4.2.3.
Release notes
Open source →- Dependencies of Native SDK's were updated to:
- [Android] 3.2.5
- [iOS] 4.2.3
-
-
3.2.221 May 2026Release notes
Open source →- Dependencies of Native SDK's were updated to:
- [Android] 3.2.4
- [iOS] 4.2.3
- Dependencies of Native SDK's were updated to:
-
3.2.020 May 2026Release notes
Open source →- Dependencies of Native SDK's were updated to:
- [Android] 3.2.3
- [iOS] 4.2.2
- [Dart]
ApphudUser: addedtotalDevicesCount,internalId,experimentName,variationName,targetingName,remoteConfigString, andremoteConfig()helper. - [Dart]
ApphudPlacement: addedvariationName. - [Dart]
ApphudProduct: addedproperties,variationIdentifier,experimentId, andisCommitmentPlanPreferred(). - [Dart]
Apphud.attributeFromDeeplink()for deeplink attribution. - [Dart]
Apphud.setHost()to override API host before SDK start. - [Dart]
Apphud.isCommitmentPlanPreferred()andApphud.isCommitmentPlanSupported()(iOS only; Android returnsfalse). - [iOS], [Android] Product Hub renamed to Mission control in public documentation.
- [iOS], [Android] Custom API host (
baseUrl/setHost) is applied beforestart/startManually. - BREAKING [Dart] Removed
ApphudUser.rawPaywalls. - BREAKING [Dart] Removed
Apphud.rawPaywalls()andApphud.paywallsDidLoadCallback(). - BREAKING [Dart] Removed
ApphudListener.paywallsDidFullyLoad. UseplacementsDidFullyLoadand read paywalls fromApphudPlacement.paywall. - [iOS] Product lookup for
purchaseProductand commitment-plan checks usesApphudPaywallsHelper.resolveProduct(ios/Classes/common/ApphudPaywallsHelper.swift, lines 22–35).
- Dependencies of Native SDK's were updated to:
-
3.1.213 May 2026Release notes
Open source →What's new in v3.1.2:
- [iOS] Fixed
SKProductDiscountmapping:identifierandtypeare now forwarded to Flutter, andpriceLocaleis serialized correctly (it was hardcoded as an empty map before, which also affectedintroductoryPrice.priceLocale). - [iOS], [Dart]
SKProductDiscountWrappernow exposesidentifier(String?) andtype(SKProductDiscountTypeenum:introductory/subscription). - [iOS], [Dart]
SKProductWrappernow exposes the fulldiscountslist in addition tointroductoryPrice. This unblocks dynamic resolution ofdiscountIDforApphud.purchasePromowithout hardcoding it on the client side. - [iOS]
checkEligibilityForIntroductoryOffer,checkEligibilityForPromotionalOffer,checkEligibilitiesForIntroductoryOffersandcheckEligibilitiesForPromotionalOffersmethods were implemented (previously stubbed and not wired up).
Release notes
Open source →- [iOS] Fixed
SKProductDiscountmapping:identifierandtypeare now forwarded to Flutter, andpriceLocaleis serialized correctly (it was hardcoded as an empty map before, which also affectedintroductoryPrice.priceLocale). - [iOS], [Dart]
SKProductDiscountWrappernow exposesidentifier(String?) andtype(SKProductDiscountTypeenum:introductory/subscription). - [iOS], [Dart]
SKProductWrappernow exposes the fulldiscountslist in addition tointroductoryPrice. This unblocks dynamic resolution ofdiscountIDforApphud.purchasePromowithout hardcoding it on the client side. - [iOS]
checkEligibilityForIntroductoryOffer,checkEligibilityForPromotionalOffer,checkEligibilitiesForIntroductoryOffersandcheckEligibilitiesForPromotionalOffersmethods were implemented (previously stubbed and not wired up). - Example app: tapping a product on iOS now opens a dialog with available promotional offers (when any), driving the call to
Apphud.purchasePromo(productId:, discountID:). Eligibility flags (introductory/promotional) control the labels and disable offers that are not eligible. - Example app: fixed a crash on the Placements screen for placements that have no paywall attached.
- [iOS] Fixed
-
3.1.013 Mar 2026Release notes
Open source →- [Android] Upgrade to Google Billing 8
- Dependencies of Native SDK's were updated to:
- [Android] 3.1.0
- [iOS] 4.0.4
-
3.0.220 Feb 2026Release notes
Open source →What's new in v3.0.2:
- Fixed a bug with mapping from iOS native module of the "restorePurchases" function.
- Dependencies of Native SDK's were updated to:
- [Android] 3.0.6
- [iOS] 4.0.3
Release notes
Open source →- Fixed a bug with mapping from iOS native module of the "restorePurchases" function.
- Dependencies of Native SDK's were updated to:
- [Android] 3.0.6
- [iOS] 4.0.3
-
3.0.123 Dec 2025Release notes
Open source →What's new in v3.0.1:
- [iOS], [Android]
showPaywallmethod has been introduced. Show Figma paywalls in one line:final result = await Apphud.showPaywall(placement.paywall!, maxTimeout: 10, iOSAnimationStyle: IOSAnimationStyle.bottomToTop); - [iOS]
preloadPaywallmethod has been introduced. - BREAKING [iOS], [Android]
fetchPlacementshas new optional parameter:forceRefresh. Use this when you need to apply updated audience segmentation or A/B test assignments. - [iOS], [Android]
isNonRenewingPurchaseConsumablemethod was introducted. - [iOS]
loadFallbackPaywallsmethod was introduced. - BREAKING [iOS]
collectSearchAdsAttributionmethod updated. Changed the return type from ApphudError? to Map<String, dynamic>?, now it returns attribution data, if any. - BREAKING [iOS], [Android] method
paywallClosedremoved entirely. - BREAKING [Android] method
syncPurchasesInObserverModeremoved entirely as it syncs automatically in Observer mode. - [iOS]
updateUserIDmethod now returnsApphudUsermodel asynchronously. - Dependencies of Native SDK's were updated to:
- [Android] 3.0.4
- [iOS] 4.0.2
- [iOS], [Android]
-
3.0.023 Dec 2025Release notes
Open source →- [iOS], [Android]
showPaywallmethod has been introduced. Show Figma paywalls in one line:final result = await Apphud.showPaywall(placement.paywall!, maxTimeout: 10, iOSAnimationStyle: IOSAnimationStyle.bottomToTop); - [iOS]
preloadPaywallmethod has been introduced. - BREAKING [iOS], [Android]
fetchPlacementshas new optional parameter:forceRefresh. Use this when you need to apply updated audience segmentation or A/B test assignments. - [iOS], [Android]
isNonRenewingPurchaseConsumablemethod was introducted. - [iOS]
loadFallbackPaywallsmethod was introduced. - BREAKING [iOS]
collectSearchAdsAttributionmethod updated. Changed the return type from ApphudError? to Map<String, dynamic>?, now it returns attribution data, if any. - BREAKING [iOS], [Android] method
paywallClosedremoved entirely. - BREAKING [Android] method
syncPurchasesInObserverModeremoved entirely as it syncs automatically in Observer mode. - [iOS]
updateUserIDmethod now returnsApphudUsermodel asynchronously. - Dependencies of Native SDK's were updated to:
- [Android] 3.0.4
- [iOS] 4.0.2
- [iOS], [Android]
-
2.7.401 Oct 2025 -
2.7.325 Sep 2025 -
2.7.223 Sep 2025Release notes
Open source →- [Android]
proguard-rules.prowas improved - Dependencies of Native SDK's were updated to:
- [Android] 2.9.3
- [iOS], [Android] Added platform property to Subscription model
- [Android] Added basePlanId property to Subscription model
- [Android] Added consumableInAppProduct property to purchase consumable product. (Merged https://github.com/apphud/ApphudSDK-Flutter/pull/75)
- [Android]
-
2.7.129 Jul 2025Release notes
Open source →-
[Android]
proguard-rules.prowas added -
Dependencies of Native SDK's were updated to:
- [Android] 2.9.2
-
Google Billing Client updated to 7.1.1
-
-
2.7.008 Apr 2025Release notes
Open source →-
BREAKING [iOS], [Android]
addAttributionmethod was renamed tosetAttribution -
Dependencies of Native SDK's were updated to:
- [Android] 2.9.1
- [iOS] 3.6.2
-
-
2.6.019 Nov 2024Release notes
Open source →-
BREAKING [Android]
ApphudListener.apphudDidReceivePurchasemethod was introduced -
BREAKING [iOS], [Android]
paywallsmethod was removed -
BREAKING [iOS]
rawPaywallsmethod was removed -
[Android]
ApphudNonRenewingPurchase.purchaseTokenproperty was introduced -
[Android]
ApphudSubscription.purchaseTokenproperty was introduced -
[Android], [iOS]
deferPlacementsmethod was introduced -
[Android]
refreshUserDatamethod was introduced -
[Android], [iOS]
forceFlushUserPropertiesmethod was introduced -
[Android]
refreshUserDatanow returnsApphudUser? -
[Android]
updateUserIDnow returnsApphudUser? -
[Android], [iOS]
attributeFromWebmethod was introduced -
Dependencies of Native SDK's were updated to:
- [Android] 2.8.3
- [iOS] 3.5.6
-
-
2.5.415 Aug 2024 -
2.5.307 Aug 2024 -
2.5.231 Jul 2024Release notes
Open source →-
[Android]
trackPurchasemethod was introduced. -
[Android]
syncPurchasesInObserverModemethod was deprecated. All purchases on Android are now automatically intercepted and sent to Apphud. -
Dependencies of Native SDK's were updated to:
- [Android] 2.7.0
- [iOS] 3.4.0
-
-
2.5.107 May 2024Release notes
Open source →-
[iOS], [Android] Example App was refactored
-
[Android]
loadFallbackPaywallsmethod was introduced -
Dependencies of Native SDK's were updated to:
- [Android] 2.6.5
-
-
2.5.026 Apr 2024Release notes
Open source →- Dependencies of Native SDK's were updated to:
- [Android] 2.6.0
- [iOS] 3.3.6
- BREAKING
ApphudGroup'sproductsvariable was changed toList<String> productIds.
- Dependencies of Native SDK's were updated to:
-
2.4.518 Apr 2024 -
2.4.419 Mar 2024Release notes
Open source →-
[Android] BREAKING
Future<List<ApphudPlacement>> placementsDidLoadCallback()renamed toFuture<ApphudPlacements> fetchPlacements() -
[Android]
paywallsDidLoadCallbackcall result contains optionalApphudError -
[Android]
refreshUserDatamethod was introduced -
[Android]
ApphudErrornow containsnetworkIssue,billingResponseCodeandbillingErrorTitleattributes -
[iOS], [Android]
ApphudPaywallnow containsvariationNameandparentPaywallIdentifierattributes -
Dependencies of Native SDK's were updated to:
- [Android] 2.4.2
-
-
2.4.328 Feb 2024Release notes
Open source →-
[Android] fixed some build issues
-
Dependencies of Native SDK's were updated to:
- [Android] 2.3.9
-
-
2.4.219 Feb 2024 -
2.4.114 Feb 2024 -
2.4.009 Feb 2024Release notes
Open source →-
Placements: Offers a strategic method to integrate paywalls throughout your app. This feature allows developers to position paywalls effectively in different app sections, such as onboarding or settings, targeting distinct user audiences. For more comprehensive information, please refer to our Placements guide.
-
[iOS], [Android] BREAKING Property 'variationName' were removed from ApphudPaywall, which was confusing developers and lead to incorrect implementations.
-
[iOS] BREAKING Method 'didFetchProductsNotification' was removed.
-
[iOS], [Android] BREAKING Method 'productsDidFetchCallback' was removed.
-
[iOS] BREAKING Method 'refreshStoreKitProducts' was removed.
-
[iOS], [Android] BREAKING Method 'purchaseWithoutValidation' was removed.
-
[iOS] BREAKING Method 'didPurchaseFromPaywall' was removed.
-
[Android] BREAKING Method 'refreshEntitlements' was removed.
-
[iOS] BREAKING Method 'validateReceipt' was removed.
-
[iOS] BREAKING Method 'migratePurchasesIfNeeded' was removed.
-
[iOS] BREAKING Method 'appStoreReceipt' was removed.
-
[iOS] BREAKING Method 'fetchRawReceiptInfo' was removed.
-
[iOS] BREAKING Method 'isSandbox' was removed.
-
[Android] BREAKING Class 'AndroidAccountIdentifiersWrapper' was removed.
-
[Android] BREAKING Method 'syncPurchases' was renamed to 'syncPurchasesInObserverMode'. The ' paywallIdentifier' parameter was removed.
-
[Android] BREAKING Class 'AndroidPurchaseWrapper' was modified.
-
[Android], [iOS] BREAKING Class 'ApphudNonRenewingPurchase' was modified.
-
[Android], [iOS] BREAKING Class 'ApphudPaywall' was modified.
-
[Android], [iOS] BREAKING Class 'ApphudProduct' was modified.
-
[Android], [iOS] BREAKING Class 'ApphudSubscriptionWrapper' was modified.
-
[Android], [iOS] Method 'products' always returns 'ApphudProductComposite' list.
-
[Android], [iOS] BREAKING 'ApphudAttributionProvider.appleSearchAds', ' ApphudAttributionProvider.facebook' were modified.
-
[Android], [iOS] some fixes of the example app
-
[iOS], [Android] 'paywallsDidLoadCallback' method was introduced.
-
[iOS], [Android] 'placements' method was introduced.
-
[iOS], [Android] 'placement' method was introduced.
-
[iOS], [Android] 'placementsDidLoadCallback' method was introduced.
-
[iOS], [Android] 'rawPlacements' method was introduced.
-
[iOS], [Android] 'rawPaywalls' method was introduced.
-
[iOS], [Android] The 'start' and 'startManually' methods now return an ApphudUser object.
-
[iOS], [Android] The 'ApphudListener' 'placementsDidFullyLoad' method was introduced.
-
[iOS], [Android] BREAKING The 'ApphudListener' 'userDidLoad' method now returns an ApphudUser object.
-
Dependencies of Native SDK's were updated to:
- [Android] 2.3.7
- [iOS] 3.2.8
-
-
2.3.212 Oct 2023 -
2.3.102 Aug 2023 -
2.3.003 Jul 2023Release notes
Open source →-
[Android] BREAKING SkuDetailsWrapper was replaced by ProductDetailsWrapper because of the migration to Billing v5.
-
Dependencies of Native SDK's were updated to:
- [Android] 2.0.0
-
-
2.2.1511 May 2023Release notes
Open source →-
[iOS] PUSH notifications handling was added to the example app.
-
[Android] 'optOutOfTracking' and 'collectDeviceIdentifiers' are introduced
-
[Android] BREAKING Method
disableAdTrackingis removed. -
Dependencies of Native SDK's were updated to:
- [Android] 1.8.0
-
-
2.2.1429 Mar 2023 -
2.2.1317 Feb 2023Release notes
Open source →-
[Android] Bug fixes
-
Dependencies of Native SDK's were updated to:
- [Android] 1.7.7
-
-
2.2.1216 Feb 2023Release notes
Open source →-
[Android] Bug fixes
-
Dependencies of Native SDK's were updated to:
- [Android] 1.7.6
-
-
2.2.1114 Feb 2023Release notes
Open source →-
[Android] Bug fixes
-
Dependencies of Native SDK's were updated to:
- [Android] 1.7.5
-
-
2.2.1008 Feb 2023Release notes
Open source →-
[Android] Bug fixes
-
Dependencies of Native SDK's were updated to:
- [Android] 1.7.3
-
-
2.2.902 Feb 2023Release notes
Open source →-
[Android] Bug fixes
-
Dependencies of Native SDK's were updated to:
- [Android] 1.7.2
-
-
2.2.810 Jan 2023Release notes
Open source →-
[Android] Internal improvements and bug fixes with syncing purchases
-
Dependencies of Native SDK's were updated to:
- [Android] 1.7.0
-
-
2.2.718 Nov 2022Release notes
Open source →-
[Android] fixed incorrect ApphudListener behaviour when the ApphudPlugin instance is created twice because of Firebase.
-
[Android] Internal improvements.
-
Dependencies of Native SDK's were updated to:
- [Android] 1.6.5
-
-
2.2.625 Aug 2022Release notes
Open source →- [iOS] Bug fix for Flutter SDK
- Dependencies of Native SDK's were updated to:
- [iOS] 2.8.8
-
2.2.409 Aug 2022Release notes
Open source →-
[Android] Fixed a bug when ApphudListener’s paywallsDidFullyLoad method wasn’t called in some cases.
-
[Android] Added new method refreshEntitlements().
-
[iOS] hasActiveSubscription(), hasPremiumAccess() improvements and bug fixes
-
[iOS] Added purchasePromo() logging
-
[iOS] Added checkTransactions logic for force receipt sending if a new transaction was found.
-
Dependencies of Native SDK's were updated to:
- [Android] 1.6.2
- [iOS] 2.8.6
-
-
2.2.324 Jun 2022Release notes
Open source →-
[iOS] Payment swizzle was disabled for observer mode.
-
[iOS] Improved interaction with Apple Search Ads attribution.
-
[iOS] Updated methods description and improve documentation.
-
Dependencies of Native SDK's were updated to:
- [iOS] 2.8.3
-
-
2.2.205 May 2022Release notes
Open source →-
[iOS], [Android] Method
hasPremiumAccess()was implemented. -
[Android] The parameter
paywallIdentifierwas introduced for the methodsyncPurchases(). -
[iOS] The method
didPurchaseFromPaywallwas implemented. -
Dependencies of Native SDK's were updated to:
- [Android] 1.6.0
- [iOS] 2.8.1
-
-
2.2.123 Feb 2022Release notes
Open source →-
[Android] Fixed bug that method hasActiveSubscription was false for paying users at launch before data refreshes. Now value is cached.
-
[Android] Fixed internal potential crash
-
[iOS] Fixed 403 server error bug, when user could be blocked from sever 403 error code
-
[iOS] Add push token cache
-
[iOS] Update general cache time
-
[iOS] Update some Logs
-
Dependencies of Native SDK's were updated to:
- [Android] 1.5.5
- [iOS] 2.5.7
-
-
2.2.011 Feb 2022Release notes
Open source →-
[iOS] The optional parameter 'level' was added to the method enableDebugLogs(). Possible values are:
- 'ApphudDebugLevel.low' - the same as previous amount of debug information.
- 'ApphudDebugLevel.high' - enables printing of additional debug messages, for example HTTP requests and responses.
-
[iOS], [Android] Automatic fetching of Apphud Flutter SDK version was implemented
-
[iOS] BREAKING Method 'disableIDFACollection()' was removed
-
[Android] Method 'grantPromotional()' was implemented
-
[Android], [iOS] Class 'ApphudListener' and method 'setListener({ApphudListener? listener})' were implemented
-
[Android], [iOS] BREAKING Method 'getPaywalls()' was removed. Please use ApphudListener instead.
-
[iOS] BREAKING Method 'paywallsDidLoadCallback()' was removed. Please use ApphudListener instead.
-
[Android] Method 'deviceId()' was implemented
-
[Andoid], [iOS] Significantly improved SDK performance and caching. Now SDK will send much less requests to Apphud server.
-
Dependencies of Native SDK's were updated to:
- [Android] 1.5.3
- [iOS] 2.5.6
-
-
2.1.003 Nov 2021Release notes
Open source →-
[iOS], [Android] Experiments were added. Run Experiments(A/B tests) to test different in-app purchases prices in order to find the best.
-
[iOS] Apple search Ads logic was improved. Submit Apple Attribution Token to Apphud with Apphud.addAttribution().
-
[iOS] Paywalls methods was improved. Paywalls are already exist after SDK initialization. Use paywalls() method.
-
[iOS] paywallsDidLoadCallback() method was added. This callback is called when paywalls are fully loaded with their StoreKit products.
-
[iOS] Promotionals were added. You can grant free promotional subscription to user with new method grantPromotional()
-
[iOS] Fixed important bug when User Properties sometimes may not be saved when submitted simultaneously with initialisation.
-
[iOS] Fixed a bug when incoming rules did not automatically mark as read.
-
[Android] Paywalls events methods were implemented: paywallShown(), paywallClosed()
-
[Android] Supporting of Google Billing library 4.0 was implemented
-
[iOS], [Android] Properties 'experimentName' and 'variationName' were added to ApphudPaywall.
-
[iOS], [Android] Bug fixing and some internal improvements.
-
[iOS], [Android] Products list was removed from Example app because of deprecation due to Paywalls.
-
BREAKING refactor [iOS], [Android]:
- 'name' property was removed from ApphudPaywall
-
Dependencies of Native SDK's were updated to:
- [Android] 1.3.3
- [iOS] 2.4.4
-
-
2.0.622 Jun 2021Release notes
Open source →-
Paywalls features were implemented:
- method getPaywalls() [iOS], [Android]
- method permissionGroups() [iOS], [Android]
- method purchase({ ApphudProduct? product }) [iOS], [Android]
- method paywallShown(ApphudPaywall paywall) [iOS]
- method paywallClosed(ApphudPaywall paywall) [iOS]
-
Bugs were fixed:
- Method restorePurchases() always returns result with error [Android]
-
Dependencies of Native SDK's were updated to:
- [Android] 1.1.3
- [iOS] 2.1.1
-
BREAKING refactor [iOS], [Android]:
- AppHud class was renamed to Apphud
- ApphudProduct was renamed to ApphudProductComposite and was marked as deprecated
- Method purchase(String productId) -> purchase({String? productId}). Parameter productId was marked as deprecated
-
Methods are deprecated:
- didFetchProductsNotification()
- refreshStoreKitProducts()
- product()
- products()
-
-
2.0.508 Jun 2021Release notes
Open source →- [iOS] Add method collectSearchAdsAttribution() to send search ads attribution data to Apphud.
-
2.0.420 May 2021 -
2.0.320 May 2021 -
1.0.113 Apr 2021Release notes
Open source →- [Android] Upgrade to use ApphudSDK-Android:0.8.5
- [Fixed] [Android] bugs with wrong parameters' names according to Flutter
- [iOS] Upgrade to use ApphudSDK 1.2
-
1.0.016 Mar 2021