MetaMask / MetaMask/metamask-mobile
NFT Transfer Appears Successful but UI Still Shows NFT in Origin Account Until Manual Refresh
- Dominant language
- TypeScript
- Stars
- 3k
- Forks
- 1.7k
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 669
Description
### What is this about?
### Detailed Description
After sending an ERC-721 NFT on Ethereum mainnet using MetaMask Mobile, the transaction was marked as successful. However, the NFT still appeared in the sender's wallet and did not show in the recipient’s account until manually refreshing both accounts. A subsequent attempt to resend the NFT produced an error stating the user no longer owns the collectible, despite it still visually appearing in the origin account.
### Steps to Reproduce
1. Open MetaMask Mobile v7.53.0 (2234) on Ethereum mainnet.
2. Navigate to an ERC-721 NFT in your account.
3. Send the NFT to another wallet address.
4. Observe that the transaction confirms as successful.
5. Check both sender and recipient accounts — NFT still appears in sender’s wallet.
6. Attempt to send the NFT again — receive error stating it is no longer owned.
7. Use the “refresh” function on both accounts.
8. NFT finally appears correctly in the recipient’s account and is removed from the origin account.
### Expected vs. Actual Behavior
- **Expected:** Once the transaction is confirmed, the NFT should no longer appear in the origin account and should display in the destination account without requiring manual refresh.
- **Actual:** NFT continues to appear in the origin account post-transaction, and only updates to correct state after manual refresh.
### Environment
- MetaMask Mobile v7.53.0 (2234)
- Ethereum Mainnet
- ERC-721 NFT
- Standard MetaMask account (not hardware)
### Screenshots or Videos
https://github.com/user-attachments/assets/701261c9-9adf-4cef-843b-44d9145addee
### Scenario
_No response_
### Design
_No response_
### Technical Details
_No response_
### Threat Modeling Framework
_No response_
### Acceptance Criteria
_No response_
### Stakeholder review needed before the work gets merged
- [ ] Engineering (needed in most cases)
- [ ] Design
- [ ] Product
- [ ] QA (automation tests are required to pass before merging PRs but not all changes are covered by automation tests - please review if QA is needed beyond automation tests)
- [ ] Security
- [ ] Legal
- [ ] Marketing
- [ ] Management (please specify)
- [ ] Other (please specify)
### References
_No response_
Contributor guide
Research direction
No source files or tests are named. Start by reproducing the ERC-721 transfer flow on Ethereum mainnet with MetaMask Mobile v7.53.0, then trace how the sender and recipient NFT views update after transaction confirmation and manual refresh. Done means both accounts show the correct ownership without a manual refresh, while retrying the transfer reports the correct ownership state.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react-native, typescript
- Domain
- blockchain, mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 28/100