# Changelog

Release notes for the Superwall Flutter SDK

CHANGELOG [#changelog]

The changelog for `Superwall`. Also see the [releases](https://github.com/superwall/Superwall-Flutter/releases) on GitHub.

2.4.12 [#2412]

Enhancements [#enhancements]

* Updates Android SDK to 2.7.11 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.7.11).
* Updates iOS SDK to 4.14.2 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.14.2).
* Adds `preloadDeviceOverrides` option to `PaywallOptions` to override `shouldPreload` per device tier (Android only)
* Exports `PresentationResult`, `StoreTransaction`, `TransactionProduct` from the public package
* Fixes `PurchaserInfo.storeIdentifiers` leaking the internal Pigeon type instead of the public `StoreIdentifiers` sealed class

2.4.11 [#2411]

Enhancements [#enhancements-1]

* Updates iOS SDK to 4.14.1 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.14.1).
* Updates Android SDK to 2.7.8 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.7.8).
* Adds `appstackId` integration attribute for Appstack integration support
* Adds `testModeBehavior` option to `SuperwallOptions` to control when the SDK enters test mode (automatic, whenEnabledForUser, never, always)
* Adds `shouldObservePurchases` option to `SuperwallOptions` to observe purchases made outside of Superwall
* Adds `shouldBypassAppTransactionCheck` option to `SuperwallOptions` (iOS only)
* Adds `maxConfigRetryCount` option to `SuperwallOptions` (iOS only)
* Adds `useMockReviews` option to `SuperwallOptions` (Android only)

2.4.10 [#2410]

Updates [#updates]

* Updates pigeon to 26.1.5 to support analyzer 9.+.+ versions

2.4.9 [#249]

Enhancements [#enhancements-2]

* Updates iOS SDK to 4.13.0 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.13.0).
* Updates Android SDK to 2.7.1 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.7.1).

2.4.8 [#248]

Enhancements [#enhancements-3]

* Adds `onCustomCallback` method to `PaywallPresentationHandler` that allows invoking custom callbacks and passing data from and to the paywall
* Updates iOS SDK to 4.12.10 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.12.10).
* Updates Android SDK to 2.7.0 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.7.0).

Fixes [#fixes]

* Fixes an issue where `IdentityOptions` passed to `identify()` were not being sent to the native SDK due to a variable shadowing bug.

2.4.7 [#247]

Enhancements [#enhancements-4]

* Updates iOS SDK to 4.12.7 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.12.7).
* Updates Android SDK to 2.6.8 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.6.8).

2.4.6 [#246]

Enhancements [#enhancements-5]

* Adds `isActive` convenience property on the `SubscriptionStatus` class
* Adds support for `SuperwallOptions.paywalls.onBackPressed` callback to react to back button presses on Android

2.4.5 [#245]

Enhancements [#enhancements-6]

* Updates iOS SDK to 4.10.6 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.10.6).
* Updates Android SDK to 2.6.5 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.6.5).

2.4.4 [#244]

Enhancements [#enhancements-7]

* Adds `Superwall.shared.consume(purchaseToken)` method to allow consuming inapp purchases
* Updates Android SDK to 2.6.2 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.6.2).

2.4.3 [#243]

Enhancements [#enhancements-8]

* Updates Android SDK to 2.6.1 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.6.1).

2.4.2 [#242]

Enhancements [#enhancements-9]

* Exposes `Superwall.shared.overrideProductsByName` variable.

2.4.1 [#241]

Enhancements [#enhancements-10]

* Updates iOS SDK to 4.7.0 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.7.0).
* Updates Android SDK to 2.5.1 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.5.1). Note: This contains an update to Play Billing 8.
* Adds `overrideProductsByName` to `PaywallOptions` - allows globally overriding products on any paywall by product name.
* Adds `shouldShowWebPurchaseConfirmationAlert` to `PaywallOptions` - shows localized alert confirming successful web checkout purchases (iOS only).

Fixes [#fixes-1]

* Fixes missing paywall info

2.4.0 [#240]

Enhancements [#enhancements-11]

* Updates Android SDK to 2.3.1 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.3.1).

2.3.5 [#235]

Fixes [#fixes-2]

* Adds `params` mapping back to `EventInfo` for easier forwarding to analytics

2.3.4 [#234]

Enhancements [#enhancements-12]

* Updates iOS SDK to 4.5.2 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.5.2).
* Updates Android SDK to 2.2.3 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.2.3).

Fixes [#fixes-3]

* Fixes issue where `shouldShowWebRestorationAlert` wasn't getting through to the iOS `PaywallOptions`.

2.3.3 [#233]

Enhancements [#enhancements-13]

* Exposes `shouldShowWebRestorationAlert` in `PaywallOptions`.

2.3.2 [#232]

Enhancements [#enhancements-14]

* Expose `getPresentationResult` method
* Updates Android SDK to 2.2.2 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.2.2).

2.3.1 [#231]

Enhancements [#enhancements-15]

* Updates Android SDK to 2.1.2 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.1.2).

Fixes [#fixes-4]

* Fixes issue with `registerPlacement` blocking

2.3.0 [#230]

Enhancements [#enhancements-16]

* Exposes `ConfirmedAssignments` and `StoreProduct` to `superwallkit_flutter`.
* Adds `Superwall.shared.getDeviceAttributes()`, which returns the device attributes that are used when evaluating audience filters.
* Updates iOS SDK to 4.4.1 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.4.1).
* Updates Android SDK to 2.1.1 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.1.1).

Fixes [#fixes-5]

* Fixes issue where `SuperwallEventInfo` didn't contain all expected variables.
* Fixes issue when building for app that deploys with a minimum version of iOS 13.

2.2.2 [#222]

Fixes [#fixes-6]

* Fixes issue with paywall presentation handlers not working.

2.2.1 [#221]

Fixes [#fixes-7]

* Fixes issue with iOS side of project not building.

2.2.0 [#220]

Fixes [#fixes-8]

* Fixes missing Event info

Enhancements [#enhancements-17]

* Updates iOS SDK to 4.3.11 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.3.11)
* Updates Android SDK to 2.1.0 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.1.0)

2.2.0-beta.2 [#220-beta2]

Enhancements [#enhancements-18]

* Updates iOS SDK to 4.3.8 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.3.8)

2.2.0-beta.1 [#220-beta1]

Enhancements [#enhancements-19]

* Adds support for web checkout.

* Updates kotlin version of the underlying Android SDK to 2.0.21

* Updates iOS SDK to 4.3.5 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.3.5)

* Updates iOS SDK to 2.1.0-beta.2 [View iOS SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.1.0-beta.2)

2.1.0 [#210]

Enhancements [#enhancements-20]

* Updates Android SDK to 2.0.8 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.0.8)
* Updates iOS SDK to 4.3.0 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.3.0)

2.1.0-beta.2 [#210-beta2]

Enhancements [#enhancements-21]

* Adds `restorePurchases` function
* Updates Android SDK to 2.0.6 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.0.6)
* Updates iOS SDK to 4.2.0 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.2.0)

2.1.0-beta.1 [#210-beta1]

Enhancements [#enhancements-22]

* Reworks the SDK's beneath the surface to rely on Pigeon codegen
* Improves stability
* Improved correctness of the SDK

Note: [#note]

* This could include some potentially breaking changes. If you find some, please open an issue or reach out to the team.

2.0.8 [#208]

Enhancements [#enhancements-23]

* Updates iOS SDK to 4.0.6 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.0.6)
* Updates Android SDK to 2.0.5 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.0.5)

2.0.7 [#207]

Fixes [#fixes-9]

* Fixes issue when accessing `presentedByPlacement*` properties from a custom placement

2.0.6 [#206]

Enhancements [#enhancements-24]

* Adds a subscription stream example in the example app

Fixes [#fixes-10]

* Fixes issue with second subscriber not receiving the `SubscriptionStatus` broadcast stream
* Fixes issue with `PurchasedPaywallResult` not properly deserialising in `onDismiss`

2.0.5 [#205]

Enhancements [#enhancements-25]

* Update `SuperwallPlacement` to `SuperwallEvent`
* Update `PlacementType` to `EventType`
* Updates Android SDK to 2.0.3 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.0.3)
* Updates iOS SDK to 4.0.3 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.0.3)

2.0.4 [#204]

Enhancements [#enhancements-26]

* Updates onDismissHandler to now receive a PaywallResult also
* Updates Android SDK to 2.0.2 [View Android SDK release notes](https://github.com/superwall/Superwall-Android/releases/tag/2.0.2)
* `handleSuperwallPlacement(SuperwallPlacementInfo eventInfo)` has been replaced with `handleSuperwallEvent(SuperwallEventtInfo eventInfo)`

2.0.3 [#203]

Fixes [#fixes-11]

* Fixes BridgeInstance crashes
* Adds awaiting on shared instance of BridgeCreator to avoid crashes when plugin is yet to attach

2.0.2 [#202]

* Updates iOS SDK to 1.5.4 [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/4.0.1)
* Updates Android SDK to 2.0.1 [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/2.0.1)

2.0.1 [#201]

* Upgrades iOS SDK to 4.0.0 [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/4.0.0)

2.0.0 [#200]



* Adds entitlements to subscriptions, allowing you to set them using:
  * `await Superwall.shared.setSubscriptionStatus(status)` by passing in one of:
    * `SubscriptionStatusActive(entitlements: entitlements))`
      * Note: Passing in empty entitlements will set the subscription status to inactive
    * `SubscriptionStatusInactive`
    * `SubscriptionStatusUnknown`
* Subscribing to subscription status updates via stream `Superwall.shared.subscriptionStatus`
* `SuperwallBuilder` which will automatically update the state whenever subscription status changes
* `Superwall.shared.registerEvent` has now been replaced with `Superwall.shared.registerPlacement`
* `handleSuperwallEvent(SuperwallEventInfo eventInfo)` has been replaced with `handleSuperwallPlacement(SuperwallPlacementInfo placementInfo)`
* `PaywallPresentationHandler.onDismiss` now has 2 arguments, `PaywallInfo` and `PaywallResult`

2.0.0-alpha.1 [#200-alpha1]

* Adds entitlements to subscriptions, allowing you to set them using:
* `await Superwall.shared.setSubscriptionStatus(status)` by passing in one of:
  * `SubscriptionStatusActive(entitlements: entitlements))`
    * Note: Passing in empty entitlements will set the subscription status to inactive
  * `SubscriptionStatusInactive`
  * `SubscriptionStatusUnknown`
* Subscribing to subscription status updates via stream `Superwall.shared.subscriptionStatus`
* `SuperwallBuilder` which will automatically update the state whenever subscription status changes
* `Superwall.shared.registerEvent` has now been replaced with `Superwall.shared.registerPlacement`
* `handleSuperwallEvent(SuperwallEventInfo eventInfo)` has been replaced with `handleSuperwallPlacement(SuperwallPlacementInfo placementInfo)`

1.3.11 [#1311]

Fixes [#fixes-12]

* Fixes BridgeInstance crashes
* Adds awaiting on shared instance of BridgeCreator to avoid crashes when plugin is yet to attach

1.3.10 [#1310]

Fixes [#fixes-13]

* Fixes an issue on iOS where the plugin could get registered multiple times resulting in a `MissingPluginException`.

1.3.9 [#139]

Fixes [#fixes-14]

* Fixes a compatibility issue with `WorkManager` and other isolate-running libraries where the plugin would detach and cause a `Missing Activity` or `BridgeCreator` exception

Enhancements [#enhancements-27]

* Updates Android SDK to 1.5.4 [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.5.4)

1.3.8 [#138]

Fixes [#fixes-15]

* Removes unnecessary date comparison from PurchaseController example code.

1.3.7 [#137]

Enhancements [#enhancements-28]

* Upgrades iOS SDK to 3.12.1 [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/3.12.1)

1.3.6 [#136]

Enhancements [#enhancements-29]

* Updates Android SDK to 1.5.1 [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.5.1)

1.3.5 [#135]

Enhancements [#enhancements-30]

* Upgrades iOS SDK to 3.12.0 [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/3.12.0)
* Updates Android SDK to 1.5.0 [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.5.0)

Fixes [#fixes-16]

* Fixes issue with `PaywallInfoBridge` and other bridges throwing NPE when reattaching to activities from deep sleep.

1.3.4 [#134]

Enhancements [#enhancements-31]

* Adds `setLocaleIdentifier(_:)` and `getLocaleIdentifier()`.

1.3.3 [#133]

* Upgrades Android SDK to 1.3.1 [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.3.1)
* This fixes the issue when using Superwall with some SDK's would cause a crash (i.e. Smartlook SDK)

1.3.2 [#132]

* Updates project linting and formatting to be consistent with the Flutter style
* Removes rogue logging statements by matching them with the provided Log level
* Adds `passIdentifiersToPlayStore` to `SuperwallOptions` which allows you to pass user identifiers to the Play Store purchases as account identifiers. This is useful for tracking user purchases in the Play Store console.

1.3.1 [#131]

Enhancements [#enhancements-32]

* Upgrades Android SDK to 1.3.0 [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.3.0)
* Upgrades iOS SDK to 3.10.1 [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/3.10.1)
* Adds `confirmAllAssignments` method to `Superwall` which confirms assignments for all placements and returns an array of all confirmed experiment assignments. Note that the assignments may be different when a placement is registered due to changes in user, placement, or device parameters used in audience filters.

1.3.0 [#130]

Enhancements [#enhancements-33]

* Upgrades iOS SDK to 3.9.1. [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/3.9.1)
* Upgrades Android SDK to 1.2.7 [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.2.7)
* Exposes the `SuperwallOption` `collectAdServicesAttribution` for iOS. When `true`, this collects the AdServices attribute token, which will be process by our backend. Adds `adServicesTokenRequest_start`, `adServicesTokenRequest_complete`, and `adServicesTokenRequest_fail`.
* Exposes `getConfigurationStatus()`, which replaces `getIsConfigured()`. This returns either `ConfigurationStatusPending`, `ConfigurationStatusConfigured`, or `ConfigurationStatusFailed`.

1.2.2 [#122]

Enhancements [#enhancements-34]

* Upgrades Android SDK to 1.2.4 [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.2.4)

Fixes [#fixes-17]

* Reapply the single bridge instance limit to fix issues with `setDelegate` where plugins with multiple isolates are used
* Fixes stateful bridges by applying new state when invoking create, resolving issues seen in #23

1.2.1 [#121]

Enhancements [#enhancements-35]

* Upgrades Android SDK to 1.2.3 [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.2.3)
* Upgrades iOS SDK to 3.7.2. [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/3.7.2)

1.2.0 [#120]

Enhancements [#enhancements-36]

* Upgrades Android SDK to 1.2.0 [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.2.0)

Fixes [#fixes-18]

* Updates `compileSDKVersion` to 34 fixing build issues on Android.

1.1.9 [#119]

Enhancements [#enhancements-37]

* Upgrades Android SDK to 1.1.8. [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.1.8)

Fixes [#fixes-19]

* Bumps minimum Kotlin version to 1.8.0 and Android Gradle Plugin to 8.1.0 to be able to be
  compatible with the latest Android SDK. This was necessary for important bug fixes.
* SW-2868: Fixes transaction issues caused by hot restart.

1.1.8 [#118]

Enhancements [#enhancements-38]

* Upgrades iOS SDK to 3.6.6. [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/3.6.6)
* Upgrades Android SDK to 1.1.7. [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.1.7)

1.1.7 [#117]

Enhancements [#enhancements-39]

* Upgrades iOS SDK to 3.6.5. [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/3.6.5)

1.1.6 [#116]

Enhancements [#enhancements-40]

* Upgrades Android SDK to 1.1.6. [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.1.6)

1.1.5 [#115]

Enhancements [#enhancements-41]

* Upgrades Android SDK to 1.1.5. [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.1.5)

1.1.4 [#114]

Enhancements [#enhancements-42]

* Upgrades Android SDK to 1.1.4. [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.1.4)
* Upgrades iOS SDK to 3.6.2. [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/3.6.2)
* Adds `identityAlias` `SuperwallEvent`.

Fixes [#fixes-20]

* Updates the UUID framework dependency to the latest version to prevent conflicts.

1.1.3 [#113]

Fixes [#fixes-21]

* Fixes crash that occurred if an Android foreground service was started and the app was relaunched from a cold start.

1.1.2 [#112]

Enhancements [#enhancements-43]

* Upgrades Android SDK to 1.1.2. [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.1.2)
* Upgrades iOS SDK to 3.6.1. [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/3.6.1)

1.1.1 [#111]

Fixes [#fixes-22]

* Fixes `LocalNotification` issue that was trying to initialise an `int` with a `double`.

1.1.0 [#110]

Enhancements [#enhancements-44]

* Upgrades Android SDK to 1.1.1. [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.1.1)
* Upgrades iOS SDK to 3.6.0. [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/3.6.0)

1.0.1 [#101]

Fixes [#fixes-23]

* Fixes issue with invalid imports due to a breaking change on Android.

1.0.0 [#100]

Enhancements [#enhancements-45]

* Upgrades Android SDK to 1.0.0. [View Android SDK release notes](https://github.com/superwall-me/Superwall-Android/releases/tag/1.0.0)
* Upgrades iOS SDK to 3.5.0. [View iOS SDK release notes](https://github.com/superwall-me/Superwall-iOS/releases/tag/3.5.0)