MetaMask / MetaMask/metamask-extension

[LATTICE] Approval tx shows as failed after rejecting swap confirmation

Open
#44,702 0 comments 0 reactions 0 assignees View on GitHub
browser-chrome INVALID-ISSUE-TEMPLATE regression-RC-13.41.0 Sev2-normal team-accounts-framework type-bug
Dominant language
TypeScript
Stars
13.2k
Forks
5.6k
Avg merge
2d 5h
Merged PRs (30d)
451

Description

## Description
When performing a swap from USDC to an ERC20 token that requires an approval transaction using a Lattice1 hardware wallet, rejecting the swap confirmation on the device causes the approval transaction to incorrectly display as failed — even though the user successfully confirmed it on the device.

## Steps to Reproduce
1. Add hardware wallet (Lattice1)
2. Initiate a swap from USDC → ERC20 token where an approval transaction is required
3. Confirm the transaction in MetaMask
4. Confirm the approval transaction on the Lattice1 device
5. Reject the swap confirmation on the Lattice1 device
6. Observe the approval transaction status in the Activity feed

## Expected Result
The approval transaction should remain marked as confirmed/successful, since the user approved it on the device. Only the swap transaction should reflect the rejected status.

## Actual Result
The approval transaction is incorrectly shown as failed, despite having been confirmed by the user on the Lattice1 device.

### Detection stage
Release Candidate

### Version
13.41.0 RC

### Build type
RC (Release Candidate)

### Browser
Chrome

### Operating system
Not specified

### Hardware wallet
Lattice1

## Additional context
Issue is specific to the two-step swap flow (approval + swap) with a hardware wallet where the swap step is rejected after the approval step is confirmed.

## Severity
To be added after bug submission by internal support / PM.

## Media

https://github.com/user-attachments/assets/6e3d1815-6e4b-4a30-bec0-78bcb610be97

---
*Filed via Claude bug reporter*

Contributor guide

Open the contributing guide

Research direction

No source file or test is named. Start by reproducing the two-step swap flow in Chrome with a Lattice1 wallet, then trace how the approval and swap statuses appear in the Activity feed. Done means a confirmed approval remains successful while only the rejected swap is marked failed.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.