Skip to content

feat: enhance speed up and cancel logic#40734

Merged
vinistevam merged 17 commits intomainfrom
vs/enhance-speed-up-cancel-logic
Mar 20, 2026
Merged

feat: enhance speed up and cancel logic#40734
vinistevam merged 17 commits intomainfrom
vs/enhance-speed-up-cancel-logic

Conversation

@vinistevam
Copy link
Copy Markdown
Contributor

@vinistevam vinistevam commented Mar 10, 2026

Description

This PR modernizes the cancel/speed-up transaction UI to use the same GasFeeModal context and gas-details patterns as the main confirmation flow, and fixes the "useConfirmContext must be used within ConfirmContextProvider" error when opening the gas modal from cancel-speedup.

What was done

  • GasFeeModal context: Extended with optional transactionMeta and editGasMode. GasFeeModalWrapper wraps modal content in ConfirmContextProvider with currentConfirmationOverride={transactionMeta} when opened from cancel-speedup so gas modals can use useConfirmContext().
  • Cancel-speedup: Removed GasFeeContextProvider. Uses GasFeeModalContextProvider(transactionMeta, editGasMode), useCancelSpeedupGasState, and useCancelSpeedupInitialGas. Renders shared gas UI (e.g. GasFeesSection) and opens the gas modal via context.
  • Gas modals/hooks: AdvancedEIP1559Modal, AdvancedGasPriceModal, and useGasFeeEstimateLevelOptions use useConfirmContext() again; no useTransactionForGasModal in the modal flow.
  • Confirm context: ConfirmContextProvider supports optional currentConfirmationOverride; when set, route sync and navigate-on-dismiss are skipped so the gas modal can be used outside the confirm route.
  • Hooks: useCancelSpeedupGasState provides effective transaction and actions; useCancelSpeedupInitialGas runs the initial gas rule (medium vs tenPercentIncreased) when the cancel-speedup modal is open.

Open in GitHub Codespaces

Changelog

CHANGELOG entry: Fixed gas edit opening from cancel/speed-up transaction flow and aligned cancel-speedup gas UI with the main confirmation flow.

Related issues

Fixes: https://github.com/MetaMask/MetaMask-planning/issues/7051

Manual testing steps

  1. Start the extension and have a pending transaction.
  2. Open Activity, open the cancel or speed-up action for that transaction so the cancel-speedup modal is shown.
  3. Click the Edit (gas) icon/button.
  4. Confirm the gas modal opens with no error.
  5. Change gas option or open advanced gas, save/cancel, and confirm behavior is correct.
  6. Confirm the initial gas selection (medium vs +10%) still applies when the cancel-speedup modal first opens.

Screenshots/Recordings

cancel_new_ex.webm

Before

After

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

Medium Risk
Touches transaction replacement gas calculation and confirmation/gas modal context wiring; mistakes could cause underpriced replacements or broken cancel/speed-up UX, but changes are localized and well-covered by tests.

Overview
Modernizes the cancel/speed-up transaction modal to use the shared confirmation gas modal flow. The cancel/speed-up UI now uses GasFeeModalContextProvider + GasFeeModalWrapper, shared fee display hooks (useFeeCalculations, useEIP1559TxFees), and new hooks (useCancelSpeedupGasState, useCancelSpeedupInitialGas) instead of the legacy GasFeeContextProvider/inline logic.

Fixes gas modal usage outside the confirm route. ConfirmContextProvider now supports currentConfirmationOverride, and GasFeeModalWrapper wraps the modal in ConfirmContextProvider when opened from cancel/speed-up, preventing useConfirmContext errors; related gas UI components add fallback estimate sourcing and safer optional context access.

Hardens replacement transaction gas pricing. Adds getGasValuesForReplacement and updates useTransactionFunctions to ensure cancel/speed-up transactions use at least previousGas × CANCEL_RATE/SPEED_UP_RATE, while persisting previousGas when the modal opens and disabling confirm until it exists.

Tests and policy updates. Updates/extends unit tests and E2E page objects/specs for the new modal behavior and labels (e.g. "Site suggested"), and expands LavaMoat MV3 policies to allow new controller dependencies (@metamask/gas-fee-controller, @metamask/polling-controller, nonce-tracker deps).

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

@vinistevam vinistevam added the team-confirmations Push issues to confirmations team label Mar 10, 2026
@github-actions
Copy link
Copy Markdown
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Mar 10, 2026

✨ Files requiring CODEOWNER review ✨

@MetaMask/confirmations (20 files, +601 -250)
  • 📁 ui/
    • 📁 pages/
      • 📁 confirmations/
        • 📁 cancel-speedup/
          • 📄 cancel-speedup.test.tsx +93 -52
          • 📄 cancel-speedup.tsx +115 -137
        • 📁 components/
          • 📁 confirm/
            • 📁 info/
              • 📁 hooks/
                • 📄 useFeeCalculations.test.ts +1 -1
                • 📄 useFeeCalculations.ts +5 -2
          • 📁 edit-gas-fee-popover/
            • 📁 network-statistics/
              • 📁 status-slider/
                • 📄 status-slider.js +10 -3
                • 📄 status-slider.test.js +14 -3
                • 📄 network-statistics.js +13 -2
                • 📄 network-statistics.test.js +63 -0
              • 📄 edit-gas-fee-popover.stories.tsx +32 -13
              • 📄 edit-gas-fee-popover.test.js +4 -0
          • 📁 gas-timing/
            • 📄 gas-timing.component.js +28 -5
            • 📄 gas-timing.component.test.js +73 -1
          • 📁 modals/
            • 📁 advanced-eip1559-modal/
              • 📄 advanced-eip1559-modal.tsx +14 -7
            • 📁 advanced-gas-price-modal/
              • 📄 advanced-gas-price-modal.tsx +10 -5
            • 📁 gas-fee-modal/
              • 📄 gas-fee-modal.tsx +0 -1
        • 📁 context/
          • 📁 confirm/
            • 📄 index.tsx +15 -3
          • 📁 dapp-swap/
            • 📄 index.tsx +8 -0
          • 📁 gas-fee-modal/
            • 📄 index.tsx +48 -5
        • 📁 hooks/
          • 📁 gas/
            • 📄 useGasFeeEstimateLevelOptions.test.ts +26 -4
            • 📄 useGasFeeEstimateLevelOptions.ts +29 -6

👨‍🔧 @MetaMask/core-extension-ux (1 files, +1 -13)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 transaction-list-item/
          • 📄 transaction-list-item.component.js +1 -13

📜 @MetaMask/policy-reviewers (4 files, +308 -4)
  • 📁 lavamoat/
    • 📁 webpack/
      • 📁 mv3/
        • 📁 beta/
          • 📄 policy.json +77 -1
        • 📁 experimental/
          • 📄 policy.json +77 -1
        • 📁 flask/
          • 📄 policy.json +77 -1
        • 📁 main/
          • 📄 policy.json +77 -1

Tip

Follow the policy review process outlined in the LavaMoat Policy Review Process doc before expecting an approval from Policy Reviewers.


🧪 @MetaMask/qa (2 files, +87 -9)
  • 📁 test/
    • 📁 e2e/
      • 📁 page-objects/
        • 📁 pages/
          • 📁 confirmations/
            • 📄 speed-up-and-cancel-modal.ts +87 -0
          • 📁 home/
            • 📄 activity-list.ts +0 -9

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Mar 10, 2026

Builds ready [d67145b]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account31927836438350364
total31927836438350364
Confirm Txconfirm_tx6161614761691061696169
total6161614761691061696169
Bridge User Actionsbridge_load_page26221429230283292
bridge_load_asset_picker22116727837237278
bridge_search_token73671675113750751
total1227121012461512461246
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14291194199411714881615
load1195999166610112491350
domContentLoaded1188995165410112441341
domInteractive2917122192571
firstPaint159701193130211278
backgroundConnect21319426213215243
firstReactRender19124652129
initialActions105124
loadScripts992804144610010441146
setupStore1363651521
numNetworkReqs312295202284
Power User HomeuiStartup20341679262517021182344
load11891048189017311701701
domContentLoaded11731035178616411541658
domInteractive39201862938108
firstPaint196761802187228363
backgroundConnect30626348833317365
firstReactRender25176282739
initialActions108113
loadScripts95482715401589361430
setupStore1785471931
numNetworkReqs78362845284172
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2192172222220222
srpButtonToSrpForm96949929699
confirmSrpToPwForm22222312323
pwFormToMetricsScreen16161701617
metricsToWalletReadyScreen17171701717
doneButtonToHomeScreen66459873661714736
openAccountMenuToAccountListLoaded293929322947629472947
total4012392241247540554124
Onboarding New WalletcreateWalletToSocialScreen2202182222221222
srpButtonToPwForm1071051081108108
createPwToRecoveryScreen888088
skipBackupToMetricsScreen35343613636
agreeButtonToOnboardingSuccess16151601616
doneButtonToAssetList71348310492259111049
total1100870143322312951433
Asset DetailsassetClickToPriceChart13210516722138167
total13210516722138167
Solana Asset DetailsassetClickToPriceChart78708358383
total78708358383
Import Srp HomeloginToHomeScreen21762002247618823202476
openAccountMenuAfterLogin633890197290
homeAfterImportWithNewWallet2401229025128024392512
total46414435492319948364923
Send TransactionsopenSendPageFromHome20133372433
selectTokenToSendFormLoaded19182011920
reviewTransactionToConfirmationPage86684590223884902
total90588393319919933
SwapopenSwapPageFromHome531979217279
fetchAndDisplaySwapQuotes268226802684226822684
total2746273627591027542759
🌐 Dapp Page Load Benchmarks

Current Commit: d67145b | Date: 3/10/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±44ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 739ms (±41ms) 🟢 | historical mean value: 740ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 81ms (±11ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 44ms 1.02s 1.37s 1.09s 1.37s
domContentLoaded 739ms 41ms 714ms 1.04s 768ms 1.04s
firstPaint 81ms 11ms 64ms 176ms 88ms 176ms
firstContentfulPaint 81ms 11ms 64ms 176ms 88ms 176ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.15 MiB (100%)
  • ui: 8.2 MiB (100%)
  • common: 10.99 MiB (100%)

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Mar 10, 2026

Builds ready [f8b973b]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account28626530415294304
total28626530415294304
Confirm Txconfirm_tx6031600460692560526069
total6031600460692560526069
Bridge User Actionsbridge_load_page22119525926246259
bridge_load_asset_picker20817625428225254
bridge_search_token74170078635770786
total1170108212417012351241
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14211232191711214531624
load1183101016019512171362
domContentLoaded117699315659312121340
domInteractive281886162577
firstPaint164691372177197296
backgroundConnect21119326212212241
firstReactRender18133032023
initialActions107124
loadScripts98180213569010131141
setupStore1374761521
numNetworkReqs312289192282
Power User HomeuiStartup3102171813168207538674995
load12941104184017113521678
domContentLoaded12731091182716413291630
domInteractive37191592635114
firstPaint244781840231302384
backgroundConnect105027210823165212012943
firstReactRender26176682740
initialActions105114
loadScripts1047880160415710941368
setupStore1573751826
numNetworkReqs873621544104178
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2192162232219223
srpButtonToSrpForm93929419394
confirmSrpToPwForm22212312223
pwFormToMetricsScreen15151601516
metricsToWalletReadyScreen16151711617
doneButtonToHomeScreen62858971448644714
openAccountMenuToAccountListLoaded2907289429361729022936
total3881385339252938893925
Onboarding New WalletcreateWalletToSocialScreen2202182221221222
srpButtonToPwForm1091071111110111
createPwToRecoveryScreen888088
skipBackupToMetricsScreen35333713637
agreeButtonToOnboardingSuccess16151701617
doneButtonToAssetList55547367675603676
total9458641064759941064
Asset DetailsassetClickToPriceChart12810916119135161
total12810916119135161
Solana Asset DetailsassetClickToPriceChart81758858388
total81758858388
Import Srp HomeloginToHomeScreen2035196120975520962097
openAccountMenuAfterLogin68657347073
homeAfterImportWithNewWallet2484236026118625422611
total45834485475510346464755
Send TransactionsopenSendPageFromHome342157133957
selectTokenToSendFormLoaded19172121921
reviewTransactionToConfirmationPage8468458471847847
total8938899046892904
SwapopenSwapPageFromHome36274364343
fetchAndDisplaySwapQuotes2699268227181427112718
total273527252744827432744
🌐 Dapp Page Load Benchmarks

Current Commit: f8b973b | Date: 3/10/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±43ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 749ms (±40ms) 🟢 | historical mean value: 735ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 83ms (±11ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 43ms 1.03s 1.36s 1.11s 1.36s
domContentLoaded 749ms 40ms 721ms 1.03s 778ms 1.03s
firstPaint 83ms 11ms 68ms 176ms 100ms 176ms
firstContentfulPaint 83ms 11ms 68ms 176ms 100ms 176ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.15 MiB (100%)
  • ui: 8.22 MiB (100%)
  • common: 10.99 MiB (100%)

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Mar 10, 2026

Builds ready [3d4bdab]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2782732823279282
total2782732823279282
Confirm Txconfirm_tx6066603760841960816084
total6066603760841960816084
Bridge User Actionsbridge_load_page2122092163216216
bridge_load_asset_picker19317920310203203
bridge_search_token7167107204717720
total111311081122511131122
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14541207188511515131648
load12161008166510612731382
domContentLoaded12061000157010012661362
domInteractive3016120202579
firstPaint1557049081210282
backgroundConnect22019740028223262
firstReactRender2111159152234
initialActions108124
loadScripts100780613599910651161
setupStore1373251521
numNetworkReqs312287192582
Power User HomeuiStartup2413169211223137722704470
load11981037172116212081598
domContentLoaded11811028170215311961551
domInteractive3820159223883
firstPaint1717545783230315
backgroundConnect52126158599193341596
firstReactRender2617154152740
initialActions108113
loadScripts96581514721449841329
setupStore1664871730
numNetworkReqs77362404979185
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2192172212221221
srpButtonToSrpForm98969919899
confirmSrpToPwForm22222312323
pwFormToMetricsScreen16151601616
metricsToWalletReadyScreen17161711717
doneButtonToHomeScreen65359972248679722
openAccountMenuToAccountListLoaded293129192936729352936
total3950390640295039584029
Onboarding New WalletcreateWalletToSocialScreen2192172191219219
srpButtonToPwForm1091031144111114
createPwToRecoveryScreen888088
skipBackupToMetricsScreen36353813638
agreeButtonToOnboardingSuccess16151711617
doneButtonToAssetList64161866318653663
total1027100010511910371051
Asset DetailsassetClickToPriceChart13311216318137163
total13311216318137163
Solana Asset DetailsassetClickToPriceChart947912216104122
total947912216104122
Import Srp HomeloginToHomeScreen1902186319734419021973
openAccountMenuAfterLogin523770146770
homeAfterImportWithNewWallet26132395298521526992985
total46734368493021748714930
Send TransactionsopenSendPageFromHome23183262732
selectTokenToSendFormLoaded19181901919
reviewTransactionToConfirmationPage994848111511910811115
total1036885116511911191165
SwapopenSwapPageFromHome24202722527
fetchAndDisplaySwapQuotes268726812693426892693
total270927042714427122714
🌐 Dapp Page Load Benchmarks

Current Commit: 3d4bdab | Date: 3/10/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±42ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 733ms (±38ms) 🟢 | historical mean value: 727ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 82ms (±11ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 42ms 1.02s 1.33s 1.09s 1.33s
domContentLoaded 733ms 38ms 709ms 1.00s 778ms 1.00s
firstPaint 82ms 11ms 68ms 176ms 92ms 176ms
firstContentfulPaint 82ms 11ms 68ms 176ms 92ms 176ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.15 MiB (100%)
  • ui: 8.22 MiB (100%)
  • common: 10.99 MiB (100%)

@vinistevam vinistevam marked this pull request as ready for review March 10, 2026 12:32
@vinistevam vinistevam requested review from a team as code owners March 10, 2026 12:32
@cryptotavares
Copy link
Copy Markdown
Contributor

Review — posted on behalf of @cryptotavares

I reviewed this PR as part of tracking Q1 confirmation work. Architecture in issue-7051 was written by the implementor and has no recorded team sign-off or discussion comments. The spec is detailed, but there is no evidence of collaborative pre-approval before 4 reviewer teams were engaged. The confirmations team review is especially critical here.

Beyond the process concern, the diff contains two bugs that I believe will block users from submitting cancel/speedup on production:


BUG 1 — HIGH: EIP-1559 cancel/speedup confirm button permanently disabled

File: ui/pages/confirmations/hooks/useCancelSpeedupInitialGas.ts (approx. line 70)

const hasEIP1559Gas =
  txParams?.maxFeePerGas &&
  txParams?.maxPriorityFeePerGas &&
  txParams?.gasLimit;   // ← wrong field

txParams.gasLimit is typically undefined on real transactions — the field is txParams.gas. Because hasEIP1559Gas evaluates falsy, updatePreviousGasParams is never dispatched, effectiveTransaction.previousGas is never populated, and the Confirm button (disabled={!effectiveTransaction.previousGas}) stays permanently disabled for EIP-1559 transactions.

The fix is already demonstrated elsewhere in the same PR (useCancelSpeedupGasState.ts uses txParams?.gasLimit ?? txParams?.gas correctly). The guard should be:

txParams?.gasLimit ?? txParams?.gas

BUG 2 — HIGH: Legacy (non-EIP-1559) cancel/speedup always blocked

Same hasEIP1559Gas path: for gasPrice-only transactions (BSC, any non-EIP-1559 network), maxFeePerGas and maxPriorityFeePerGas are absent, so the condition is always falsy, previousGas is never set, and the Confirm button is permanently disabled. Users on non-EIP-1559 chains cannot cancel or speed up transactions at all after this PR.

A separate path is needed to set previousGas for legacy transactions using gasPrice.


BUG 3 — MEDIUM: Tests assert known-wrong fee values

File: ui/pages/confirmations/cancel-speedup/cancel-speedup.test.tsx (approx. lines 423–424)

The test file contains inline comments acknowledging that the expected fee constants are incorrect (the author notes the intended values should be higher). Merging these tests locks in a broken fee display as the regression baseline. Either fix the underlying fee calculation and update the constants, or do not assert specific fee strings until the logic is correct.


Minor: Dead state

File: ui/pages/confirmations/hooks/useCancelSpeedupGasState.ts (approx. line 2023)

retryTxMeta state is written but never read — effectiveTransaction is derived entirely from Redux. Cosmetic, but could mislead maintainers.


Bugs 1 and 2 together mean the cancel/speedup flow would be broken for all users on both EIP-1559 and legacy networks. Would recommend blocking merge until these are resolved.

@metamaskbot
Copy link
Copy Markdown
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

✅ lavamoat/browserify/beta/policy.json changes match main/policy.json policy changes
✅ lavamoat/browserify/experimental/policy.json changes match main/policy.json policy changes
✅ lavamoat/browserify/flask/policy.json changes match main/policy.json policy changes
✅ lavamoat/webpack/mv2/beta/policy.json changes match mv2/main/policy.json policy changes
✅ lavamoat/webpack/mv2/experimental/policy.json changes match mv2/main/policy.json policy changes
✅ lavamoat/webpack/mv2/flask/policy.json changes match mv2/main/policy.json policy changes
👀 lavamoat/webpack/mv3/beta/policy.json changes differ from mv3/main/policy.json policy changes
👀 lavamoat/webpack/mv3/experimental/policy.json changes differ from mv3/main/policy.json policy changes
👀 lavamoat/webpack/mv3/flask/policy.json changes differ from mv3/main/policy.json policy changes

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

@sonarqubecloud
Copy link
Copy Markdown

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Mar 20, 2026

Builds ready [6475ccd]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account36626651792348517
total36626651792348517
Confirm Txconfirm_tx605360456065860556065
total605360456065860556065
Bridge User Actionsbridge_load_page23821425817250258
bridge_load_asset_picker19416821519215215
bridge_search_token73472174810739748
total1164113911942011651194
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14701229198010715051641
load12201012168210012521385
domContentLoaded1213100916759812481377
domInteractive3017135202780
firstPaint1617444080213282
backgroundConnect21920226913221242
firstReactRender19133442127
initialActions106123
loadScripts101180014649810461173
setupStore1473751522
numNetworkReqs393186164080
Power User HomeuiStartup58882225150832566676611139
load13561175191813613841664
domContentLoaded13381161190413313611638
domInteractive44193705434143
firstPaint283951648205316532
backgroundConnect254329311505230636446746
firstReactRender24164152535
initialActions108114
loadScripts1102946162612611301402
setupStore1688791728
numNetworkReqs2408845977299347
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2192182201220220
srpButtonToSrpForm93919519495
confirmSrpToPwForm22222302223
pwFormToMetricsScreen15151601516
metricsToWalletReadyScreen16161601616
doneButtonToHomeScreen51940861072539610
openAccountMenuToAccountListLoaded3061289631409731103140
total39413780408410340124084
Onboarding New WalletcreateWalletToSocialScreen2192192190219219
srpButtonToPwForm1091071101109110
createPwToRecoveryScreen989099
skipBackupToMetricsScreen41384534345
agreeButtonToOnboardingSuccess16151711617
doneButtonToAssetList59151666556621665
total98591310535410191053
Asset DetailsassetClickToPriceChart55495955959
total55495955959
Solana Asset DetailsassetClickToPriceChart1034715037134150
total1034715037134150
Import Srp HomeloginToHomeScreen2349228124005224002400
openAccountMenuAfterLogin59585915959
homeAfterImportWithNewWallet38330245354395453
total33452767471774835774717
Send TransactionsopenSendPageFromHome28253332733
selectTokenToSendFormLoaded35343813638
reviewTransactionToConfirmationPage1152906168829912721688
total1221970176630213331766
SwapopenSwapPageFromHome1249915724135157
fetchAndDisplaySwapQuotes270426912714927122714
total2825280228612228262861
🌐 Dapp Page Load Benchmarks

Current Commit: 6475ccd | Date: 3/20/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±44ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 739ms (±41ms) 🟢 | historical mean value: 729ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 81ms (±9ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 44ms 1.02s 1.37s 1.09s 1.37s
domContentLoaded 739ms 41ms 716ms 1.04s 772ms 1.04s
firstPaint 81ms 9ms 64ms 160ms 88ms 160ms
firstContentfulPaint 81ms 9ms 64ms 160ms 88ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: 58 Bytes (0%)
  • ui: -46.23 KiB (-0.54%)
  • common: 20 Bytes (0%)

@vinistevam vinistevam requested a review from jpuri March 20, 2026 11:25
@vinistevam vinistevam added this pull request to the merge queue Mar 20, 2026
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Mar 20, 2026
@vinistevam vinistevam added this pull request to the merge queue Mar 20, 2026
Merged via the queue into main with commit 156f7fb Mar 20, 2026
206 of 207 checks passed
@vinistevam vinistevam deleted the vs/enhance-speed-up-cancel-logic branch March 20, 2026 14:14
@github-actions github-actions bot locked and limited conversation to collaborators Mar 20, 2026
@metamaskbot metamaskbot added the release-13.25.0 Issue or pull request that will be included in release 13.25.0 label Mar 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.25.0 Issue or pull request that will be included in release 13.25.0 size-XL team-confirmations Push issues to confirmations team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants