August 2026
We are excited to share the August SDK changelog for our product!
August 27
Bug Fixes
- Fixes per-page deep links in pt_carousel and pt_manual_carousel templates, so that pt_dl2 and pt_dl3 are honored, and each page opens its own deep link instead of always falling back to pt_dl1.
What's New
- Updated to CleverTap Android SDK v8.4.1
- Updated to CleverTap iOS SDK v7.8.1
PauseSDK()/ResumeSDK()- pause and resume all CleverTap event tracking and network operations. Events recorded while paused are buffered in the queue and automatically flushed on resume. Supported on Android, iOS, and Unity Native (Editor/PC/Mac/WebGL).DismissPipInApp()— dismisses the currently visible Picture-in-Picture (PiP) in-app notification, freeing the display slot for the next queued in-app. No-op on Native/Editor.- Tap-to-open factory variable files in the example app opens .json variable files directly from the device on Android and iOS. Desktop/Editor fallback uses Application.OpenURL.
Bug Fixes
- Fixes an issue where
SetOfflinehad no effect on Android. ThesetOfflinemethod was missing from the(CleverTapUnityPlugin.java)Java wrapper, causing the JNI call to silently fail. The method is now implemented and correctly delegates to the native CleverTap Android SDK. - Fixes an issue where the second play session in Unity Editor causes a crash when Domain Reload is disabled. A hook in
CleverTap.csnow resets all factories in dependency order at the start of every Play session, preventing stale object references.
August 20
What's New
-
Spin-the-Wheel and Scratch Card gamified in-app templates: available to campaigns built with the Advanced InApp Builder, no app-side wiring needed.
-
Per-element click attribution for in-apps: the
Notification Clickedevent now records which element of the in-app was tapped, across all templates. Tap-outside (iOS) and swipe-to-dismiss (Android and iOS) gestures are now configurable per campaign and are tracked asNotification Clickedevents too.
Enhancements
Android
-
Accessibility improvements across in-apps and App Inbox, dynamic text scaling, screen-reader announcements, content descriptions for close buttons/images/media controls, a larger 48 DP (Density-independent Pixel) dismiss tap target, and corrected carousel navigation for TalkBack.
-
Custom-HTML header and footer in-apps now render when the host Activity is not a
FragmentActivity(for example, Unity or Unreal game engines). Off by default, so existing apps are unaffected. Opt in with theCLEVERTAP_INAPP_FRAGMENTLESS_BANNERSmanifest flag.
iOS
- Accessibility improvements across in-apps and App Inbox: VoiceOver labels, a larger dismiss button tap area, and improved handling of image content descriptions.
API changes
Android & iOS
- Adds
dismissPipInApp(): dismisses the Picture-in-Picture in-app notification currently on screen. It does nothing when no PiP in-app is visible, and never affects other in-app types.
Bug Fixes
Android
-
Fixes App Inbox messages not being saved on Android 6.0 through Android 10 (API 23–29), leaving the inbox permanently empty on those devices. Affects every app using App Inbox on React Native SDK v4.1.0 and v4.2.0; messages reappear on the next inbox fetch after updating, with no code change on your side.
-
Fixes the built-in App Inbox not repainting the message list after a pull-to-refresh. Newly fetched messages previously appeared only after closing and reopening the inbox.
-
Fixes a crash when a Picture-in-Picture in-app played video on Android 6.0. Only affects apps whose
minSdkVersionis below 24; the same fix also covers in-app and App Inbox video playback on that OS version. -
Fixes a rare NPE (Null Pointer Exception) that occurs when the push permission prompt is triggered from a background thread by ensuring it is launched on the main thread.
iOS
-
Fixes the built-in App Inbox not repainting the message list after a pull-to-refresh. Newly fetched messages previously appeared only after closing and reopening the inbox.
-
Fixes in-app events that were missed while the app was in the background and weren't shown when the app returned to the foreground.
-
Fixes the
Notification Clickedevent not carrying deeplink properties for custom-HTML in-apps. -
Fixes client-side in-apps not being persisted when an empty campaign list was received.
-
Fixes full-screen cover in-apps built with the Advanced InApp Builder not respecting the device safe area.
-
Fixes two potential crashes, one while saving variable diffs, and one during simultaneous variable updates.
August 12
What's New
- Android CleverTap SDK upgraded from 8.0.0 to 8.4.1.
- iOS CleverTap SDK upgraded from 7.6.0 to 7.8.1.
Unmute():Resumes event recording and network traffic after the SDK has been muted. Android-only; no-op on iOS and Null/Editor. Added in Android SDK 8.1.0.DismissPipInApp(): Dismisses the currently visible Picture-in-Picture (PIP) in-app notification, freeing the display slot for the next queued in-app. Fully implemented on Android (SDK 8.4.1) and iOS (SDK 7.8.1).RecordDisplayUnitClickedEventForID(UnitID): No-op placeholder for API parity with Android SDK 8.4.1 and iOS SDK 7.8.1. Display Units are not yet implemented in the Unreal plugin.PauseSDK()/ResumeSDK(): Gaming-context aliases forSetOffline(true/false). CallPauseSDK()at the start of latency-sensitive gameplay sequences — boss fights, cutscenes — to prevent SDK network calls from causing frame stutters. CallResumeSDK()when the sequence ends to flush queued events.GetVariants():Returns the active A/B test variants currently assigned to the user asTArray<TMap<FString,FString>>. Each entry is a property dictionary for one variant (for example,"id","name"). Returns an empty array if no variants are active.
Bug Fixes
Android
-
Removed local AAR workaround: The custom-patched
clevertap-android-sdk-8.4.0.aarhas been deleted. The SDK is now consumed from Maven Central (com.clevertap.android:clevertap-android-sdk:8.4.1), which natively includes fragmentless banner support. TheAndroidLocalCleverTapSdkAarPathconfig key remains supported for overriding to a local AAR if needed. -
Fragment-based in-apps crashing on
GameActivity: Unreal Engine'sGameActivitydoes not extendAppCompatActivity, causing fragment-based in-app renderers (header, footer) to throw aClassCastExceptionat display time. Fixed by addingCLEVERTAP_INAPP_FRAGMENTLESS_BANNERS=1metadataAndroidManifest.xmlvia UPL to enable the SDK's fragment-free rendering path. -
FileProvider registration: Added
androidx.core.content.FileProviderdeclaration toAndroidManifest.xmlvia UPL, along with aclevertap_file_provider_paths.xmlresource. Required for sharing private-storage file paths (for example, PE file variables) on Android 7 and above.
Sample App
-
Login not persisted across restarts on Android:
SaveGameToSlotsilently failed on Android 11 and above due to scoped storage blocking writes outside the app'sfiles/directory. Fixed by bypassing UE'sISaveGameSystem— save, load, and delete operations now useFPlatformMisc::GamePersistentDownloadDir()(maps togetExternalFilesDir()) withFFileHelperfor direct file I/O. -
"Delete Login Info" not logging out:
DeleteSaveState()deleted the save file, butSyncSaveStateToViewModelsimmediately re-created it when the ViewModel changes fired during UI teardown. Fixed by addingEndDisplay_MainMenu()to unbind the delegate before teardown, and callingSetUIState(Login)fromDeleteSaveState()to navigate back to the login screen. -
SaveState null crash on first launch:
CppDemonstrationHUDnow correctly handles a null result fromLoadGameFromSloton first launch (no save file present) and falls back to the login state instead of dereferencing a null pointer. -
PE tab, file variable preview: Added
OpenPEFileVariable()toCleverTapSampleBlueprintFunctionLibrary. Opens a PE file variable using the OS viewer, QuickLook on iOS, and FileProvider intent on Android.
August 07
What's New
- Spin-the-Wheel and Scratch Card Templates: Adds Spin-the-Wheel and Scratch Card gamified template support to Advanced InApp Builder in-app notifications.
- Dismiss PIP In-App API: New
dismissPipInApp()onCleverTapAPIdismisses the currently visible Picture-in-Picture (PIP) In-App notification. Safe to call from any thread; a no-op when no PIP In-App is visible. Other in-app types are never affected.
- HTML Header/Footer In-Apps Without FragmentActivity: Custom HTML header and footer in-app notifications can now render when the host Activity is not a
FragmentActivity. For example, in Unity or Unreal Engine integrations. Opt in via theCLEVERTAP_INAPP_FRAGMENTLESS_BANNERSmanifest flag. The default setting is off, so existing integrations are unaffected.
Bug Fixes
- 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.
What's New
- Spin-the-Wheel and Scratch Card Templates: Adds Spin-the-Wheel and Scratch Card gamified template support to Advanced InApp Builder in-app notifications.
- Dismiss PIP In-App API: New
dismissPipInApp()onCleverTapAPIdismisses the currently visible Picture-in-Picture (PIP) In-App notification. Dismissing frees the in-app display slot, so the next queued in-app (if any) may show immediately. To keep a screen free of all in-apps, pair this withsuspendInAppNotifications()on-screen entry andresumeInAppNotifications()on exit.
Bug Fixes
- 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.
August 07
What's New
- Spin-the-Wheel and Scratch Card Templates: Adds Spin-the-Wheel and Scratch Card gamified template support to Advanced InApp Builder in-app notifications.
- Dismiss PIP In-App API: New
dismissPipInApp()onCleverTapAPIdismisses the currently visible Picture-in-Picture (PIP) In-App notification. Safe to call from any thread; a no-op when no PIP In-App is visible. Other in-app types are never affected.
- HTML Header/Footer In-Apps Without FragmentActivity: Custom HTML header and footer in-app notifications can now render when the host Activity is not a
FragmentActivity, for example, in Unity or Unreal Engine integrations. Opt in via theCLEVERTAP_INAPP_FRAGMENTLESS_BANNERSmanifest flag. Default setting is off, so existing integrations are unaffected.
Bug Fixes
- 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.
Updated 18 days ago
