For the complete documentation index, see llms.txt. This page is also available as Markdown.

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 = false to 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 UIActivityViewController with the shared content. This behaviour is controlled by the showsDefaultShareSheet property in ExperienceConfiguration (defaults to true). When set to false the SDK skips the native share sheet, allowing you to handle sharing in your own way.

  • didRequestShare delegate callback: A new didRequestShare method has been added to both ExperienceViewDelegate. This callback fires every time the Experience requests a share action, regardless of the showsDefaultShareSheet setting, 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 all instead 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:

  • getUserData and getSessionSignature have 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 launchesURLsWithBlankTargetToSafari override 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 via ExperienceView:

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 ExperienceView instantiation 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