NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1681 most downloaded on pub.dev
The CleverTap Flutter SDK for Mobile Customer Engagement,Analytics and Retention solutions.
Last release 1 months ago
02 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 53 of 53 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
53 releases · first in 2020
One column per quarter.
Version 4.2.0 (2 September 2026)
What's new
[Android Platform]
FragmentActivity. Opt in by adding the CLEVERTAP_INAPP_FRAGMENTLESS_BANNERS flag to your app's AndroidManifest.xml; default off, so existing integrations are unaffected.[iOS Platform]
UIScene lifecycle support via a new sceneWillConnectWithOptions: method on CleverTapPlugin. Apps that use a SceneDelegate should call it from scene(_:willConnectTo:options:) so getInitialUrl() returns the deep link on a cold launch; apps that do not use the UIScene lifecycle need no changes.[Android and iOS Platform]
Notification Clicked event across all in-app templates, plus configurable dismiss gestures (swipe-to-dismiss, and tap-outside on iOS) that are also tracked as Notification Clicked events.API changes
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 with suspendInAppNotifications() and resumeInAppNotifications() to keep a screen free of all in-apps.Bug Fixes
[Android Platform]
v4.0.0 and v4.1.0; messages reappear automatically on the next inbox fetch after updating, with no code change required.AbstractMethodError crash when a Picture-in-Picture in-app notification played a video on Android 6.0 (API 23). Only affects apps whose minSdkVersion is below 24; the fix also covers in-app and App Inbox video playback.[iOS Platform]
getAppLaunchNotification() not being implemented on iOS, which caused a PlatformException (MissingPluginException) when called.Notification Clicked event did not include deeplink properties for custom-HTML in-apps.syncVariables() and concurrent variable updates ran at the same time.[Android and iOS Platform]
getCleverTapID(OnInitCleverTapIDListener) to get CleverTap ID through OnInitCleverTapIDListener callbackSyncListener interface and will be removed in future versions, use getCleverTapID(OnInitCleverTapIDListener) insteadgetCleverTapAttributionIdentifier() method and will be removed in future versions, use getCleverTapID(OnInitCleverTapIDListener) insteadCleverTapAPI.LogLevel.VERBOSE level for debuggingrecordScreen() NPE crashSupports CleverTap Android SDK v8.3.0 .
What's new
[Android Platform]
[iOS Platform]
wzrk_sif:true payload key — server-controlled, no app-side wiring needed when using autoIntegrate.[Android and iOS Platform]
showInbox() view, throttled to once every 5 minutes.[Web Platform]
getVariants() - Returns variants for the current user for A/B testing.API changes
fetchInbox() - Triggers an on-demand App Inbox refresh (fire-and-forget), throttled to once every 5 minutes..fetchInboxWithCallback() - Triggers an on-demand App Inbox refresh and returns a Future<bool?> indicating success or failure, throttled to once every 5 minutes..pushDisplayUnitElementClickedEvent(unitId, additionalProperties) - Records a Notification Clicked event for a specific element within a Display Unit, enriched with caller-supplied additionalProperties.Bug Fixes
onUserLoginSupports CleverTap Web SDK v2.7.1
What's new
Deprecates ExoPlayer integration. Migration to Media3 is required before Android SDK v9.0.0.
What's new
[Android Platform]
compileSDKVersion to 36[iOS Platform]
[Android and iOS Platform]
API changes
unmute() - Resumes event tracking, overriding any active mute period.Breaking Changes
minSdkVersion from 21 to 23. Devices running Android 5.x (API levels 21–22) are no longer supported.Bug Fixes
onUserLogin was creating additional guids only for encryption level high.Supports CleverTap Web SDK v2.5.5
What's new
Supports CleverTap Android SDK v7.8.0 .
What's new
[Android Platform]
[iOS Platform]
[Android and iOS Platform]
Supports CleverTap Android SDK v7.7.1 .
What's new
[Android Platform]
[iOS Platform]
API changes
getVariants() - Returns experiment variant information for the current user for A/B testing.discardInAppNotifications({bool? dismissInAppIfVisible}) - Adds optional parameter to dismiss any currently visible In-App notification in addition to discarding queued notifications.Supports CleverTap Android SDK v7.6.0 .
What's new
Supports CleverTap Web SDK v2.3.0
[Web Platform]
[Android Platform]
[iOS Platform]
Supports CleverTap Android SDK v7.5.1 .
What's new
Supports CleverTap Web SDK v2.1.2
What's new
[Web Platform]
[iOS Platform]
…and compliance with regulations. This is non-breaking change.
[Android Platform]
[iOS Platform]
[Web Platform]
API changes
setOptOut(userOptOut) API. This upgraded API improves GDPR opt-out functionality by allowing you to control whether critical system events (such as app installs, uninstalls, and push notification registration) are still sent to CleverTap, even when a user has opted out of tracking. This helps you respect user privacy choices while still maintaining essential app functionality and compliance with regulations. This is non-breaking change.
setOptOut(userOptOut, allowSystemEvents)Bug Fixes
No new templates are synced error while syncing new custom templates.Supports CleverTap Android SDK v7.4.1.
What's new
[Android Platform]
[iOS Platform]
Supports CleverTap iOS SDK v7.1.1.
What's new
dismissInAppNotification action to dismiss custom HTML in-AppsBug Fixes
[Android Platform]
[iOS Platform]
defineVariables().> Please refer to this guide for changed integration steps for Huawei PushProvider.
⚠️ NOTE
Please refer to this guide for changed integration steps for Huawei PushProvider.
What's new
FCM
pushRegistrationToken(String value, Map<String, String> pushType): Register the token for the specified PushType. Refer here for example usage.Breaking API Changes
setBaiduPushToken(String value)setHuaweiPushToken(String value)> ⚠️ NOTE After upgrading the SDK to v3.2.0, don't downgrade in subsequent app releases. If you encounter any issues, please contact the CleverTap sup
⚠️ NOTE After upgrading the SDK to v3.2.0, don't downgrade in subsequent app releases. If you encounter any issues, please contact the CleverTap support team for assistance.
What's new
AndroidKeyStore for securely backing up encryption key on API levels 23+.minSdkVersion to API 21 (Android 5.0).Android Gradle Plugin (A.G.P) to 8.6.1 as recommended for Android 15Adds support for Flutter 3.29 by removing Embedding v1 support, which was deprecated long ago. If your project still relies on Embedding v1, follow th…
What's new
[Android Platform]
wzrk_hide_large_icon key in notification payload.[iOS Platform]
[Android and iOS Platform]
Adds support for triggering InApps based on first-time event filtering in multiple triggers. Now you can create campaign triggers that combine recurring and first-time events. For example: Trigger a campaign when "Charged" occurs (every time) OR "App Launched" occurs (first time only).
Adds new user-level event log tracking system to store and manage user event history. New APIs include:
getUserEventLog(<eventName>): Get details about a specific eventgetUserEventLogCount(<eventName>): Get count of times an event occurredgetUserLastVisitTs(): Get timestamp of user's last app visitgetUserAppLaunchCount(): Get total number of times user has launched the appgetUserEventLogHistory(): Get full event history for current userAPI Changes
eventGetDetail(): Use getUserEventLog() instead for user-specific event detailseventGetOccurrences(): Use getUserEventLogCount() instead for user-specific event countseventGetFirstTime(): Use getUserEventLog() instead for user-specific first occurrence timestampeventGetLastTime(): Use getUserEventLog() instead for user-specific last occurrence timestampsessionGetPreviousVisitTime(): Use getUserLastVisitTs() instead for user-specific last visit timestampsessionGetTotalVisits(): Use getUserAppLaunchCount() instead for user-specific app launch countgetEventHistory(): Use getUserEventLogHistory() instead for user-specific event historySupports CleverTap Android SDK v7.0.3.
What's new
[Android Platform]
[iOS Platform]
[Android and iOS Platform]
Bug Fixes
Adds support for AndroidX Media3 in lieu of the deprecation of ExoPlayer. While Clevertap continues to support ExoPlayer, migration is recommended. Fo…
What's new
[Android Platform]
AndroidX Media3 in lieu of the deprecation of ExoPlayer. While Clevertap continues to support ExoPlayer, migration is recommended. For migration refer here.[iOS Platform]
[Web Platform]
Bug Fixes
[All Platforms]
pub get from a Windows Machine[Android Platform]
[iOS Platform]
Adds the method 'addKVDataChangeListener()' to get the custom KV Pair data
Bug Fixes
[Web Platform]
[Android Platform]
ClassCastException for setMinimumFetchIntervalInSeconds in ProductConfig.profileGetProperty.[iOS Platform]
profileGetProperty.Added the method 'recordChargedEvent' for web
What's new
Bug Fixes
[Web Platform]
[Android Platform]
flutter_workmanager is used.------------------------------------------- Bug Fixes * [Web Platform] * Removes JS package dependency
Supports CleverTap Web SDK v1.7.3.
What's new
[Web Platform]
[Android Platform]
[iOS Platform]
Breaking Changes
Bug Fixes
[Android Platform]
PromptForSettings alert dialog.NullPointerException related to deviceInfo.deviceId.isMainProcess check.CtApi triggered by DeviceId generation.[iOS Platform]
Deprecates Xiaomi public methods as we are sunsetting SDK. Details here.
What's new
[Android Platform]
[iOS Platform]
Bug Fixes
[Android Platform]
[iOS Platform]
Supports CleverTap Android SDK v6.0.0.
What's new
[Android Platform]
[iOS Platform]
[Android and iOS Platform]
clearInAppResources(boolean) to delete images and gifs which are preloaded for inapps in cs modefetchInApps() to explicitly fetch InApps from the serverBug Fixes
[Android Platform]
[iOS Platform]
Supports CleverTap Web SDK v1.6.10.
What's new
Bug Fixes
Supports CleverTap iOS SDK v5.2.2
What's new
[iOS Platform]
[Web Platform]
Updated logic to retrieve country code using NSLocale above iOS 16 as CTCarrier is deprecated above iOS 16 with no replacements, see Apple Doc.
What's new
[Android Platform]
[iOS Platform]
NSFileProtectionComplete to secure App’s document directory.[Android and iOS Platform]
CleverTapPlugin.setLocale(Locale locale) to set the custom locale, for LP Parity.CleverTapPlugin.setDebugLevel(3).Changes
CTCarrier is deprecated above iOS 16 with no replacements, see Apple Doc.Bug Fixes
Supports CleverTap Android SDK v5.2.0.
What's new
[Android Platform]
[iOS Platform]
[Android and iOS Platform]
Bug Fixes
Supports CleverTap iOS SDK v5.1.2
What's new
Bug Fixes
Supports CleverTap Android SDK v5.1.0
What's new
CleverTapPlugin.getAppLaunchNotification() to perform UI impacting operation like redirecting the user to a specific page.CleverTapPlugin.onKilledStateNotificationClicked(_onKilledStateNotificationClickedHandler) to perform non-UI operation like performing HTTP requests, IO operations with local storage etc.
Please refer to the Notification Click Handling to learn more about properly handling notification clicks.Changes
CleverTapPlugin.createNotification(data) API now supports rendering push template notifications and handling VoIP push for the SignedCall SDK.Bug Fixes
*Deprecated:* The following methods and classes related to Product Config and Feature Flags have been marked as deprecated in this release, instead us…
What's new
dismissInbox() to dismiss the App Inbox screen.markReadInboxMessagesForIDs(List<String>) and deleteInboxMessagesForIDs(List<String>) to mark read and delete an array of Inbox Messages respectively.API Changes
Deprecated: The following methods and classes related to Product Config and Feature Flags have been marked as deprecated in this release, instead use new Remote Config Variables feature. These methods and classes will be removed in the future versions with prior notice.
Product config
setDefaultsMapfetchactivatefetchAndActivatesetMinimumFetchIntervalInSecondsresetProductConfiggetProductConfigStringgetProductConfigBooleangetNumbergetLastFetchTimeStampInMillisFeature flags
getFeatureFlagBreaking Change
CleverTapInboxNotificationMessageClickedHandler callback]:
It is changed from CleverTapInboxNotificationMessageClickedHandler(Map<String, dynamic>? data) to CleverTapInboxNotificationMessageClickedHandler(Map<String, dynamic>? data, int contentPageIndex, int buttonIndex). The contentPageIndex corresponds to the page index of the content, which ranges from 0 to the total number of pages for carousel templates. For non-carousel templates, the contentPageIndex value is always 0, as they only have one page of content. The buttonIndex corresponds to the the App Inbox button clicked (0, 1, or 2). A value of -1 in buttonIndex field indicates the entire App Inbox Item is clicked.Changes
Bug Fixes
processPushNotification(dynamic data) API.Fixed compilation errors in Xcode 14.3+ in iOS.
onDisplayUnitsLoaded callback method in iOS to directly pass display unit array.Adds below new public APIs to support CleverTap Android SDK v4.7.4 and CleverTap iOS SDK v4.2.0
getPushNotificationPermissionStatus(), promptPushPrimer(object), promptForPushNotification(boolean)setCleverTapPushPermissionResponseReceivedHandler which returns true/false after user allows/denies the notification permission.setCleverTapInAppNotificationShowHandler to handle InApp notification shown - Only for Android.[Breaking change to the signature of the `CleverTapInboxNotificationMessageClickedHandler` callback]: It is changed from CleverTapInboxNotificationMes…
dismissInbox() to dismiss the App Inbox.CleverTapInboxNotificationMessageClickedHandler callback]:
It is changed from CleverTapInboxNotificationMessageClickedHandler(Map<String, dynamic>? data) to CleverTapInboxNotificationMessageClickedHandler(Map<String, dynamic>? data, int contentPageIndex, int buttonIndex). The contentPageIndex corresponds to the page index of the content, which ranges from 0 to the total number of pages for carousel templates. For non-carousel templates, the contentPageIndex value is always 0, as they only have one page of content. The buttonIndex corresponds to the the App Inbox button clicked (0, 1, or 2). A value of -1 in buttonIndex field indicates the entire App Inbox Item is clicked.CleverTapInboxNotificationMessageClickedHandler callback]:
Previously, the callback was raised when the App Inbox Item is clicked. Now, it is also raised when the App Inbox button is clicked besides the item click.onDisplayUnitsLoaded callback method in iOS to pass the list of displayUnits.Adds fix for closing App Inbox controller when deeplink is present in iOS.
Supports CleverTap iOS SDK v4.1.4
Fixes incorrect API being called in profileAddMultiValues in iOS.
profileAddMultiValues in iOS.[Breaking Change] setXiaomiPushToken API has been modified to accept region to comply with new Mi Push Region changes. Refer to CleverTap Xiaomi Push…
setXiaomiPushToken API has been modified to accept region to comply with new Mi Push Region changes. Refer to CleverTap Xiaomi Push SDK v1.5.0 ChangelogAdds the missing getter methods for Product Config in iOS.
Supports CleverTap Android SDK v4.4.0
Adds result.success(null) for all method calls #81
result.success(null) for all method calls #81Deprecates profileGetCleverTapID() and profileGetCleverTapAttributionIdentifier() methods
profileGetCleverTapID() and profileGetCleverTapAttributionIdentifier() methodsgetCleverTapID() as an alternative to above deprecated methodsSupports CleverTap Android SDK v4.2.0
recordScreen NPE #54Supports CleverTap Android SDK v4.1.1
profileSetGraphUser methodpushNotificationViewedEvent and pushNotificationClickedEventUpdate and Freeze CleverTap Plugin Podspec to a specific version of a CleverTap iOS SDK
Supports CleverTap Android SDK v4.0.0
Supports CleverTap Android SDK v3.8.2
Adds a callback to provide Push Notifications custom key-value pairs
Adds support for Product Config and Feature Flags
Adds support for Custom App Inbox
Adds support for Dynamic Variables & Native Display
Supports CleverTap Android SDK v3.6.1
Your coding agent can read these notes before it upgrades. Set up the MCP server →