Skip to content

task: sync react-native ← Android corev8.4.1 + iOS 7.8.1 (2026-08-11) - #511

Open
clevertap-wrapper-sync[bot] wants to merge 1 commit into
developfrom
task/release_2026-08-11
Open

task: sync react-native ← Android corev8.4.1 + iOS 7.8.1 (2026-08-11)#511
clevertap-wrapper-sync[bot] wants to merge 1 commit into
developfrom
task/release_2026-08-11

Conversation

@clevertap-wrapper-sync

Copy link
Copy Markdown
Contributor

Sync react-native ← Android corev8.4.1 + iOS 7.8.1 (2026-08-11)

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

⚠️ Flagged for review — NOT auto-applied

  • Unconfirmed: dismissPipInApp — iOS bridge (native v8.4.1) — flagged by the Android sync because no iOS RCT_EXPORT_METHOD existed yet; the iOS sync that ran afterwards added it at ios/CleverTapReact/CleverTapReact.mm:963, so verify it landed.
  • 🔁 Behavior: App Inbox never persisted on Android 6.0–10 (API 23–29) (native v8.4.0) — critical native fix affecting every App Inbox account on RN v4.1.0/v4.2.0; no API change, recorded in CHANGELOG Bug Fixes.
  • 🔁 Behavior: PIP in-app video crash on Android 6.0 (AbstractMethodError) (native v8.4.0) — native runtime fix for apps with minSdkVersion below 24; no symbol change.
  • 🔁 Behavior: App Inbox pull-to-refresh did not repaint the message list (native v8.4.1) — fix inside the SDK's own inbox view; no API surface change.
  • 🔁 Behavior: clevertap_push_templates_sdk 2.4.0 → 2.5.0 in the native version catalog (native v8.4.1) — internal to the Android SDK's version catalog; not a pin this wrapper carries, so nothing propagated.
  • 🔁 Behavior: Spin-the-Wheel and Scratch Card in-app templates (native v7.8.1) — campaign-side templates rendering through the existing in-app pipeline; no new public API in the diff.
  • 🔁 Behavior: Split of Clicks — per-element in-app click attribution (native v7.8.0) — added symbols are all in private headers; reviewer may want to confirm whether CleverTapInAppNotificationDismissed listeners now receive extra payload keys worth documenting.
  • 🔁 Behavior: Accessibility improvements for in-apps and App Inbox (native v7.8.0) — VoiceOver labels, larger dismiss tap area, image content descriptions; no public API change to bridge.

Version pins bumped

  • Android: clevertap-android-sdk 8.3.0 → 8.4.1 (android/build.gradle, docs/install.md)
  • iOS: CleverTap-iOS-SDK 7.7.1 → 7.8.1 (clevertap-react-native.podspec)

Release prep

  • Wrapper version: 4.2.0 → 4.3.0 (minor — adds one additive API (dismissPipInApp) and a native pin bump; nothing removed, no required parameter added, minSdk unchanged at 23)
  • libVersion: 40200 → 40300
  • Docs updated:
    • docs/usage.md — entry added for: dismissPipInApp (iOS sync dropped the "Supported on Android." qualifier)
    • docs/install.md — Android pin bumped to 8.4.1
  • Example demos added: dismissPipInApp (Example/app/constants.js, Example/app/app-utils.js, Example/app/App.js)

Android sync

Surfaced (1)

  • CleverTap.dismissPipInApp() — new no-arg void method on CleverTapAPI that dismisses the visible Picture-in-Picture in-app; maps 1:1 to a JS side-effect call, so no API design was needed.

Skipped (4)

  • ⏭️ Spin-the-Wheel and Scratch Card templates — server-configured in-app templates rendered entirely by the native SDK; no new public API for host apps to call.
  • ⏭️ CLEVERTAP_INAPP_FRAGMENTLESS_BANNERS — opt-in manifest flag set by the host app in its own AndroidManifest.xml; not always-required, so the wrapper manifest must not declare it.
  • ⏭️ Split of Clicks (per-element in-app click attribution) — native-side analytics enrichment of the existing Notification Clicked event; no new bridge surface.
  • ⏭️ In-app and App Inbox accessibility improvements — native UI behavior in SDK-owned views; nothing for the wrapper to expose.

Deferred for design review (0)

Build manifest propagated

  • clevertap-android-sdk pin 8.3.0 → 8.4.1 (android/build.gradle, docs/install.md)

iOS sync

Surfaced (1)

  • CleverTap.dismissPipInApp() — new public API on CleverTap+InAppNotifications.h; JS/TS/Android layers landed in the Android sync earlier in this release, so this run added the missing iOS RCT_EXPORT_METHOD bridge and symmetrized docs/changelog across both platforms.

Skipped (11)

  • ⏭️ _dismissPipInApp — private implementation detail in CTInAppDisplayManager.h, not part of the public CleverTap surface.
  • ⏭️ announceInAppShown — declared in CTInAppDisplayViewControllerPrivate.h; internal accessibility plumbing, no host-app surface.
  • ⏭️ handleNotificationDidShow — private view-controller callback, not callable by host apps.
  • ⏭️ notifyDelegateActionTriggered:withExtras: — private in-app click-attribution plumbing behind the existing Notification Clicked event.
  • ⏭️ triggerCloseActionWithCallToAction:elementId: — private in-app dismissal plumbing for the new split-of-clicks tracking.
  • ⏭️ recordInAppNotificationMediaError:forNotification: — declared in CleverTapInternal.h; internal telemetry, not a public API.
  • ⏭️ updateMessages:completion: — internal CTInboxController method backing the App Inbox pull-to-refresh repaint fix; no new host-facing API.
  • ⏭️ variantsCopy — internal CTVarCache accessor added for the concurrency crash fix.
  • ⏭️ CTSessionManager init/session methods (removed) — internal session-manager refactor; never reachable from the RN bridge.
  • ⏭️ CTTimerResult / CTInActionResult factory methods (removed) — internal in-app scheduler result types; never exposed through the RN bridge.
  • ⏭️ discardedWithId:message: (changed) — signature normalisation on the internal CTDelayedInAppResult type; no RN-visible impact.

Deferred for design review (0)

Build manifest propagated

  • None (diff reported zero iOS build-manifest deltas; no s.platform change)

CHANGELOG entries added

  • [Android] Bump clevertap-android-sdk to 8.4.1 — adds dismissPipInApp(); brings Spin-the-Wheel/Scratch Card in-app templates, per-element in-app click attribution, in-app + App Inbox accessibility improvements, and fixes App Inbox never persisting on Android 6.0–10.
  • [iOS] Bump CleverTap-iOS-SDK to 7.8.1 — adds dismissPipInApp() to the RN bridge, plus Spin-the-Wheel/Scratch Card in-app templates, per-element in-app click attribution, accessibility improvements, and the App Inbox pull-to-refresh repaint fix.

Native CHANGELOG entries (reviewer reference)

Android — corev8.4.1

Version 8.4.1 (August 7, 2026)

New Features

  • 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() method on CleverTapAPI dismisses the
    currently visible Picture-in-Picture (PIP) In-App notification. Safe to call from any thread;
    a no-op when no PIP is visible, and other in-app types are never affected.
    • Note: 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 with
      suspendInAppNotifications() on screen entry and resumeInAppNotifications() on exit.
  • 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
    Unity or Unreal game engines. Opt-in via the CLEVERTAP_INAPP_FRAGMENTLESS_BANNERS manifest
    flag; default off, so existing integrations are unaffected.

Bug Fixes

  • App Inbox Pull-to-Refresh: 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.

Android — intermediate corev8.4.0

Version 8.4.0 (July 28, 2026)

New Features

  • Split of Clicks:
    Adds per-element click attribution to In-Apps Notification Clicked event across all in-app templates. Also adds configurable
    swipe-to-dismiss gesture for In-Apps, and tracks these dismissals as Notification Clicked events.

Improvements

  • Accessibility:
    Enhances accessibility across In-App notifications and App Inbox with dynamic text scaling, screen-reader announcements and
    content descriptions (close button, images, media controls), a larger 48dp dismiss-button tap area, and corrected carousel
    TalkBack navigation — helping apps meet accessibility standards.

Bug Fixes

  • App Inbox on Android 6.0 – 10: Fixes a critical issue where App Inbox messages were never saved on the device, leaving the inbox permanently empty on Android 6.0 through Android 10 (API 23 – 29). The SDK was using a SQLite statement (UPSERT) that needs SQLite 3.24.0 or newer, which Android only ships from Android 11 onwards, so every inbox write failed silently on older devices. Present in v8.2.0 and v8.3.0.
    • Note: This affects every account using App Inbox, not only those enabled for App Inbox Cross-Device Sync. Messages delivered the classic way and messages delivered through Cross-Device Sync are saved by the same code, so both were affected.
    • Note: No code change or migration is required on your side. After updating, messages reappear automatically on the next inbox fetch.
  • Crash while playing video on Android 6.0: Fixes an AbstractMethodError crash seen when a Picture-in-Picture (PIP) In-App notification played a video on Android 6.0 (API 23). Media3's Player.Listener interface relies on Java 8 default methods, which Android 6.0 does not support at runtime, so any callback the SDK had not explicitly overridden crashed the app. The SDK's shared Media3PlayerListener now implements all of them. Only affects apps whose minSdkVersion is below 24.
    • Note: This listener is shared by every Media3 video surface, so the fix also protects In-App video and App Inbox video playback on Android 6.0, not only PIP.

iOS — corev7.8.1

Version 7.8.1 (August 7, 2026)

Added

  • 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() method on CleverTapAPI dismisses the currently visible Picture-in-Picture (PIP) In-App notification.
    • Note: 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 with
      suspendInAppNotifications() on screen entry and resumeInAppNotifications() on exit.

Fixed

  • App Inbox Pull-to-Refresh: Fixes an issue where the built-in App Inbox did not repaint the message list after a pull-to-refresh.

iOS — intermediate corev7.8.0

Version 7.8.0 (July 28, 2026)

Added

  • Split of Clicks: Adds per-element click attribution to In-Apps Notification Clicked event across all in-app templates. Also adds configurable tap-outside and swipe-to-dismiss gestures for In-Apps, and tracks these dismissals as Notification Clicked events.
  • Accessibility Improvements: Enhances accessibility support across In-App notifications and App Inbox, including VoiceOver labels, a larger dismiss-button tap area, and better handling of image content descriptions, to help apps meet accessibility standards.

Fixed

  • Fixes a bug where CS InApps were not persisted when empty array was received.
  • Fixes a bug where the AIB in-app would not respect safe area for full-screen cover inapps.
  • Fixes a potential crash at NSKeyedArchiver replaceObject: that could occur while saving variable diffs.
  • Fixes a potential concurrency-related crash during simultaneous variants updates.
  • Fixes a bug where the Notification Clicked event was not including deeplink properties for HTML In-Apps.
  • Fixes a bug where InApps that were missed while the app was in the background were not shown when the app returned to the foreground.

Run metadata

  • Model: claude-opus-5 (with claude-haiku-4-5 for auxiliary calls)
  • Tokens used: 27,350 output (Android 17,911 + iOS 9,439); 88,935 cache-creation input; 3,269,865 cache-read input
  • Approx cost: $2.89 (Android $2.14 + iOS $0.76)
  • Self-heal attempts: not reported
  • Soft cap ($3) exceeded: no
  • Note: npx eslint was blocked by the sandbox during the Android sync (5 permission denials); JS edits were verified by re-reading files instead. CI lint must cover this.

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.4.1
iOS: core 7.8.1

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

Co-Authored-By: Claude <noreply@anthropic.com>
@shubhambjadhavar

shubhambjadhavar commented Aug 11, 2026

Copy link
Copy Markdown

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues
Licenses 0 0 0 0 0 issues
Code Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

Comment thread CHANGELOG.md
Comment on lines +9 to +11
* 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 Clicked` event now records which element of the in-app was tapped, across all templates. Swipe-to-dismiss is now configurable per campaign and is tracked as a `Notification Clicked` event too.
* Accessibility improvements across in-apps and App Inbox — dynamic text scaling, screen-reader announcements, content descriptions for close buttons/images/media controls, a larger 48dp dismiss tap target, and corrected carousel navigation for TalkBack.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@piyush-kukadiya I think these changelog can be added in Android and iOS section below to skip redundant changelog, we can update it later in skill

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.

2 participants