June 2026

We are excited to share the June SDK changelog for our product!

📘

Note

Click each SDK header to view the corresponding GitHub repository for release details.

June 09

What's new

Android

  • Supports CleverTap Android SDK 8.3.0.

iOS

  • Supports CleverTap iOS SDK 7.7.1.
  • Silent-in-foreground push notifications via the wzrk_sif:true payload key, server-controlled, no app-side wiring needed when using autoIntegrate.

Android and iOS

  • App Inbox Cross-Device Sync: Syncs the inbox states (read, deleted) across a user's devices automatically. Includes a pull-to-refresh gesture in the built-in showInbox() view, throttled to once every 5 minutes.

Web

  • Supports CleverTap Web SDK 2.7.2.
  • Adds new APIgetVariants() - Returns variants for the current user for A/B testing.

API changes

Android and iOS

  • 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

iOS

  • Fixes a bug where server-side InApps evaluation IDs were duplicated in UserDefaults.
  • Fixes a bug where apps were freezing when InApps were being shown in low network conditions.

June 08

What's New

  • Adds Product Experiences (PE) Variables: Full support for PE Variables on Android and iOS, matching the CleverTap Unity SDK's variable type coverage.
  • Supported variable types: Boolean, byte, short, int, long, float, double, string, file, dictionary.

Bug Fixes

iOS

  • enablePersonalization is now called during SDK initialisation on iOS. This is required for PE Variables and the Personalization API to function, as without it, variable definitions and fetch calls are silently ignored.

June 05

What's New

Android

  • Supports CleverTap Android SDK 8.3.0.
  • App Inbox Cross-Device Sync: Syncs the inbox states (read, deleted) across a user's devices automatically. Includes a pull-to-refresh gesture in the built-in showInbox() view, throttled to once every 5 minutes.

iOS

  • Supports CleverTap iOS SDK 7.7.1.
  • App Inbox Cross-Device Sync: Syncs the inbox states (read, deleted) across a user's devices automatically. Includes a pull-to-refresh gesture in the built-in App Inbox view, throttled to once every 5 minutes.
  • Silent-in-foreground push notifications via the wzrk_sif:true payload key. server-controlled, no app-side wiring needed when using autoIntegrate.

API changes

Android and iOS

  • Adds a new API fetchInbox() to trigger an on-demand inbox refresh. The callback is optional and receives (error, success) once the fetch completes. Throttled to once every 5 minutes between consecutive calls.
    • fetchInbox(): fire-and-forget
    • fetchInbox((err, success) => { ... }): with completion callback
  • Adds a new API pushDisplayUnitElementClickedEventForID(unitID, additionalProperties) to record a NotificationClicked event for a specific element within a Native Display Unit. additionalProperties is merged with cached wzrk_* attribution fields for finer-grained click analytics.

Bug Fixes

iOS

  • Fixes a bug where server-side InApps evaluation IDs were duplicated in UserDefaults.
  • Fixes a bug where apps were freezing when InApps were being shown in low network conditions.

June 04

What's New

  • Native Display Element Click
    • New pushDisplayUnitElementClickedEventForID(String unitID, HashMap<String, Object> additionalProperties) on CleverTapAPI records a Notification Clicked event for a specific element within a Display Unit.
    • When called, the caller-supplied additionalProperties (including wzrk_element_id from the action's metadata) are copied in first. Cached wzrk_* attribution fields from the unit are then layered on top, overriding any same-named keys supplied by the caller.
  • Display Unit Cache API
    • New public interface DisplayUnitCache and setDisplayUnitCache(DisplayUnitCache) on CleverTapAPI let external SDKs (such as the Native Display SDK) inject a custom display-unit store. getAllDisplayUnits() and getDisplayUnitForID() now route through this cache. The default implementation (CTDisplayUnitController) remains active when no override is installed.
    • Implementations of DisplayUnitCache with four methods:
ArrayList<CleverTapDisplayUnit> getAllDisplayUnits();
CleverTapDisplayUnit getDisplayUnitForID(String unitID);
void updateDisplayUnits(List<CleverTapDisplayUnit> displayUnits);
void reset();
  • updateDisplayUnits() is called by the SDK when fresh data arrives from the server. reset() is called on logout. External implementors must handle both correctly.
  • wzrk_* keys in additionalProperties are no longer filtered out. Cached unit wzrk_* fields are layered on top of caller-supplied properties, same-named keys from the server override those supplied by the caller.

Improvements

  • Adds timer box background styling via pt_chrono_bg_clr and pt_chrono_bg_clr_dark with support for solid color, linear gradient, and radial gradient (pt_chrono_style, pt_chrono_grad_clr1, pt_chrono_grad_clr2, pt_chrono_grad_dir).
📘

Note

pt_chrono_grad_dir specifies the gradient angle in degrees (0–360, default 90). It applies to linear gradients only — radial gradients always radiate from center and ignore this key.

If pt_chrono_bg_clr_dark is absent in dark mode, the SDK falls back to pt_chrono_bg_clr. The dark key is optional.

  • Adds timer box border customisation via pt_chrono_border_clr, pt_chrono_border_clr_dark, pt_chrono_border_width, and pt_chrono_border_radius.
📘

Note

The SDK silently enforces maximum values: pt_chrono_border_width is capped at 10pt and pt_chrono_border_radius is capped at 25pt. Values above these limits are accepted without error but are clamped to the maximum.

  • Improves visual consistency in Rating and Zero Bezel templates.
  • Improves padding in templates.

Bug Fixes

  • Fixes timer state persistence: the countdown now correctly reflects elapsed time since notification delivery when the notification is expanded.
⚠️

Note

For this fix to work, the host app must set notificationDeliveryDate from UNNotificationContent.date. Without this, the timer cannot calculate elapsed time and will not reflect the correct state on expand.

What's New

  • Silent in-foreground push notifications: Push notifications can now be suppressed when your app is in the foreground via the wzrk_sif:true key-value pair in the push payload. This applies only to CleverTap push notifications.

    • On iOS 14 and above, the notification is delivered silently to the tray instead of appearing as a heads-up notification. On iOS 13 and below, the notification is fully suppressed.
    • This requires the willPresent method of UNUserNotificationCenterDelegate to be implemented.
    • Adds handleWillPresentNotification:withNotification:defaultPresentationOptions: to support silent-in-foreground behaviour in manual integrations (without autoIntegrate). Call this from your willPresent implementation. defaultPresentationOptions controls the presentation options applied to non-SIF notifications. Not required when using autoIntegrate.
  • Adds recordDisplayUnitElementClickedEventForID:withAdditionalProperties: which records a Notification Clicked event for a specific element within a Display Unit.

  • Adds setDisplayUnitCache: which lets external SDKs (such as the CleverTap Native Display SDK) inject a custom Display Unit store. Implementations must provide all four methods: getAllDisplayUnits, getDisplayUnitForID:, updateDisplayUnits:, and reset. updateDisplayUnits: is called by the SDK when fresh data arrives from the server; reset is called on logout.

Bug Fixes

  • Fixes a bug where server-side InApp evaluation IDs were duplicated in UserDefaults. For installs already affected, the SDK automatically recovers once the stored list exceeds 1000 entries.
  • Fixes a bug where apps were freezing when HTML InApps were shown in low network conditions. The InApp is now hidden on load error instead of leaving the app unresponsive.
CleverTap Ask AI Widget (CSP-Safe)