fix(card): cp-7.81.0 restore slide-up entry without iOS modal presentation#31031
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. |
…ard-screens-modal-presentation
CardWelcome renders on a dark purple background, so the theme's dark-content status bar was illegible in light mode. Apply light-content on focus and re-apply on transitionEnd across the whole navigator chain, since the slide-up animates on a parent navigator and the event does not bubble. Restore theme style on blur.
CardWelcome registered transitionEnd listeners across the navigator chain that unconditionally forced light-content. On a closing transition (dismissing the Card stack) this clobbered the status bar of the light-themed screen underneath. Guard on e.data.closing so only entering transitions reapply light-content.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ 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 173fb4c. Configure here.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #31031 +/- ##
=======================================
Coverage 82.92% 82.93%
=======================================
Files 5604 5604
Lines 144517 144547 +30
Branches 33588 33596 +8
=======================================
+ Hits 119835 119874 +39
+ Misses 16606 16601 -5
+ Partials 8076 8072 -4 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
These changes are scoped entirely to the MetaMask Card feature — specifically the Card Welcome/onboarding screen. SmokeMoney covers Card home screen, navbar entry, Add Funds flows, and card analytics. The Card welcome screen is the entry point for Card onboarding, so SmokeMoney is the appropriate tag. No additional tags are needed because:
Performance Test Selection: |

Description
Card screens were opening with
presentation: 'modal'onRoutes.CARD.ROOTinMainNavigator.js. On iOS that stacks the entire Card flow as a system modal (scaled/dimmed background, card-style chrome), which was not the intended full-screen experience.This change removes
presentation: 'modal'and appliesTransitionPresets.ModalSlideFromBottomIOSon the Card root screen instead. Card still slides in bottom-to-top when opened, but as a full-screen transition without the iOS modal card stack. Inner Card navigation is unchanged. Swipe-down-to-dismiss on the Card entry is preserved via the preset.Note: If this branch was merged with
mainlocally, rebase onto latestmainbefore opening the PR so the diff only contains the Card navigation change (two commits: revert modal presentation, add slide-up preset).Changelog
CHANGELOG entry: Fixed MetaMask Card opening as an iOS modal sheet; Card now opens full screen with a slide-up animation
Related issues
Fixes: Illegible status bar on the light theme when the welcome screen appears.
Manual testing steps
Screenshots/Recordings
Before
ScreenRecording_06-03-2026.12-44-27_1.MP4
After
Simulator.Screen.Recording.-.iPhone.17.Pro.Max.-.2026-06-03.at.14.46.44.mov
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
Low Risk
Navigation and UI-only changes in the Card flow with added unit tests; no auth, payments, or data-layer changes.
Overview
Card entry no longer uses iOS
presentation: 'modal'onRoutes.CARD.ROOT. It now usesTransitionPresets.ModalSlideFromBottomIOSso Card still slides up from the bottom and keeps swipe-to-dismiss, but opens full screen without the scaled/dimmed modal sheet chrome.Card welcome forces a light status bar while focused (including after non-closing
transitionEndevents on the screen and parent navigators), then restores theme-appropriate bar style on blur. Buttons and typography move to@metamask/design-system-react-native(isFullWidth, updated text variants).Tests add
TransitionPresetsmocking inMainNavigatorand coverage for status bar focus/blur and transition listener behavior inCardWelcome.Reviewed by Cursor Bugbot for commit 07a47c7. Bugbot is set up for automated code reviews on this repo. Configure here.