Releases: adaptyteam/AdaptySDK-iOS
Release list
4.0.1
🐛 Fixed
- Fixed a crash (
freed pointer was not the last allocation) when a placement was served from cache, on Xcode 26.3 / Swift 6.2.4 Release builds. #166 - Kids Mode:
AppTrackingTransparencyis no longer imported —AdaptyProfileParameters.Builder.with(appTrackingTransparencyStatus:)is now compiled out under theKidsModetrait (remove the call if you use it).
Full Changelog: 4.0.0...4.0.1
3.17.3
🐛 Fixed
- Fixed a crash (
freed pointer was not the last allocation) when a placement was served from cache, on Xcode 26.3 / Swift 6.2.4 Release builds. - Kids Mode:
AppTrackingTransparencyis no longer imported —AdaptyProfileParameters.Builder.with(appTrackingTransparencyStatus:)is now compiled out inAdapty_KidsModebuilds (remove the call if you use it).
Full Changelog: 3.17.2...3.17.3
4.0.0
🚀 Flow — the successor to Paywalls
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. Paywall-centric APIs are renamed to flow-based equivalents (e.g. logShowPaywall → logShowFlow).
👉 Read more about Adapty Flow Builder.
👉 See the migration guide for the full details.
📦 Installation
- Swift Package Manager only. CocoaPods support has been removed in 4.0.0 (podspecs are no longer published).
- Add via
from: "4.0.0"(up-to-next-major) — stable versions resolve normally, no exact pin needed.
💥 Breaking changes
- Flow replaces Paywall:
Adapty.logShowPaywall(_:)→Adapty.logShowFlow(_:); eventpaywall_showed→flow_showed(paywall_builder_idremoved). didFinishPurchaseis now required. Default auto-dismiss removed so a flow can continue after purchase.AdaptyFlowControllerDelegateconformers must implement it; the SwiftUI.flow(...)/AdaptyFlowView(...)closure is now non-optional.- Kids Mode is now a SwiftPM trait. The parallel
*_KidsModeproducts are removed — enable theKidsModetrait on the dependency instead (compiles out IDFA / AdSupport package-wide). - Attribution & integrations:
AdaptyProfile.AttributionSource→AdaptyAttributionSource;updateAttribution(_:source:)takes a typedAdaptyAttributionSource;setIntegrationIdentifier→ variadic typed form. - Custom assets: video cases gained trailing
resolution: CGSize?;.playernow takesAVPlayer(wasAVQueuePlayer);.fontcarriesAdaptyUICustomFontAssetinstead of a bareUIFont. - AdaptyUI error handling:
didFailRendering→didReceiveError(surfaces JS runtime errors via new.jsException); wire eventflow_view_did_fail_rendering→flow_view_did_receive_error. - Temporarily removed App Store promoted in-app purchases during the StoreKit 2 migration — returns in a later 4.x.
- Minimum iOS version is now 15.
- CocoaPods support dropped — SPM only.
❗️ Don't forget to update your local fallback file if needed.
Full Changelog: 3.17.2...4.0.0
3.17.2
- Kids Mode: the SDK now sends the Apple Search Ads (AdServices) attribution token in Kids Category builds. The ASA token from
AAAttributionis anonymized and first-party (not IDFA /AdSupport), so it is permitted under COPPA. - Fixed an off-by-one in placement variation weight distribution that could slightly skew A/B traffic allocation at exact weight boundaries.
Full Changelog: 3.17.1...3.17.2
4.0.0-beta.1
⚠️ This is a beta pre-release of Adapty iOS SDK 4.0.0. APIs may still change before the stable 4.0.0.
🚀 Flow — the successor to Paywalls
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. Paywall-centric APIs are renamed to flow-based equivalents (e.g. logShowPaywall → logShowFlow, paywall_showed → flow_showed).
👉 Read more about Adapty Flow Builder.
👉 See the Adapty docs for details and the migration guide.
📦 Installation
- Swift Package Manager only. CocoaPods support has been removed in 4.0.0 (podspecs are no longer published).
- This is a pre-release: pin the exact version, e.g.
.exact("4.0.0-beta.1"). SPM does not resolve beta versions throughfrom:/ up-to-next-major rules.
💥 Breaking changes
Major release with public API changes across the core SDK and AdaptyUI. Highlights:
- Flow replaces Paywall:
Adapty.logShowPaywall(_:)→Adapty.logShowFlow(_:); eventpaywall_showed→flow_showed(paywall_builder_idremoved). - Attribution & integrations:
AdaptyProfile.AttributionSource→AdaptyAttributionSource;updateAttribution(_:source:)now takes a typedAdaptyAttributionSource;setIntegrationIdentifier(key:value:)→ variadic, typedsetIntegrationIdentifier(_:). - Custom assets (
AdaptyUICustomVideoAsset/ fonts): video cases gained a trailingresolution: CGSize?parameter; the.playercase now takesAVPlayer(wasAVQueuePlayer); the.fontcase now carries anAdaptyUICustomFontAsset(default color / letter spacing / line height) instead of a bareUIFont. - AdaptyUI error handling: callback
didFailRendering→didReceiveError(now also surfaces JS runtime errors via the newAdaptyUIError.jsException/AdaptyUIBuilderError.jsExceptioncase); the plugin wire eventflow_view_did_fail_rendering→flow_view_did_receive_error. - Temporarily removed support for App Store promoted in-app purchases (
shouldAddStorePayment(for:)delegate +AdaptyDeferredProduct) during the StoreKit 2 migration — it will return in a later 4.x release. - Minimal iOS Version is now 15.
- CocoaPods support dropped — SPM only.
❗️ Don't forget to update your local fallback file if needed.
Full Changelog: 3.17.1...4.0.0-beta.1
3.17.1
- Added
AdaptyProfile.appliedAttributionSources: [AttributionSource]— identifiers of attribution sources applied to the profile and available for segmentation. UseAttributionSource.appleAdsfor comparison against the known Apple Search Ads identifier.
Full Changelog: 3.17.0...3.17.1
3.17.0
- AdaptyUI: the
Action.openURLcase now carries anin: AdaptyWebPresentationparameter (externalBrowser/inAppBrowser). Default handlers honor it viaSFSafariViewControllerforinAppBrowserandUIApplication.openforexternalBrowser. - Various bugfixes and stability improvements.
⚠️ Breaking Changes
AdaptyUI.Action.openURLsignature changed fromopenURL(url: URL)toopenURL(url: URL, in: AdaptyWebPresentation). Update yourAdaptyPaywallControllerDelegate/AdaptyPaywallViewaction handlers to accept the new parameter.
Full Changelog: 3.15.7...3.17.0