Skip to main content
Releases of the ios-appstack-sdk Swift package, newest first. Always integrate against the latest stable release — appstack-cli review will tell you what you are on.

Swift integration guide

Install, configure, and send your first events.
AddedFixed
2026-09-02
Added
  • Custom event parameters are encrypted on the device before being sent, so personal data such as an email or phone number leaves the app already protected. Parameter names that need to stay readable — for example currency, revenue and campaign fields — are excluded, and that list is controlled server-side, so no code change is required in your app. Requires iOS 17 or later; on iOS 15 and 16 the values are encrypted server-side as before. Purchase transaction_details and deeplink user data are unaffected, so revenue reporting is unchanged. A value that cannot be encrypted is omitted from the event, and the rest of the event still sends.
Fixed
  • A null in the attribution match response no longer discards the whole response. Previously one null query parameter could cost an install its attribution data.
  • Event parameters holding null no longer cause the event to be silently dropped. Null values are now omitted from the payload (nulls inside arrays are kept), matching the Android SDK. This covered a nil Swift Optional passed as a parameter, any dictionary decoded from JSON that carries a null field, Dart null from Flutter, and nested nulls from React Native.
  • sendEvent(event:name:parameters:) no longer crashes the app when a parameter holds a value JSON cannot represent — a Date, URL, Data, Set, custom object, or a NaN/infinite number. Such keys are now dropped individually and named in an error log; the event still sends with its remaining parameters. Send strings, finite numbers, booleans, arrays, and nested string-keyed dictionaries.
Release notes on GitHub
Added
2026-09-01
Added
  • Events now carry an internal diagnostic recording whether Apple Ads attribution was enabled and whether the AdServices token fetch is pending, succeeded, or failed. The SDK sends an automatic diagnostic event when the token resolution completes, so no later app event is required.
Release notes on GitHub
Added
2026-08-18
Added
  • Added an Apple privacy manifest declaring the SDK’s required-reason API usage.
Release notes on GitHub
AddedChangedFixed
2026-08-11
Added
  • setCustomerUserId(_:) sets the customer user id after configure(), for when the id is only known once the user logs in. It applies to every event sent from that point on, including events already buffered but not yet delivered.
  • getAttributionParams() now always carries an appstack_match_status key telling you whether the attribution request succeeded: matched, matched_no_params, organic, skipped, failed or not_configured. Only failed is worth re-reading later; the rest are settled answers.
  • Attribution match outcomes are now visible on the .debug log channel.
Changed
  • getAttributionParams() no longer returns nil — where the result was previously nil or empty, it now carries the status key explaining why. Existing call sites keep compiling, but code using an empty result to mean “not attributed” should switch to the status key.
Fixed
  • deleteUserData() now also clears the stored customer user id.
  • A blank customer user id is treated as absent instead of being sent as an empty string.
  • A setCustomerUserId(...) call made immediately after configure() is no longer overwritten by the value passed to configure().
Release notes on GitHub
AddedFixed
2026-08-03
Added
  • Attribution matching now includes additional network context to improve match diagnostics.
Fixed
  • sendEvent(event:) now ignores INSTALL, which the SDK already tracks automatically. Sending it by hand previously double-counted installs; such calls are now logged and discarded.
Release notes on GitHub
AddedChangedFixedRemoved
2026-07-17
Added
  • Added Mac Catalyst support to the prebuilt XCFramework.
Changed
  • Improved install detection and attribution reliability.
  • Improved Swift Package Manager resolution: installations now download the prebuilt XCFramework directly from the GitHub release asset instead of cloning the complete source repository.
  • Deprecated isDebug and endpointBaseUrl; both arguments are now ignored and will be removed in a future version. Integrations should migrate to configure(apiKey:logLevel:customerUserId:).
Fixed
  • Improved SDK behavior during initialization and temporary connectivity failures.
Removed
  • Removed the test-only AppstackAttributionSdk.setInstallDateForTesting(_:) API.
Release notes on GitHub