feat: braze banner#29301
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. |
03d5ea8 to
8d93c7a
Compare
d3c4054 to
ff0f0b1
Compare
82f7ef4 to
c39574d
Compare
baptiste-marchand
left a comment
There was a problem hiding this comment.
Great work! Just a few comments
|
@samir-acle we need to do this #29301 (comment) |
|
Otherwise your changes look good to me! 🚀 |
There was a problem hiding this comment.
There's a bunch of unrelated file changes. Probably a missed merge?
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ 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 38b9ee6. Configure here.
4e34f74 to
3d2a63a
Compare
4fffd7a
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection: Performance Test Selection: |
|




Description
Adds a new
BrazeBannercomponent to the wallet home screen that displays Braze campaign content as a dismissible banner card.What changed:
useBrazeBannerhook drives the state machine:loading → visible | empty,visible → dismissedcampaign_nameproperty, dismissal is also persisted to Redux and Braze is notified — so the same banner is suppressed on the following session's first render, then the guard is clearedbannersRedux slice fieldlastDismissedBrazeBanner+ migration 133getBannerForPlacement,refreshBrazeBanners,logBrazeBannerImpression,logBrazeBannerClick,dismissBrazeBannerbrazeBannerHomeremote feature flag, taking priority over the existing Carousel, wrapped inComponentErrorBoundaryChangelog
CHANGELOG entry: Added a Braze-driven promotional banner to the wallet home screen
Related issues
Fixes:
Manual testing steps
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
Adds a new Braze-powered banner surface on wallet home with deeplink routing and persistent dismissal state, touching analytics and navigation paths. Risk is mitigated by an explicit deeplink allowlist, error boundary wrapping, and extensive unit tests, but it still introduces remote-content driven UI/flows.
Overview
Adds a new Braze-backed promotional banner on wallet home, rendered via
BrazeBanner/BrazeBannerCardand controlled by a small state machine (loading/visible/empty/dismissed) inuseBrazeBannerwith warm-cache probing, event subscription, timeouts, and foreground refresh.Integrates the banner into the Wallet screen behind a new remote feature flag (
brazeBannerHomeMinVersion), taking priority over the existingCarouselwhen enabled and wrapped inComponentErrorBoundaryso failures don’t block the home UI.Extends Braze and Redux plumbing: adds core helpers for banner fetch/refresh and impression/click/dismiss logging; introduces
banners.lastDismissedBrazeBannerwith migration134to persist the last dismissed campaign; and adds a deeplink allowlist (isAllowedBrazeDeeplink) to block unsafe schemes/hosts and explicitly reject MWP connection links. Updates test mocks/registries accordingly.Reviewed by Cursor Bugbot for commit 38b9ee6. Bugbot is set up for automated code reviews on this repo. Configure here.