Skip to content

task: sync react-native ← Android corev8.3.0 + iOS 7.7.1 (rn-full-1)#2

Open
clevertap-wrapper-sync[bot] wants to merge 1 commit into
developfrom
task/release_rn-full-1
Open

task: sync react-native ← Android corev8.3.0 + iOS 7.7.1 (rn-full-1)#2
clevertap-wrapper-sync[bot] wants to merge 1 commit into
developfrom
task/release_rn-full-1

Conversation

@clevertap-wrapper-sync

Copy link
Copy Markdown

Sync react-native ← Android corev8.3.0 + iOS 7.7.1 (rn-full-1)

🤖 Auto-generated by clevertap-wrapper-sync via clevertap-wrapper-tooling.

⚠️ Flagged for review — NOT auto-applied

  • 🔁 Behavior: getDisplayUnitForID / getAllDisplayUnits (native v8.3.0) — Both methods now route through the injected DisplayUnitCache rather than the default controller; no JS API change required, but behavior shifts for apps that call setDisplayUnitCache from native code.
  • 🔁 Behavior: Inbox Viewed / Clicked event deduplication (native v8.2.0 / v7.7.0) — Rapid duplicate Notification Viewed/Clicked events for the same inbox message are now suppressed automatically; custom inbox implementations must call pushInboxNotificationViewedEvent / recordInboxNotificationViewedEventForID before markReadInboxMessage or the Viewed event is silently dropped.
  • 🔁 Behavior: Pull-to-refresh in built-in App Inbox (showAppInbox) (native v8.2.0) — The built-in inbox view gains pull-to-refresh (throttled to 5 min); automatically disabled for accounts not enabled for Cross-Device Sync. No API change needed.
  • 🔁 Behavior: wzrk_sif silent-in-foreground push (native v7.7.1) — Works automatically with autoIntegrate; apps using manual SDK integration must add handleWillPresentNotification:withDefaultOptions:completionHandler: from their AppDelegate — a native-only step not surfaced via JS.

Version pins bumped

  • Android: clevertap-android-sdk 8.1.0 → 8.3.0 (android/build.gradle, docs/install.md)

Release prep

  • Wrapper version: 4.1.0 → 4.2.0 (minor — adds fetchInbox(callback?) and pushDisplayUnitElementClickedEventForID(unitID, props); no breaking changes, no required-parameter additions, no minSdk change)
  • libVersion: 40100 → 40200
  • Docs updated:
    • docs/usage.md — entries added for: fetchInbox, pushDisplayUnitElementClickedEventForID
    • docs/install.md — Android pin bumped to 8.3.0

Android sync

Surfaced (2)

  • fetchInbox() / fetchInbox(callback) — Overload pair handled via single JS method with optional callback; callback receives (null, boolean) where true = success.
  • pushDisplayUnitElementClickedEventForID(unitID, additionalProperties) — Records a Notification Clicked event for a specific Display Unit element; HashMap<String,Object> maps cleanly to JS object / ReadableMap.

Skipped (1)

  • ⏭️ setDisplayUnitCache — Takes a DisplayUnitCache Java interface that cannot be implemented from JS; SDK-to-SDK integration point for native SDKs, not a host-app API.

Deferred for design review (0)

Build manifest propagated

  • clevertap-android-sdk pin 8.1.0 → 8.3.0 (android/build.gradle, docs/install.md)
  • Wrapper versionCode 410 → 420, versionName 4.1.0 → 4.2.0 (android/build.gradle)

iOS sync

Surfaced (2)

  • fetchInboxfetchInboxWithCallback: added in 7.7.0; iOS bridge maps to it with an optional callback; JS layer was already present from the Android sync.
  • pushDisplayUnitElementClickedEventForIDrecordDisplayUnitElementClickedEventForID:additionalProperties: added in 7.7.1; iOS bridge added to match the Android sync's JS method of the same name.

Skipped (13)

  • ⏭️ handleWillPresentNotification:withDefaultOptions:completionHandler: — AppDelegate-level static method for UNUserNotificationCenterDelegate; silent-in-foreground feature is transparent to JS callers.
  • ⏭️ setDisplayUnitCache: — Accepts id<CleverTapDisplayUnitCache> Objective-C protocol; designed for native SDK injection, not bridgeable from JS.
  • ⏭️ getAllDisplayUnits (nullability change) — Return type changed from _Nonnull to _Nullable; existing JS bridge already handles nil gracefully.
  • ⏭️ addV2MessageIds: / deleteAbsentPersistentV2MessagesFromResponseIds: / isV2MessageId: / performExpiryPurge / removeV2MessageId: — Internal CTInboxController.h methods; not part of the host-app public API.
  • ⏭️ buildInboxMessageStateEvent:forMessage:isV2Message:andQueryParameters:completionHandler: (added) — Internal CTEventBuilder.h static method; not part of the host-app public API.
  • ⏭️ inboxV2DeleteMessagesRequestWithConfig:params:url: / inboxV2FetchRequestWithConfig:params:url: / swizzleWillPresentOnClass: — Internal CTRequestFactory.h and CTSwizzleManager.h methods; not part of the host-app public API.
  • ⏭️ inboxViewControllerDidRequestRefreshWithCallback: / inboxViewControllerGetMessages / inboxViewControllerIsInboxV2EnabledCleverTapInboxViewControllerPrivate.h methods; private API.
  • ⏭️ buildInboxMessageStateEvent:forMessage:andQueryParameters:completionHandler: (removed) — Internal CTEventBuilder.h static method; removal does not affect the public JS bridge.
  • ⏭️ displayUnitsDidUpdate (removed) — Internal CTDisplayUnitController.h method; not exposed in JS bridge.
  • ⏭️ updateDisplayUnits: (parameter type change) — Internal CTDisplayUnitController.h method; not exposed in JS bridge.
  • ⏭️ initWithAccountId:guid: (nullability change) — Internal CTDisplayUnitController.h initializer; not exposed in JS bridge.
  • ⏭️ getDisplayUnitForID: (nullability change) — Nullability annotation alignment only; existing JS bridge behaviour unchanged.

Deferred for design review (0)

Build manifest propagated

(none)

CHANGELOG entries added

Android:

Version 4.2.0 (June 10 2026) — Bumps clevertap-android-sdk to 8.3.0; adds fetchInbox(callback?) for on-demand App Inbox refresh and pushDisplayUnitElementClickedEventForID(unitID, additionalProperties) for element-level Display Unit click analytics.

iOS:

  • [iOS Platform]
    • Supports CleverTap iOS SDK v7.7.1.
    • App Inbox Cross-Device Sync — inbox state (read, deleted) syncs across a user's devices automatically, with pull-to-refresh throttled to once every 5 minutes.
    • Native Display Element Click — finer-grained click analytics for individual elements within a Display Unit.
    • Silent-in-foreground push — notifications with wzrk_sif:true are delivered silently to the tray when the app is in the foreground.

Native CHANGELOG entries (reviewer reference)

Android — corev8.3.0

Version 8.3.0 (June 2026)

New Features

  • 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. Caller-supplied additionalProperties (including wzrk_element_id from the action's metadata) are merged first, then enriched with cached wzrk_* attribution fields from the unit — giving finer-grained click analytics for Native Display experiences.
  • Display Unit Cache API: New public interface DisplayUnitCache and setDisplayUnitCache(DisplayUnitCache) on CleverTapAPI let external SDKs (e.g. 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.

Android — intermediate corev8.2.0

Version 8.2.0 (May 20, 2026)

New Features

  • App Inbox Cross-Device Sync: App Inbox messages now sync across a user's devices. If a user deletes or reads a message on one device, it is automatically reflected on their other devices.
    • New Inbox Fetch APIs: The SDK already fetches inbox messages automatically on app launch and user login. Two new public methods have been added to CleverTapAPI to complement this with on-demand refresh support:
      • fetchInbox() — triggers an inbox refresh from the server (fire-and-forget).
      • fetchInbox(FetchInboxCallback) — same as above, but invokes the callback with a success/failure result when the fetch completes. The callback fires on the SDK's network thread, not the main thread.
      • Note: Both methods are throttled to once every 5 minutes between consecutive calls. This throttle is shared with the built-in pull-to-refresh gesture.
    • Pull-to-Refresh in Built-in Inbox: The built-in App Inbox (showAppInbox()) now includes a pull-to-refresh gesture. Manual inbox fetches — including those triggered by fetchInbox() — are throttled to once every 5 minutes between consecutive calls.
      • Note: Pull-to-refresh is automatically disabled for accounts that are not enabled for App Inbox Cross-Device Sync. The message list remains fully visible and scrollable; only the swipe gesture is disabled.
    • Inbox Viewed and Clicked Event Deduplication: Rapid duplicate Notification Viewed and Notification Clicked events for the same inbox message are now automatically suppressed to prevent analytics inflation. Additionally, a Notification Viewed event is not raised for messages that have already been read on another device.
      • Note: For custom inbox implementations, ensure pushInboxNotificationViewedEvent(messageId) is called when a message becomes visible to the user, before calling markReadInboxMessage(messageId) — calling them in reverse order will silently drop the Viewed event.
      • Note: The "already read" suppression applies only to accounts enabled for App Inbox Cross-Device Sync. For accounts not using this feature, Notification Viewed continues to be raised regardless of read state, preserving existing behaviour.

iOS — corev7.7.1

Version 7.7.1 (June 04, 2026)

Added

  • Silent-in-foreground push notification: 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.
    • The notification will be delivered silently to the tray instead of appearing as a heads-up notification. This will only work if the method willPresent of UNUserNotificationCenterDelegate is implemented.
    • Adds a new method handleWillPresentNotification: which handles a UNNotification in the foreground to support silent-in-foreground behaviour when using manual SDK integration (i.e. without autoIntegrate). This should be called from your method willPresent of UNUserNotificationCenterDelegate and is not required when using autoIntegrate.
  • Adds a new method recordDisplayUnitElementClickedEventForID: which records a Notification Clicked event for a specific element within a Display Unit.
  • Adds a new public method setDisplayUnitCache: which lets external SDKs (e.g. the CleverTap Native Display SDK) inject a custom Display Unit store.

Fixed

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

iOS — intermediate corev7.7.0

Version 7.7.0 (May 19, 2026)

New Features

  • App Inbox Cross-Device Sync: App Inbox messages now sync across a user's devices. If a user deletes or reads a message on one device, it is automatically reflected on their other devices.
    • New Inbox Fetch API: Two new public methods added for on-demand refresh support:
      • fetchInbox() — triggers an inbox refresh from the server (fire-and-forget).
      • fetchInbox(callback:) — same as above, but invokes the callback with a success/failure result when the fetch completes.
      • Note: Both methods are throttled to once every 5 minutes between consecutive calls.
    • Pull-to-Refresh in Built-in Inbox: The built-in App Inbox now includes a pull-to-refresh gesture, throttled to once every 5 minutes.
    • Inbox Viewed and Clicked Event Deduplication: Rapid duplicate Notification Viewed and Notification Clicked events for the same inbox message are now automatically suppressed.
      • Note: For custom inbox implementations, ensure recordInboxNotificationViewedEvent(messageId) is called before markReadInboxMessage(messageId) — calling them in reverse order will silently drop the Viewed event.

Fixed

  • Fixes a crash in CTInAppEvaluationManager corrupting NSUserDefaults.

Run metadata

  • Model: claude-sonnet-4-6 (primary), claude-haiku-4-5-20251001 (tooling)
  • Tokens used: 57,000
  • Approx cost: $2.68
  • Self-heal attempts: not reported
  • Soft cap ($3) exceeded: no

For the reviewer

This PR is auto-generated. Please:

  1. Read the Surfaced sections — confirm each surfaced API is genuinely host-facing and the wrapper API shape looks idiomatic.
  2. Read Skipped — confirm we didn't miss anything obvious.
  3. Read Deferred — these need follow-up tickets to be opened or addressed locally.
  4. Check Build manifest propagated — any minSdk / deployment-target bumps are visible to host apps. Make sure CHANGELOG calls them out as breaking if applicable.
  5. CI must be green before merge: lint + Android build + iOS Example app build.

Android: core 8.3.0
iOS: core 7.7.1

Auto-generated by clevertap-wrapper-sync via clevertap-wrapper-tooling.

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants