refactor: present account screens as right-sliding cards - #33670
Conversation
Convert AccountSelector and related account-management screens from transparentModal presentations to card presentations with slide_from_right animation and full-screen back gesture, so they open from the right and support swipe-back. - Extract AccountSelector out of ROOT_MODAL_FLOW into AppFlow as a direct card - Move AddWallet into AppFlow (was only reachable via RootModalFlow) - Move ACCOUNT_SELECTOR route from SHEET to MULTICHAIN_ACCOUNTS namespace - Apply card/slide_from_right to AccountGroupDetails, ImportPrivateKeyView, ImportSRPView, ConnectHardwareWalletFlow, and RevealPrivateCredential Co-authored-by: Cursor <cursoragent@cursor.com>
PR template — items to address before "Ready for review"Warnings — informational, address before merging:
See docs/readme/ready-for-review.md for the full Definition of Ready for Review. |
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 4256841. Configure here.
…allet AddWallet now lives in AppFlow (same navigator as the HW flow), so the previous navigate()+goBack() pattern dismissed the just-pushed HW flow instead of AddWallet. Use StackActions.replace to swap AddWallet for the HW flow so completion pop(2) still lands on AccountSelector. Co-authored-by: Cursor <cursoragent@cursor.com>
🧪 Flaky unit test detectionRun history flaky detectionHistorical failure rate is a hint, not proof — review each suggestion in context. See the flaky-test-detection skill for the full pattern reference and manual audit workflow. Failures / runs sampled per window:
AI-detected flaky patterns
|
SelectHardwareWallet renders its own HeaderStandard, so hide the native-stack default header in ConnectHardwareWalletFlow to avoid a doubled header. Co-authored-by: Cursor <cursoragent@cursor.com>
createAccountSelectorNavDetails now navigates straight to Routes.MULTICHAIN_ACCOUNTS.ACCOUNT_SELECTOR, so renderBuildQuoteWithRoutes must register the picker at that route on the root stack instead of under ROOT_MODAL_FLOW. Otherwise sell BuildQuote account switching cannot open the accounts list. Co-authored-by: Cursor <cursoragent@cursor.com>
AccountSelector now navigates straight to the AccountSelector route with isEvmOnly/disableAddAccountButton params instead of routing through RootModalFlow. Update the four affected assertions accordingly. Co-authored-by: Cursor <cursoragent@cursor.com>
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection: Performance Test Selection: |
|
⚡ Performance Test Results
❌ 3 tests failed · 20 tests · 1 device 📱 Devices tested (1)Android: Google Pixel 8 Pro (v14.0) ❌ Failed Tests (3)
@metamask-onboarding-team
@mm-perps-engineering-team
✅ Passed Tests (17)
Branch: |
ccharly
left a comment
There was a problem hiding this comment.
LGTM (not tested, just checked the recording)




Description
Account management screens (
AccountSelector,AddWallet,AccountGroupDetails, import/hardware flows, and Reveal Secret Recovery Phrase) were presented astransparentModal, so on iOS theslide_from_rightanimation was ignored and they slid up from the bottom with no swipe-back gesture.This converts them to
presentation: 'card'withslide_from_right+ full-screen gesture so they open from the right and support swipe-to-go-back.AccountSelectoris also extracted out ofROOT_MODAL_FLOWintoAppFlowas a direct screen, and its route is moved from theSHEETnamespace toMULTICHAIN_ACCOUNTSsince it is a view, not a sheet.Changelog
CHANGELOG entry: Account, wallet, and import screens now open as right-sliding cards with swipe-back instead of bottom-up modals.
Related issues
Fixes: https://consensyssoftware.atlassian.net/browse/MUL-1773
Manual testing steps
Screenshots/Recordings
Screen.Recording.2026-07-22.at.3.23.33.PM.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
Made with Cursor