MetaMask / MetaMask/metamask-mobile
[Bug]: EIP-681 QR code scans no longer register after scan button UI relocation (iOS)
- Dominant language
- TypeScript
- Stars
- 3k
- Forks
- 1.7k
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 669
Description
**Describe the bug**
EIP-681 QR codes that previously triggered a "Transfer request" screen now fail to register when scanned. Scanning worked previous when the scan button was located at the top of the main wallet UI (now moved one menu level down). Since that change, the scanner opens but does not parse EIP-681 URIs.
I'm building an app that generates these QR codes (USDC transfers on Base). Same QR codes, same format, worked before the update, and now they don't.
**Expected behavior**
Scanner should parse the EIP-681 URI and display the "Transfer request" confirmation screen (token, amount, network, recipient, fees).
**Steps to reproduce**
1. Open MetaMask Mobile v7.69.1 on iOS
2. Tap the scan button from the main wallet screen
3. Scan a valid EIP-681 QR code (e.g., ethereum:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913@8453/transfer?address=0x65F6BeC9862e793094B54e6f50bb236430C4b513&uint256=5e-1 - QR code for this URI attached above)
4. Scanner does not register the code
**Error messages or log output**
```shell
None
```
**Where was this bug found?**
Live version (from official store)
**Version**
7.69.1
**Build number**
4015
**Build type**
None
**Device**
iPhone 15 Pro Max
**Operating system**
iOS
**Additional context**
Running: iOS 26.3.1 (a)
Possibly related: #26715 - the multichain redesign in v7.68.0 broke the "Request Payment" EIP-681 generation flow. This may be the other side of that same regression, where the scanner no longer routes EIP-681 URIs through the parser.
**Severity**
High impact for developers building payment flows on EIP-681. Completely blocks scan-to-pay functionality - no workaround available. Visible to all users who attempt to scan an EIP-681 QR code.
Contributor guide
Research direction
Reproduce the scan flow on MetaMask Mobile v7.69.1 for iOS using the EIP-681 URI and inspect the scan-button relocation and parser routing. Compare the current behavior with the expected Transfer request confirmation screen, ensuring the URI registers and displays the token, amount, network, recipient, and fees.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, react-native, typescript
- Domain
- blockchain, mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100