iOS
v0.17.1
Improvements:
Stability (ConnectKit, Common, InteractKit): Fixed thread safety issues that could cause crashes during concurrent WebSocket operations, delegate callbacks, and message processing.
v0.17.0
New:
Element recovery after app backgrounding (InteractKit): The SDK now automatically re-fetches element history when the app returns to the foreground, recovering any elements published while the app was suspended. This is enabled by default and works alongside the existing WebSocket reconnection to provide full coverage. Set
Interact.default.refreshOnForeground = falseto disable automatic recovery.refreshElements()on Event (InteractKit): A new public method that fetches the latest element history and merges it into the existing cache without affecting the WebSocket subscription. Use this for manual recovery when you need precise control over timing.
Changed:
PromiseKit dependency removed: All internal networking and async coordination has been migrated from PromiseKit to Swift Concurrency (async/await, Task, CheckedContinuation). No changes to the public API.
Module dependency graph simplified: Internal dependencies between SDK modules has been reduced.
Minimum iOS version updated: The minimum supported iOS version is now iOS 15.0.
Fixed:
Element update handling (InteractKit): Fixed an issue where element updates were not correctly propagated through the delegate.
Migration guide
Delegate callbacks on foreground resume
With automatic element recovery enabled (default), didPublishElement and didReceiveUpdate may now fire on EventUpdateDelegate when the app returns to the foreground. If this causes issues, disable with: Interact.default.refreshOnForeground = false
PromiseKit removal
If you were not importing PromiseKit directly from the SDK's transitive dependencies, no changes are needed. If your project depended on PromiseKit being available transitively through the SDK, you will need to add it as a direct dependency in your own Podfile or Package.swift.
Module dependency graph simplified
Core, IdentifyKit, and LauncherKit no longer depend on ConnectKit. If your code imports ConnectKit types (e.g. ConnectKitAPI, ConnectionState) and you were only importing Core, IdentifyKit, or LauncherKit, you will need to add an explicit import MonterosaSDKConnectKit and the corresponding dependency to your Podfile or Package.swift.
Minimum iOS version bump to 15.0
If your project previously targeted iOS 14, you must update the deployment target in your Xcode project settings.
v0.16.22
Improvements:
Stability (ConnectKit, Common, InteractKit): Fixed thread safety issues that could cause crashes during concurrent WebSocket operations, delegate callbacks, and message processing.
v0.16.21
New:
Native share sheet support: When an Experience triggers a share action, the SDK now automatically presents a native
UIActivityViewControllerwith the shared content. This behaviour is controlled by theshowsDefaultShareSheetproperty inExperienceConfiguration(defaults totrue). When set tofalsethe SDK skips the native share sheet, allowing you to handle sharing in your own way.didRequestSharedelegate callback: A newdidRequestSharemethod has been added to bothExperienceViewDelegate. This callback fires every time the Experience requests a share action, regardless of theshowsDefaultShareSheetsetting, giving you full visibility into share events.
v0.16.20
Fix:
InteractKit custom fields language fallback: When no custom fields entry is found for the resolved language, the SDK now falls back to
allinstead of returning empty content.
v0.16.19
New:
Popup window support in Experience: The SDK now facilitates popup windows within your Experience. This is ideal for scenarios requiring secondary windows and is triggered using the JavaScript
window.open()function (or equivalent variants).
Changed:
getUserDataandgetSessionSignaturehave been updated to support multi-level embedding. This ensures identity is resolved and applied reliably when the Experience is embedded across multiple nested contexts.Minimum iOS version updated: The minimum supported iOS version is now iOS 14.0.
Migration guide
Minimum iOS version bump to 14.0
If your project previously targeted iOS 13, you must update the deployment target in your Xcode project settings.
v0.16.18
Fixes:
Session persistence: The default behaviour has been updated to enable persistence by default. This ensures sessions are consistently maintained and addresses session disruptions caused by Apple's Intelligent Tracking Prevention (ITP).
Identity synchronisation: Resolved an issue where the identity token was not properly communicated to the Experience if it was set before the Experience was ready. This could previously cause inconsistencies on new openings or depending on the timing of token assignment. The fix ensures the token is now reliably passed to the Experience when already set, maintaining consistent identity behaviour across Experiences.
Migration guide
Dependencies
If your app relies on sessions not persisting between launches, you can opt out via:
v0.16.17
Fixes:
Logger Privacy: Logging behaviour has been improved for better privacy and clarity:
DEBUG builds: Logs remain public for easier development and debugging.
RELEASE builds: Logs are now private to protect sensitive information.
v0.16.16
Fixes:
Dependencies: Improved the way dependencies are declared to ensure smoother, more reliable builds and prevent race-condition issues.
Migration guide
Dependencies
If your project integrates the SDK via SPM, you must reset the package cache in Xcode after updating to this version so the updated dependency graph is resolved correctly.
MonterosaSDKInteractKit is no longer a transitive dependency of MonterosaSDKLauncherKit. If you use InteractKit in your project, you must now declare it explicitly in your target's dependencies
v0.16.15
New:
Background customisation: You can now customise the background of an Experience, including the loading screens and WebView background, through
ExperienceConfiguration:
swift
v0.16.14
Fixes:
Error handling: The SDK now correctly displays the error screen (if enabled) when there is a URL error.
v0.16.13
Fixes:
Opening links externally on iOS 18+: The issue with opening links in an external app using the
launchesURLsWithBlankTargetToSafarioverride has been fixed.
v0.16.12
New:
Privacy Manifest: Added Privacy Manifest support. In response to Apple's privacy requirements, a Privacy Manifest has been introduced outlining what features the SDK uses and why. This ensures SDK compliance with Apple's updated privacy guidelines.
v0.16.11
Breaking changes:
Loading and error views are now disabled by default: Loading and error views were previously enabled by default, which caused issues in some scenarios. They are now opt-in. To re-enable them:
swift
New:
App-to-Experience communications timeout: By default, the SDK will wait 20 seconds before timing out a request sent to an Experience via
CommunicationBridge. This timeout can now be customised viaExperienceView:
swift
Loading view timeout configuration: The loading view is dismissed when either the Experience signals it has finished loading, or a configurable timeout is reached. The timeout can now be customised:
swift
Fixes:
Memory leak in ExperienceView: Fixed a memory leak related to
ExperienceViewinstantiation where created instances were not destroyed until the app was closed.
Migration guide
Loading and error views disabled by default
If you were relying on the default loading or error view behaviour, you must now opt in explicitly by passing supportsLoadingState: true in your ExperienceConfiguration. No other API changes are required.
Before (implicit default no longer works):
swift
After:
swift
Last updated

