refactor: handle universal links from Braze notif deeplinks [GE-188]#28973
Conversation
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
…interstitial from trusted sourced
c01d60d to
395a642
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ee0c232. Configure here.
ee0c232 to
395a642
Compare
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection: Performance Test Selection: |
|
|
✅ E2E Fixture Validation — Schema is up to date |




Description
This PR adds support for universal links from Braze push notification deeplinks. It also removes the interstitial from this source, alongside all trusted sources (carousels, push notifications, Braze push notifications and in-app notifications).
Relevant documentation:
https://www.braze.com/docs/developer_guide/push_notifications/deep_linking?tab=objective-c&sdktab=swift
https://www.braze.com/docs/partners/message_orchestration/deeplinking/branch_for_deeplinking/?tab=objective-c
Changelog
CHANGELOG entry:
Related issues
Fixes: https://consensyssoftware.atlassian.net/browse/GE-188
Manual testing steps
Cold & Hot Start: Deeplink Flow Requirements
Send test notifications with deeplinks from Braze and NaaP
→ Expect: Direct open, no interstitial
Open deeplinks from your notes
Open a deeplink from a QR code (e.g., generated here) pointing to: https://link.metamask.io/trending
→ Expect: Interstitial displayed before opening
Screenshots/Recordings
Before
After
Pre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist
Note
Medium Risk
Changes deep-link routing and interstitial behavior for several in-app origins, plus adds iOS-native Braze URL interception, which could affect notification/universal-link navigation and analytics flows if misrouted.
Overview
Enables Braze push-notification deep links on iOS to correctly resolve universal links by forwarding Branch domains from
BrazeDelegate.shouldOpenURLto Branch, while suppressing Braze’s default URL opening to avoid duplicate deliveries.Updates deep-link interstitial logic in
handleUniversalLinkso a defined set of trusted in-app sources (carousel, in-app notification, push notification, Braze) skip the interstitial for both public and private links; other in-app sources now show the modal. The Braze JS listener is no longer Android-gated, and corresponding tests are updated.Bumps mobile build numbers (
versionCode/CURRENT_PROJECT_VERSION/Bitrise version numbers) to4543.Reviewed by Cursor Bugbot for commit ee0c232. Bugbot is set up for automated code reviews on this repo. Configure here.