Enhancements
- Raises the minimum iOS deployment target from iOS 13 to iOS 15, and the Swift Package Manager minimums for macOS and watchOS to macOS 12 and watchOS 8. Requires Xcode 26 (Swift 6.2) or later to build the SDK.
- Adds the Customer Center, a self-service screen where users can view, restore, manage, cancel, refund and change their purchases, and contact support. Present it with
Superwall.shared.presentCustomerCenter(),CustomerCenterVieworCustomerCenterViewController, and configure it withSuperwallOptions.customerCenter. - Adds
CustomerCenterDelegateand events for when the Customer Center opens, closes, and when users pick an action, answer a survey or request a refund. - Adds best-effort public IPv4 and IPv6 device attributes for apps using the Superwall MMP, and the IPv4 attribute for apps that set an AppsFlyer ID. Apps that use the MMP or set an AppsFlyer ID should declare IP address collection in their privacy manifest.
- Adds return links,
yourscheme://superwall/returnandhttps://<subdomain>.superwall.link/app-link/superwall/return. To open your app from a teleported web flow without the Open in App alert, addapplinks:<subdomain>.superwall.linkto your app's associated domains. They bring the user back to your app from a Superwall web flow, such as a paywall's checkout page, and leave the paywall open. Unlike other deep links, they don't trackdeepLink_openand don't dismiss the presented paywall. - Adds the
teleportOpenevent (teleport_open), tracked with the paywall's info when a paywall teleports the user to a web flow, such as its checkout page. - Adds the
teleportReturnevent (teleport_return), tracked instead ofdeepLink_openwhen a return link brings the user back to your app, with the presented paywall's info if there is one. - A web purchase from a paywall's checkout page now finishes like an App Store purchase: once the code is redeemed, the paywall runs the purchase button's after-purchase actions, and it's dismissed (as
.purchased) only when those actions close it. Redemption itself is unchanged, includingwillRedeemLink,didRedeemLinkand the redemption events. - Adds
SuperwallOptions.adConsentandSuperwall.shared.adConsentto report a user's ad consent (adUserDataandadPersonalization, each anAdConsentStatusof.grantedor.denied), which Superwall passes on with the conversions it uploads to Google Ads and Meta. IfadConsentis never set, the SDK uses the consent stored by an IAB TCF consent banner when GDPR applies, and otherwise defaults to granted; apps with users in the EEA, UK or Switzerland that don't use a TCF banner should set it from their consent flow. Where the values came from is reported in the newadConsentSourcedevice attribute (developer,tcfordefault). The values are reported as theadUserDataConsentandadPersonalizationConsentdevice attributes, and both as denied whileeventTrackingBehavioris.none. Personalization is also reported as denied when the user has denied App Tracking Transparency or it's restricted, unless you setadConsentyourself.
Fixes
- Fixes a preloaded paywall tracking only its first page view when its variables were refreshed after it opened.
- Fixes the SDK getting stuck in test mode when a sheet such as the Customer Center is already open as it finishes loading.
- Fixes subscribers staying in test mode on every launch after the dashboard setting that caused it had been corrected. The SDK no longer saves a config that turns test mode on, and no longer starts a launch from one saved by an earlier version.
- Stops matching installs for attribution unless the Superwall MMP is turned on for your app.
- Fixes paywalls on first launch missing acquisition attributes in their audience filters: they now wait up to 2 seconds for install attribution to finish.
- Fixes a paywall reporting
.declinedinstead of.purchasedwhen it closed after a purchase through an after-purchase action list, such as one that sets state and then closes. - Fixes the paywall's loading spinner staying up after a web checkout completed while an older pending checkout was still being polled.
- Fixes a web purchase on a paywall whose products carry different entitlements showing the restore failed alert.
- Fixes the test mode sheet not showing in apps with more than one scene or window.
- Fixes a paywall staying blank after iOS terminated its web content process.