Repository navigation
Version 4.2.0 (2 September 2026)
What's new
-
[Android Platform]
- Supports CleverTap Android SDK v8.4.1.
- Custom-HTML header and footer in-apps now render when the host Activity is not a
FragmentActivity. Opt in by adding theCLEVERTAP_INAPP_FRAGMENTLESS_BANNERSflag to your app'sAndroidManifest.xml; default off, so existing integrations are unaffected. - Improves accessibility across in-app notifications and App Inbox with dynamic text scaling, screen-reader announcements and content descriptions, a larger 48dp dismiss-button tap area, and corrected carousel TalkBack navigation.
-
[iOS Platform]
- Adds Swift Package Manager (SPM) support alongside the existing CocoaPods integration - consumers can pick either package manager based on their project setup. Raises the minimum iOS deployment target to 13.0; projects below this are auto-promoted by Flutter's SPM tooling with a build log notice. See Integrate-iOS-SPM.md for setup and migration guidance.
- Adds
UIScenelifecycle support via a newsceneWillConnectWithOptions:method onCleverTapPlugin. Apps that use aSceneDelegateshould call it fromscene(_:willConnectTo:options:)sogetInitialUrl()returns the deep link on a cold launch; apps that do not use theUIScenelifecycle need no changes. - Supports CleverTap iOS SDK v7.8.1.
- Improves accessibility across in-app notifications and App Inbox with VoiceOver labels, a larger dismiss-button tap area, and better handling of image content descriptions.
-
[Android and iOS Platform]
- Adds Spin-the-Wheel and Scratch Card gamified templates to Advanced InApp Builder in-app notifications — campaign-driven, no app-side wiring needed.
- Adds per-element click attribution to the in-app
Notification Clickedevent across all in-app templates, plus configurable dismiss gestures (swipe-to-dismiss, and tap-outside on iOS) that are also tracked asNotification Clickedevents.
API changes
- [Android and iOS Platform]
- New API:
dismissPipInApp()- Dismisses the currently visible Picture-in-Picture (PIP) in-app notification. A no-op when no PIP in-app is visible, and other in-app types are never affected. Dismissing frees the in-app display slot, so pair it withsuspendInAppNotifications()andresumeInAppNotifications()to keep a screen free of all in-apps.
- New API:
Bug Fixes
-
[Android Platform]
- Fixes a critical issue where App Inbox messages were never saved on the device on Android 6.0 through Android 10 (API 23 – 29), leaving the inbox permanently empty. Affects every app using App Inbox on
v4.0.0andv4.1.0; messages reappear automatically on the next inbox fetch after updating, with no code change required. - Fixes an
AbstractMethodErrorcrash when a Picture-in-Picture in-app notification played a video on Android 6.0 (API 23). Only affects apps whoseminSdkVersionis below 24; the fix also covers in-app and App Inbox video playback.
- Fixes a critical issue where App Inbox messages were never saved on the device on Android 6.0 through Android 10 (API 23 – 29), leaving the inbox permanently empty. Affects every app using App Inbox on
-
[iOS Platform]
- Fixes
getAppLaunchNotification()not being implemented on iOS, which caused aPlatformException(MissingPluginException) when called. - Fixes an issue where in-apps that were missed while the app was in the background were not shown when the app returned to the foreground.
- Fixes an issue where the
Notification Clickedevent did not include deeplink properties for custom-HTML in-apps. - Fixes an issue where Advanced InApp Builder full-screen cover in-apps did not respect the device safe area.
- Fixes an issue where client-side in-apps were not persisted when an empty campaign list was received.
- Fixes a potential crash while saving variable diffs, and a potential crash when
syncVariables()and concurrent variable updates ran at the same time.
- Fixes
-
[Android and iOS Platform]
- Fixes an issue where the built-in App Inbox did not repaint the message list after a pull-to-refresh — newly fetched messages only appeared after closing and reopening the inbox.