Skip to content

Conversation

@matthewwalsh0
Copy link
Member

@matthewwalsh0 matthewwalsh0 commented Jan 28, 2026

Description

  • Disable outside click on PayWithModal to prevent nested modal conflicts with NetworkFilter
  • Show "Pending" label for signed transaction status (same as submitted)

Open in GitHub Codespaces

Changelog

CHANGELOG entry: null

Related issues

Related to: #6499

Manual testing steps

  1. Initiate a MetaMask Pay transaction
  2. Click "Pay with" to open the modal
  3. Click the network filter dropdown
  4. Verify the modal doesn't close unexpectedly

Screenshots/Recordings

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Low Risk
Low risk UI behavior tweaks: status-label mapping is expanded and covered by tests, and the modal change only affects close behavior (potentially impacting expected dismissal UX).

Overview
Updates TransactionStatusLabel to treat TransactionStatus.signed the same as other transient states, mapping it to pending (or queued when isEarliestNonce is false), and adds Jest coverage for the new signed-status behavior.

Adjusts the MetaMask Pay PayWithModal to not close on outside click (isClosedOnOutsideClick={false}) to avoid nested modal conflicts when using the network filter dropdown.

Written by Cursor Bugbot for commit 52dd427. This will update automatically on new commits. Configure here.

Update signed label in activity.
@metamaskbot metamaskbot added the team-confirmations Push issues to confirmations team label Jan 28, 2026
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Jan 28, 2026

✨ Files requiring CODEOWNER review ✨

@MetaMask/confirmations (1 files, +1 -1)
  • 📁 ui/
    • 📁 pages/
      • 📁 confirmations/
        • 📁 components/
          • 📁 modals/
            • 📁 pay-with-modal/
              • 📄 pay-with-modal.tsx +1 -1

@matthewwalsh0 matthewwalsh0 marked this pull request as ready for review January 28, 2026 17:40
@matthewwalsh0 matthewwalsh0 requested a review from a team as a code owner January 28, 2026 17:40
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Jan 28, 2026

Builds ready [52dd427]
UI Startup Metrics (1337 ± 104 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13371121174310414001505
load--113493714669712001261
domContentLoaded--112893314629711921255
domInteractive--2817105182581
firstPaint--159661173152192319
backgroundConnect--24322228613248275
firstReactRender--18114562032
initialActions--107113
loadScripts--9007081211989651031
setupStore--1362951624
numNetworkReqs--211572151565
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--21811576636572722933638
load--1077894157615411361411
domContentLoaded--1058885157015211101404
domInteractive--3517183273395
firstPaint--1896947778236334
backgroundConnect--44627523813663991294
firstReactRender--26155493147
initialActions--107112
loadScripts--83967513211458741171
setupStore--1564571832
numNetworkReqs--1285025754162246
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--807657100877857951
load--67158683369739797
domContentLoaded--66758282368734790
domInteractive--241581172275
firstPaint--1046034355122212
backgroundConnect--3818121244195
firstReactRender--14103841521
initialActions--108112
loadScripts--66458082067729783
setupStore--1163651123
numNetworkReqs--221582181575
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--1323915201624215101800
load--73061812501217381021
domContentLoaded--72061212431217281014
domInteractive--38182153037115
firstPaint--163671061148180326
backgroundConnect--17313357889161471
firstReactRender--23163742529
initialActions--102011
loadScripts--71761012331197261006
setupStore--1242031418
numNetworkReqs--1375031357167262
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--14201132198416815311667
load--1139957174713012141370
domContentLoaded--1139957174713012131364
domInteractive--73332234098142
firstPaint--------
backgroundConnect--59252093677140
firstReactRender--14103961334
initialActions--103122
loadScripts--1107942172112011631299
setupStore--12698121134
numNetworkReqs--231288191879
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--27421936908678928573633
load--13641122745670412772013
domContentLoaded--13641121745670412772013
domInteractive--179385734564134344
firstPaint--------
backgroundConnect--291921474240268951
firstReactRender--22168592332
initialActions--213123
loadScripts--13231066743169912311915
setupStore--19911818234282735
numNetworkReqs--79412384589183
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--17351438246619918192137
load--14721243197014015671727
domContentLoaded--14711243197014015671727
domInteractive--903025050131167
firstPaint--------
backgroundConnect--74312724986183
firstReactRender--16123131723
initialActions--103122
loadScripts--14341227184212315131649
setupStore--2041753213127
numNetworkReqs--231287181983
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--319422008695108231934881
load--18441317720197017843243
domContentLoaded--18431317720197017833243
domInteractive--165362271264152420
firstPaint--------
backgroundConnect--329831346252349916
firstReactRender--23163342630
initialActions--204123
loadScripts--18001286714696217393174
setupStore--1659843217224777
numNetworkReqs--76372354391171
19--------
📊 Page Load Benchmark Results

Current Commit: 52dd427 | Date: 1/28/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.01s (±41ms) 🟡 | historical mean value: 1.03s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 704ms (±37ms) 🟢 | historical mean value: 720ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±13ms) 🟢 | historical mean value: 76ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.01s 41ms 967ms 1.33s 1.04s 1.33s
domContentLoaded 704ms 37ms 675ms 997ms 735ms 997ms
firstPaint 75ms 13ms 56ms 184ms 84ms 184ms
firstContentfulPaint 75ms 13ms 56ms 184ms 84ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: 88 Bytes (0%)
  • common: 20 Bytes (0%)

@matthewwalsh0 matthewwalsh0 changed the title fix: metamask pay network picker and signed status label fix: metamask pay network picker Jan 29, 2026
@matthewwalsh0 matthewwalsh0 added the no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed label Jan 29, 2026
@matthewwalsh0 matthewwalsh0 added this pull request to the merge queue Jan 29, 2026
github-merge-queue bot pushed a commit that referenced this pull request Jan 29, 2026
## **Description**

- Disable outside click on PayWithModal to prevent nested modal
conflicts with NetworkFilter
- Show "Pending" label for signed transaction status (same as submitted)

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/?quickstart=1)

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Related to:
[#6499](MetaMask/MetaMask-planning#6499)

## **Manual testing steps**

1. Initiate a MetaMask Pay transaction
2. Click "Pay with" to open the modal
3. Click the network filter dropdown
4. Verify the modal doesn't close unexpectedly

## **Screenshots/Recordings**

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk UI behavior tweaks: status-label mapping is expanded and
covered by tests, and the modal change only affects close behavior
(potentially impacting expected dismissal UX).
> 
> **Overview**
> Updates `TransactionStatusLabel` to treat `TransactionStatus.signed`
the same as other transient states, mapping it to *pending* (or *queued*
when `isEarliestNonce` is false), and adds Jest coverage for the new
signed-status behavior.
> 
> Adjusts the MetaMask Pay `PayWithModal` to **not close on outside
click** (`isClosedOnOutsideClick={false}`) to avoid nested modal
conflicts when using the network filter dropdown.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
52dd427. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Jan 29, 2026
@matthewwalsh0 matthewwalsh0 added this pull request to the merge queue Jan 29, 2026
github-merge-queue bot pushed a commit that referenced this pull request Jan 29, 2026
## **Description**

- Disable outside click on PayWithModal to prevent nested modal
conflicts with NetworkFilter
- Show "Pending" label for signed transaction status (same as submitted)

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/?quickstart=1)

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Related to:
[#6499](MetaMask/MetaMask-planning#6499)

## **Manual testing steps**

1. Initiate a MetaMask Pay transaction
2. Click "Pay with" to open the modal
3. Click the network filter dropdown
4. Verify the modal doesn't close unexpectedly

## **Screenshots/Recordings**

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk UI behavior tweaks: status-label mapping is expanded and
covered by tests, and the modal change only affects close behavior
(potentially impacting expected dismissal UX).
> 
> **Overview**
> Updates `TransactionStatusLabel` to treat `TransactionStatus.signed`
the same as other transient states, mapping it to *pending* (or *queued*
when `isEarliestNonce` is false), and adds Jest coverage for the new
signed-status behavior.
> 
> Adjusts the MetaMask Pay `PayWithModal` to **not close on outside
click** (`isClosedOnOutsideClick={false}`) to avoid nested modal
conflicts when using the network filter dropdown.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
52dd427. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Jan 29, 2026
@matthewwalsh0 matthewwalsh0 added this pull request to the merge queue Jan 29, 2026
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Jan 29, 2026
@matthewwalsh0 matthewwalsh0 added this pull request to the merge queue Jan 29, 2026
github-merge-queue bot pushed a commit that referenced this pull request Jan 29, 2026
## **Description**

- Disable outside click on PayWithModal to prevent nested modal
conflicts with NetworkFilter
- Show "Pending" label for signed transaction status (same as submitted)

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/?quickstart=1)

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Related to:
[#6499](MetaMask/MetaMask-planning#6499)

## **Manual testing steps**

1. Initiate a MetaMask Pay transaction
2. Click "Pay with" to open the modal
3. Click the network filter dropdown
4. Verify the modal doesn't close unexpectedly

## **Screenshots/Recordings**

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk UI behavior tweaks: status-label mapping is expanded and
covered by tests, and the modal change only affects close behavior
(potentially impacting expected dismissal UX).
> 
> **Overview**
> Updates `TransactionStatusLabel` to treat `TransactionStatus.signed`
the same as other transient states, mapping it to *pending* (or *queued*
when `isEarliestNonce` is false), and adds Jest coverage for the new
signed-status behavior.
> 
> Adjusts the MetaMask Pay `PayWithModal` to **not close on outside
click** (`isClosedOnOutsideClick={false}`) to avoid nested modal
conflicts when using the network filter dropdown.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
52dd427. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Jan 29, 2026
@matthewwalsh0 matthewwalsh0 added this pull request to the merge queue Jan 29, 2026
Merged via the queue into main with commit 4e69ec1 Jan 29, 2026
355 of 364 checks passed
@matthewwalsh0 matthewwalsh0 deleted the fix/metamask-pay-network-picker branch January 29, 2026 17:12
@github-actions github-actions bot locked and limited conversation to collaborators Jan 29, 2026
@metamaskbot metamaskbot added the release-13.17.0 Issue or pull request that will be included in release 13.17.0 label Jan 29, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed release-13.17.0 Issue or pull request that will be included in release 13.17.0 size-S team-confirmations Push issues to confirmations team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants