Skip to content

feat: add acknowledged React Native deep-link routing (MBL-2301) - #648

Merged
Shahroz16 merged 6 commits into
mainfrom
codex/mbl-2301-react-native-deep-link-ack
Aug 28, 2026
Merged

feat: add acknowledged React Native deep-link routing (MBL-2301)#648
Shahroz16 merged 6 commits into
mainfrom
codex/mbl-2301-react-native-deep-link-ack

Conversation

@Shahroz16

Copy link
Copy Markdown
Contributor

What changed

  • Adds an opt-in CustomerIO.setDeepLinkHandler API for React Native UIScene hosts.
  • Buffers cold destinations until the handler registers, then requires an explicit handled or declined result.
  • Uses the native fallback for a declined URL, handler failure, missing registration, or timeout.
  • Preserves the existing Linking readiness path and AppDelegate behavior.
  • Routes cold and warm Live Activity destinations through the same acknowledged path.
  • Keeps Android behavior unchanged.

Validation

  • Package build and TypeScript declarations
  • API Extractor
  • ESLint
  • 17 Jest tests
  • Native Swift request-state and acknowledgement race tests
  • Packed SDK built into a React Native 0.88 scene sample
  • Maestro cold and warm notification destination tests on Xcode 26.6 and iOS 26.5
  • The PR workflow provides the Xcode 27 build and launch check

Scope

This is the post-release single-scene reliability follow-up tracked by MBL-2301. Multi-window scene ownership remains separate work.

@Shahroz16
Shahroz16 requested a review from a team as a code owner August 28, 2026 03:36
@github-actions

github-actions Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Sample app builds 📱

Below you will find the list of the latest versions of the sample apps. It's recommended to always download the latest builds of the sample apps to accurately test the pull request.


  • iOS FCM: 648.6.0 (29799082)
  • Android APN: 648.6.0 (29799082)

@mrehan27 mrehan27 left a comment

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.

Approving. The state machine holds up under pressure: the expectedState guards mean a request promoted by useHandler() no-ops its stale readiness timer instead of double-falling-back, every promoted delivery gets its own acknowledgement timer, and fallback() is only ever reached after the lock is released at all three call sites.

This also closes both P2s from #643 — Maestro is pinned to the release URL with a checksum, and the paths filter now covers src/** and ios/wrappers/**. Worth noting test.yml had no npm test step before this, so it's also the first CI gate for the Jest suite, alongside the new Swift state tests.

Comment thread ios/wrappers/CustomerIOReactNativeDeepLinkRouter.swift
Comment thread src/customerio-cdp.ts
Comment thread ios/wrappers/NativeCustomerIO.swift
@Shahroz16
Shahroz16 merged commit 859a37d into main Aug 28, 2026
18 checks passed
@Shahroz16
Shahroz16 deleted the codex/mbl-2301-react-native-deep-link-ack branch August 28, 2026 19:42
cio-mobile-release Bot pushed a commit that referenced this pull request Aug 28, 2026
## [6.10.0](6.9.0...6.10.0) (2026-08-28)

### Features

* add acknowledged React Native deep-link routing (MBL-2301) ([#648](#648)) ([859a37d](859a37d))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants