refactor: replace native ActionSheet with BottomSheet for NFT actions#27798
Conversation
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.
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
No dedicated E2E tests for NFT grid interactions were found in the codebase (no .e2e.* files reference NFT/collectible). The changes are contained to NFT UI components and don't affect core flows like swaps, confirmations, accounts, or network management.
Performance Test Selection: |
|
✅ E2E Fixture Validation — Schema is up to date |
|




Description
NftGridItemBottomSheet.tsx(new) — Design-system bottom sheet replacing the nativeActionSheet, with the same "Refresh metadata / Remove / Cancel" actions. Follows the identical state-driven visibility pattern asRemoveTokenBottomSheet.NftGrid.tsx— SwappedNftGridItemActionSheet+actionSheetRef+useEffectfor the newNftGridItemBottomSheetdriven bylongPressedCollectible !== null.NFTsSection.tsx— Homepage NFT section now wires long-press to open the bottom sheet (was previously anoop).RemoveTokenBottomSheet.tsx— Migrated the deprecatedBottomSheetHeaderimport from the component-library to@metamask/design-system-react-native.Changelog
CHANGELOG entry: updated NFT long-press actions to use a bottom sheet consistent with the token list experience
Related issues
Fixes: https://consensyssoftware.atlassian.net/browse/ASSETS-2958 & https://consensyssoftware.atlassian.net/browse/ASSETS-2971
Manual testing steps
Screenshots/Recordings
Before
After
Screen.Recording.2026-03-23.at.12.55.06.mov
Pre-merge author checklist
Pre-merge reviewer checklist
Note
Medium Risk
Moderate UI refactor that changes the long-press interaction path for NFT actions and adds controller calls behind new bottom-sheet handlers; regressions would mainly impact NFT refresh/remove flows.
Overview
Replaces the native
ActionSheet-based NFT long-press menu with a design-systemNftGridItemBottomSheet, driven by state (isVisible+onClose) instead of an imperative ref.Enables long-press actions in both
NftGridand the homepageNFTsSection(previously a no-op on homepage), and adds/updates tests to assert the bottom sheet opens and that refresh/remove invokeNftController.addNft/removeAndIgnoreNftwith the resolvednetworkClientId.Aligns token removal UI by switching
RemoveTokenBottomSheetto useBottomSheetHeaderfrom@metamask/design-system-react-native.Written by Cursor Bugbot for commit bdc48bd. This will update automatically on new commits. Configure here.