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

Android

v0.17.3

Improvements

  • InteractKit exposes connection state InteractKit now exposes the underlying WebSocket connection state through its connect field. In earlier 0.17 releases, this state was internal and not available through the public API. You can now observe reconnect cycles, show connectivity indicators, and gate logic on connection readiness by attaching a ConnectKitListener or collecting updates from connect.stateFlow.

  • Fullscreen orientation is now handled by the consumer The SDK no longer manages screen orientation when an Experience enters fullscreen. This behaviour previously added integration and cleanup overhead and prevented custom behaviour. Orientation changes are now delegated to the consumer, which gives you full control over this state.

v0.17.2

Fixes

  • IndexOutOfBoundsException in Event under concurrent element mutations The fix introduced in 0.16.21 affecting Event concurrent element mutations which could result in IndexOutOfBoundsExceptions is now included in the 0.17.x release line.

  • RejectedExecutionException in DelayMessageQueue when add()/start() races with stop() The fix introduced in 0.16.21 affecting DelayMessageQueue add() and start() function calls which could result in RejectedExecutionExceptions is now included in the 0.17.x release line.

v0.17.1

Improvements

  • Implicit IdentifyKit Cleanup IdentifyKit internally cleans up allocated resources when purgeCore() is invoked on a Core instance with an attached IdentifyKit.

Fixes

  • Session Signature Update Message The fix introduced in 0.16.20 affecting the session signature message format is now included in the 0.17.x release line.

v0.17.0

New Features

  • InteractKit logout() must now be called explicitly. A new logout() method has been added to the InteractKitAPI interface; if your implementation of the interface doesn't already provide one you must add it.

Improvements

  • Session ID Persistence Across Reconnections ConnectKit now persists and reuses the session ID across WebSocket reconnections. This gives the backend continuity of context for a user session and avoids redundant session setup on transient disconnects.

  • View Providers are Parcelable Supported. ExperienceConfiguration now supports loadingViewProvider and errorViewProvider as properly-parcelled lambdas, so they survive process restoration via ExperienceFragment.

  • Replaced Gson Dependency with Kotlin Serialization Gson has been removed. All serialisation throughout the SDK now uses kotlinx.serialization. This reduces the SDK's dependency footprint and aligns with Kotlin-idiomatic tooling.

  • Replaced Netty Dependency with Ktor WebSocket Netty has been removed. The WebSocket transport layer in ConnectKit now uses Ktor (backed by OkHttp) instead of Netty. This significantly reduces the binary size of the SDK and eliminates a large, server-oriented dependency from an Android library.

  • Bumped SDK versions

    • targetSdk and compileSdk updated to 36.

    • SDK requires gradle 8.11.1+ and agp 8.9.1+

Breaking Change

These changes require updates to your integration code. Read the Migration Guide for step-by-step instructions.

  • Removal of Deprecated Launcher API Overloads

    The following deprecated API overloads have been removed: getExperience(), getExperienceFragment(), getExperienceIntent(), and reload().

  • Removal of ExperienceActivity feature. The Activity-based experience host has been removed. Use ExperienceView directly inside your own Activity or use ExperienceFragment.

  • Package rename for IdentifyKit. Classes previously under co.monterosa.identifykit now live under co.monterosa.sdk.identifykit (consistent with the rest of the SDK).

  • InteractKit Callback Functions Are Now Suspend

    The callback functions in InteractKit have been converted to suspend functions, as recommended for asynchronous operations. They can now be called within a coroutine scope.

Migration Guide

ProGuard / R8

No new consumer rules are required. The Ktor/OkHttp and kotlinx.serialization libraries include their own consumer rules. If you were previously adding manual rules for Gson or Netty, those can be removed.

Remove Gson from your dependencies (if pulled in transitively)

If your project depended on Gson only because the SDK pulled it in, you can now remove it:

Update IdentifyKit import paths and usages.

  • Imports

  • Get default Instance

  • getSessionSignature and getUserData calls.

Update InteractKit construction and callback calls.

  • getProject call.

  • login and logout calls.


v0.16.21

Fixes

  • IndexOutOfBoundsException in Event under concurrent element mutations Element lists were backed by plain ArrayList with no thread-safety guarantees. Under concurrent access this could produce an IndexOutOfBoundsException. Both lists are now backed by CopyOnWriteArrayList, and mutation paths take asnapshot for reads while writing directly to the live list.

  • RejectedExecutionException in DelayMessageQueue when add()/start() races with stop() The scheduled executor service field was not declared @Volatile with guard checks, so a shutdownNow() on one thread was not guaranteed to be visible to add() or start() on another. Fixed by marking the field @Volatile, capturing the reference once per call to avoid double-reads, and wrapping submission calls in a try/catch RejectedExecutionException to handle the residual race window safely.

v0.16.20

Fixes

  • Incorrect Message Format on Session Signature Update When a session signature was refreshed, the message sent to the Experience contained a malformed payload. This caused any Experience functionality that depended on a valid signature to fail silently after the first signature refresh. The message format has been corrected. Signature update messages are now delivered in the format the Experience expects, restoring reliable behaviour across the full authenticated session lifecycle.

Improvements

  • Explicit destroy() for IdentifyKit Cleanup IdentifyKit now exposes a destroy() method that consumers must call to release allocated resources.

  • Response Caching for getSessionSignature() and getUserData() Identify getSessionSignature() and getUserData() made extra network requests, even when the response was unlikely to changed. Both methods now cache these responses and reduces unnecessary round-trips to the Identify API.

v0.16.19

New Features

  • Native share sheet support When an Experience triggers a share action, the SDK now automatically presents a native share sheet 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.

  • onShare listener callback A new onShare(ExperienceView, ShareContent) method has been added to ExperienceViewListener. This callback fires every time the Experience requests a share action, regardless of the showsDefaultShareSheet setting, giving you full visibility into share events.

Fixes

  • Concurrent modification crash for getElements in Events We've implemented a fix for the ConcurrentModificationException that occurs when different parts of our SDK attempt to read and modify the same Event's element list simultaneously. This fix includes the following key improvements:

    • Thread-Safe Collection: Upgraded the collection for the Elements to a thread-safe variant. This change is specifically designed to handle simultaneous reads and writes without conflicts.

    • Snapshot Iteration Strategy: Implemented a snapshot iteration method for elements, ensuring stability during concurrent operations.


v0.16.18

New Features

  • Allows Popup Behaviour in Experience The SDK now facilitates popup windows within your Experience. Ideal for scenarios requiring secondary windows, these are triggered using the JavaScript window.open() function or similar variant. It's crucial for these windows to ensure proper closure and, if applicable, data transfer back to the main Experience. Configuration is available through ExperienceConfiguration.


v0.16.17

Fixes

  • Concurrent modification crash for SDK listeners We've implemented a fix for the ConcurrentModificationException that occurs when different parts of our SDK attempt to read and modify the same list of listeners simultaneously. This fix includes the following key improvements:

    • Thread-Safe Collection: Upgraded the collection used by the MulticastListener class to a thread-safe variant. This change is specifically designed to handle simultaneous reads and writes without conflicts.

    • Snapshot Iteration Strategy: Implemented a snapshot iteration method for notifying listeners, ensuring stability during concurrent operations.

  • Error Handling Improvement in onFailloading Listener The onFailloading listener previously propagated all errors from the experience to the parent, aiding in debugging the client app. However, this verbosity was problematic. We have now refined this by restricting error propagation to only include issues related to experience loading failures. All other errors are logged to the console for debugging purposes, ensuring clearer communication with the parent app.


v0.16.16

Fixes

  • Session persistance We’ve updated the default behaviour of storage persistence to be enabled by default. This change ensures consistent session maintenance, preventing disruptions caused by the operating system clearing webview data over time.


v0.16.15

Fixes

  • Experience Cleanup We’ve improved how Experiences are cleaned up to ensure smoother transitions and prevent issues during re-initialisation.


v0.16.14

Fixes

  • Opening links externally not handled for embedded iframes The opening links in an external app using the launchesURLsWithBlankTargetToChrome override now handles links from webpages or iframes embedded in an Experience.

New features

  • Background customisation The SDK now enables you to customise the background of an Experience to match overall app look. This can be configured via ExperienceConfiguration


v0.16.13

Fixes

  • Crash on opening a URL when no browser installed Users whose device didn’t have a browser installed would crash when attempting to open a URL.We now avoid the crash, and notify about this occurrence with a listener so you can notify your user about the error if you chose to

New Features

  • Loading view timeout configuration SDK can optionally display a loading view while the Experience is loading. This view is removed when either of the two happens:

    • The Experience notifies the SDK that it has completed loading it’s UI.

    • A loading timeout has been reached.

    This version of the SDK adds a way to customise this timeout:

Last updated