Skip to content

task: sync react-native ← Android corev8.3.0 + iOS 7.7.1 (rn-example-trace-1)#3

Open
clevertap-wrapper-sync[bot] wants to merge 1 commit into
task/setup-sync-automationfrom
task/release_rn-example-trace-1
Open

task: sync react-native ← Android corev8.3.0 + iOS 7.7.1 (rn-example-trace-1)#3
clevertap-wrapper-sync[bot] wants to merge 1 commit into
task/setup-sync-automationfrom
task/release_rn-example-trace-1

Conversation

@clevertap-wrapper-sync

Copy link
Copy Markdown

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

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

⚠️ Flagged for review — NOT auto-applied

  • 🔁 Behavior: getDisplayUnitForID (native v8.3.0) — getAllDisplayUnits() and getDisplayUnitForID() now route through the new DisplayUnitCache; the wrapper's existing getDisplayUnitForId() calls this internally — behavior change only, no API surface change needed.
  • 🔁 Behavior: App Inbox Cross-Device Sync — Notification Viewed/Clicked deduplication (native v8.2.0) — Rapid duplicate Notification Viewed/Clicked events for the same inbox message are now automatically suppressed; host apps relying on receiving duplicate events for the same message may see a behavior change.
  • 🔁 Behavior: App Inbox pull-to-refresh throttle (swiperefreshlayout dependency added) (native v8.2.0) — androidx.swiperefreshlayout:swiperefreshlayout:1.1.0 is now a transitive implementation dependency; host apps using ProGuard/R8 should be aware of this new transitive dependency.
  • 🔁 Behavior: recordInboxNotificationViewedEvent ordering with markReadInboxMessage (native v7.7.0) — For custom inbox implementations, recordInboxNotificationViewedEvent(messageId) must be called before markReadInboxMessage(messageId); reverse order silently drops the Viewed event.
  • 🔁 Behavior: Notification Viewed deduplication for cross-device-synced read messages (native v7.7.0) — For accounts with App Inbox Cross-Device Sync enabled, a Notification Viewed event is not raised for messages already read on another device.

Version pins bumped

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

Release prep

  • Wrapper version: 4.1.0 → 4.2.0 (minor — adds two new additive APIs with no breaking changes; no minSdk or deployment-target changes)
  • libVersion: 40100 → 40200
  • Docs updated:
    • docs/usage.md — entries added for: fetchInbox, pushDisplayUnitElementClickedEventForID
    • docs/install.md — Android pin bumped to 8.3.0
  • Example demos added: fetchInbox, pushDisplayUnitElementClickedEventForID

Android sync

Surfaced (2)

  • CleverTap.fetchInbox() — Overload pair (fetchInbox() / fetchInbox(FetchInboxCallback)) surfaced as a single JS method with optional callback per codebase pattern; callback delivers a boolean success/failure result.
  • CleverTap.pushDisplayUnitElementClickedEventForID() — Host-facing void method recording a Notification Clicked event for a specific element in a Display Unit; additionalProperties map bridges via ReadableMap/eventPropsFromReadableMap.

Skipped (1)

  • ⏭️ setDisplayUnitCache — SDK-to-SDK integration API requiring a native Java interface implementation (DisplayUnitCache); no meaningful JS representation.

Deferred for design review (0)

Build manifest propagated

  • Bump clevertap-android-sdk pin from 8.1.0 to 8.3.0 (android/build.gradle, docs/install.md)

iOS sync

Surfaced (2)

  • CleverTap.fetchInbox() — New fetchInboxWithCallback: in CleverTap+Inbox.h mapped to the existing JS wrapper; optional-callback overload pattern (nil → fire-and-forget, callback → success boolean). (ios/CleverTapReact/CleverTapReact.mm)
  • CleverTap.pushDisplayUnitElementClickedEventForID() — New recordDisplayUnitElementClickedEventForID:additionalProperties: in CleverTap+DisplayUnit.h mapped to the existing JS method; RCT_EXPORT_METHOD added to iOS bridge. (ios/CleverTapReact/CleverTapReact.mm)

Skipped (17)

  • ⏭️ addV2MessageIds: — Internal CTInboxController method.
  • ⏭️ buildInboxMessageStateEvent:forMessage:isV2Message:andQueryParameters:completionHandler: — Internal CTEventBuilder static method.
  • ⏭️ deleteAbsentPersistentV2MessagesFromResponseIds: — Internal CTInboxController method.
  • ⏭️ inboxV2DeleteMessagesRequestWithConfig:params:url: — Internal CTRequestFactory static method.
  • ⏭️ inboxV2FetchRequestWithConfig:params:url: — Internal CTRequestFactory static method.
  • ⏭️ inboxViewControllerDidRequestRefreshWithCallback: — Private CleverTapInboxViewControllerPrivate protocol method.
  • ⏭️ inboxViewControllerGetMessages — Private CleverTapInboxViewControllerPrivate protocol method.
  • ⏭️ inboxViewControllerIsInboxV2Enabled — Private CleverTapInboxViewControllerPrivate protocol method.
  • ⏭️ isV2MessageId: — Internal CTInboxController method.
  • ⏭️ performExpiryPurge — Internal CTInboxController method.
  • ⏭️ removeV2MessageId: — Internal CTInboxController method.
  • ⏭️ swizzleWillPresentOnClass: — Internal CTSwizzleManager helper.
  • ⏭️ setDisplayUnitCache: — SDK-to-SDK integration point; takes a CleverTapDisplayUnitCache protocol object with no meaningful JS representation.
  • ⏭️ getAllDisplayUnits (nullability change) — Return type changed from _Nonnull to _Nullable; ObjC for-in over nil is safe so existing bridge handles this gracefully — no code change needed.
  • ⏭️ getDisplayUnitForID: (duplicate format variant) — Two equivalent header spellings of the same existing method; no semantic change.
  • ⏭️ buildInboxMessageStateEvent:forMessage:andQueryParameters:completionHandler: (removed) — Removed internal CTEventBuilder method; not part of the public RN bridge.
  • ⏭️ displayUnitsDidUpdate (removed) — Removed internal CTDisplayUnitController method; not part of the public RN bridge.

Deferred for design review (1)

  • ⚠️ handleWillPresentNotification:withDefaultOptions:completionHandler: — Takes a native UNNotification object; not representable in JS — must be called from the host app's native UNUserNotificationCenterDelegate willPresent: implementation. Next step: host apps using manual (non-autoIntegrate) integration must call this from their native AppDelegate to enable silent-in-foreground push.

Build manifest propagated

(none)

CHANGELOG entries added

- [Android] Bump clevertap-android-sdk to 8.3.0 — adds fetchInbox(callback?) for on-demand App Inbox refresh and pushDisplayUnitElementClickedEventForID(unitID, additionalProperties) for element-level Native Display click analytics.

iOS — ## [Unreleased] v4.2.0 section updated: bumped iOS SDK to v7.7.1; added App Inbox Cross-Device Sync and Native Display Element Click feature bullets (symmetrized with Android); added silent-in-foreground push bullet (iOS-only); updated API changes section heading from [Android Platform] to [Android and iOS Platform] for fetchInbox and pushDisplayUnitElementClickedEventForID.

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: The SDK already fetches inbox messages automatically on app launch and user login. Two new public methods have been added to this with 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. This throttle is shared with the built-in pull-to-refresh gesture.
    • Pull-to-Refresh in Built-in Inbox: The built-in App Inbox 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.
    • 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 recordInboxNotificationViewedEvent(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.

Fixed

  • Fixes a crash in CTInAppEvaluationManager corrupting NSUserDefaults.

Run metadata

  • Model: claude-sonnet-4-6 (+ claude-haiku-4-5-20251001 for sub-tasks)
  • Tokens used: ~57,000 (28,500 Android + 28,500 iOS, estimated)
  • Approx cost: $4.29 ($3.34 Android + $0.95 iOS)
  • Soft cap ($3) exceeded: yes

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>
@clevertap-wrapper-sync

Copy link
Copy Markdown
Author

⚠️ Run cost: $4.29 — exceeded soft cap of $3

Total tokens: 50735.
No action required — soft cap is informational. Review this run if costs are consistently high.

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