Skip to content

feat(extension): cowswap intent submission via bridge-status controller#40483

Open
oscarwroche wants to merge 85 commits intomainfrom
cowswap-intent-extension
Open

feat(extension): cowswap intent submission via bridge-status controller#40483
oscarwroche wants to merge 85 commits intomainfrom
cowswap-intent-extension

Conversation

@oscarwroche
Copy link

@oscarwroche oscarwroche commented Feb 27, 2026

Description

This PR adds intent-based swap submission to the MetaMask extension for RWA / CowSwap flows.

It wires the extension bridge flow to the new submitIntent path in BridgeStatusController, enables typed-data signing through the bridge-status controller messenger, and updates activity / transaction-details handling for intent orders so that pending, failed, approval, and detail states render correctly.

Open in GitHub Codespaces

Changelog

CHANGELOG entry: Added CowSwap intent submission through the bridge status controller.

Manual testing steps

  1. Check out this branch in metamask-extension and install dependencies with yarn.
  2. Use a build/config that points the extension to a bridge API that supports CowSwap intents.
  3. Start the extension and open the swap flow with an RWA token pair that returns an intent quote.
  4. Confirm that submitting the quote calls the intent path and successfully reaches /submitOrder on the bridge API.
  5. Verify the hardware-wallet flow:
    • for a hardware wallet account, the awaiting-signatures screen appears before signing
    • after signing completes, the flow exits the awaiting screen and lands in activity
  6. Verify activity / details behavior for intent swaps:
    • pending intent swaps show Pending rather than Queued
    • cancel is not shown for pending intent swaps
    • approval rows keep their own status and do not inherit a failed swap status
    • transaction details open correctly for intent swaps and do not show an empty nonce row
  7. Verify a failed intent submission shows failed swap state in activity and details.

Screenshots/Recordings

After

Screenshot 2026-03-10 at 14 29 32
Screen.Recording.2026-03-10.at.15.24.11.mov

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 submission flow (including new submitIntent RPC path) and activity/details status logic, which could affect how swaps are sent and displayed. Changes are scoped to bridge/intent handling but include new signing permissions and selector fallbacks that need careful validation.

Overview
Adds a new intent submission path for bridge/swap quotes by wiring submitIntent through the background connection and UI (useSubmitBridgeTransaction now routes intent quotes to submitBridgeIntent, while continuing to use submitBridgeTx for non-intent quotes).

Updates bridge activity/detail rendering to support intent orders keyed by originalTransactionId (new selectors/lookup fallbacks, tx-details navigation by hash or tx meta id) and avoids mislabeling approval rows as failed bridge activity; also adjusts UX to show Pending for submitted intent swaps (even when not earliest nonce), hide Cancel, and omit the nonce row when missing.

Upgrades @metamask/bridge-controller/bridge-status-controller to 68.0.0, adds KeyringController:signTypedMessage to the bridge-status controller messenger, and updates LavaMoat policies accordingly.

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

@github-actions
Copy link
Contributor

github-actions bot commented Feb 27, 2026

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.

@metamaskbot metamaskbot added the team-be-trade BE Trade team label Feb 27, 2026
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 27, 2026

✨ Files requiring CODEOWNER review ✨

👨‍🔧 @MetaMask/core-extension-ux (3 files, +208 -5)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 transaction-list-item/
          • 📄 transaction-list-item.component.js +29 -5
          • 📄 transaction-list-item.component.unified-swap-bridge.test.tsx +51 -0
      • 📁 multichain/
        • 📁 activity-v2/
          • 📄 hooks.test.tsx +128 -0

📜 @MetaMask/policy-reviewers (8 files, +8 -0)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +1 -0
      • 📁 experimental/
        • 📄 policy.json +1 -0
      • 📁 flask/
        • 📄 policy.json +1 -0
      • 📁 main/
        • 📄 policy.json +1 -0
    • 📁 webpack/
      • 📁 mv2/
        • 📁 beta/
          • 📄 policy.json +1 -0
        • 📁 experimental/
          • 📄 policy.json +1 -0
        • 📁 flask/
          • 📄 policy.json +1 -0
        • 📁 main/
          • 📄 policy.json +1 -0

Tip

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


🔄 @MetaMask/swaps-engineers (10 files, +602 -89)
  • 📁 ui/
    • 📁 ducks/
      • 📁 bridge/
        • 📄 selectors.test.ts +1 -1
      • 📁 bridge-status/
        • 📄 actions.ts +31 -22
        • 📄 selectors.test.ts +102 -0
        • 📄 selectors.ts +68 -0
    • 📁 hooks/
      • 📁 bridge/
        • 📄 useBridgeTxHistoryData.ts +36 -8
    • 📁 pages/
      • 📁 bridge/
        • 📁 hooks/
          • 📄 useBridgeTokenDisplayData.ts +22 -4
          • 📄 useSubmitBridgeTransaction.test.tsx +189 -33
          • 📄 useSubmitBridgeTransaction.ts +20 -12
        • 📁 transaction-details/
          • 📄 transaction-details.test.tsx +119 -0
          • 📄 transaction-details.tsx +14 -9

@oscarwroche
Copy link
Author

I have read the CLA Document and I hereby sign the CLA

@oscarwroche oscarwroche changed the title Cowswap intent extension feat(extension): cowswap intent submission via bridge-status controller Feb 27, 2026
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 27, 2026

Builds ready [9335bcc]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2792722896278289
total2792722896278289
Confirm Txconfirm_tx608260736086660866086
total608260736086660866086
Bridge User Actionsbridge_load_page25123427716260277
bridge_load_asset_picker1831811883188188
bridge_search_token7207107287723728
total1164113012062811881206
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14201162179911514611645
load1191982145010412351400
domContentLoaded1184976144410312271392
domInteractive2917106192581
firstPaint1557039579205359
backgroundConnect20819325211211232
firstReactRender20133952131
initialActions106123
loadScripts991776124610310351191
setupStore1363161726
numNetworkReqs312294202286
Power User HomeuiStartup17371375231216017892029
load11741048180414211711595
domContentLoaded11591038172513911551557
domInteractive35181322432104
firstPaint209701750203245395
backgroundConnect29025639023301331
firstReactRender22155972435
initialActions105113
loadScripts94783515031349361335
setupStore1584271633
numNetworkReqs58361602657142
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2172162191217219
srpButtonToSrpForm91909319193
confirmSrpToPwForm21212202222
pwFormToMetricsScreen15141501515
metricsToWalletReadyScreen16151601616
doneButtonToHomeScreen5845745958587595
openAccountMenuToAccountListLoaded74447051804841578298048
total85377993899244589288992
Onboarding New WalletcreateWalletToSocialScreen2202192231221223
srpButtonToPwForm1091071101109110
createPwToRecoveryScreen989099
skipBackupToMetricsScreen36363703737
agreeButtonToOnboardingSuccess16161701717
doneButtonToAssetList878489134938213361349
total1270877175038517271750
Asset DetailsassetClickToPriceChart36323923739
total36323923739
Solana Asset DetailsassetClickToPriceChart47474804748
total47474804748
Import Srp HomeloginToHomeScreen1967194720122619562012
openAccountMenuAfterLogin40314764347
homeAfterImportWithNewWallet24202205255512625392555
total4393425445299844104529
Send TransactionsopenSendPageFromHome17161911719
selectTokenToSendFormLoaded21202212122
reviewTransactionToConfirmationPage88186390719907907
total92490096026960960
SwapopenSwapPageFromHome101941065105106
fetchAndDisplaySwapQuotes53874613637781063756377
total54964713652182264806521
🌐 Dapp Page Load Benchmarks

Current Commit: 9335bcc | Date: 2/27/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±40ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 741ms (±38ms) 🟢 | historical mean value: 732ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 84ms (±12ms) 🟢 | historical mean value: 83ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 40ms 1.03s 1.37s 1.07s 1.37s
domContentLoaded 741ms 38ms 720ms 1.03s 761ms 1.03s
firstPaint 84ms 12ms 72ms 192ms 96ms 192ms
firstContentfulPaint 84ms 12ms 72ms 192ms 96ms 192ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 219 Bytes (0%)
  • ui: 467 Bytes (0.01%)
  • common: 20 Bytes (0%)

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 27, 2026

Builds ready [1acc2a5]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account29427231921312319
total29427231921312319
Confirm Txconfirm_tx6075604361273260726127
total6075604361273260726127
Bridge User Actionsbridge_load_page25023826912259269
bridge_load_asset_picker20617224530236245
bridge_search_token72370475017732750
total1179111912555712361255
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14591232190711915041676
load12271014154310412881420
domContentLoaded1220994152310312831406
domInteractive2917105192683
firstPaint169741188129218319
backgroundConnect21519327114219242
firstReactRender19123642126
initialActions106124
loadScripts1021807129810010701202
setupStore1474461624
numNetworkReqs312295192283
Power User HomeuiStartup3320146210300192440688921
load12631083171812613061566
domContentLoaded12441065169312012751502
domInteractive39192763635102
firstPaint2017848594271370
backgroundConnect14852788543177022364550
firstReactRender24164662735
initialActions105113
loadScripts1029857146011710631296
setupStore1564771732
numNetworkReqs85401511994119
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2202182221220222
srpButtonToSrpForm91899329093
confirmSrpToPwForm21212212122
pwFormToMetricsScreen15151611616
metricsToWalletReadyScreen16151811718
doneButtonToHomeScreen966580140330012211403
openAccountMenuToAccountListLoaded74687016800938976608009
total8820879888361688368836
Onboarding New WalletcreateWalletToSocialScreen22821824711233247
srpButtonToPwForm1151121182116118
createPwToRecoveryScreen1091111011
skipBackupToMetricsScreen40384114141
agreeButtonToOnboardingSuccess19181901919
doneButtonToAssetList1160816141824113231418
total15701218181924617561819
Asset DetailsassetClickToPriceChart35333723737
total35333723737
Solana Asset DetailsassetClickToPriceChart45444614646
total45444614646
Import Srp HomeloginToHomeScreen21772024230512622902305
openAccountMenuAfterLogin534069136869
homeAfterImportWithNewWallet23242149257716624632577
total4534449545562845564556
Send TransactionsopenSendPageFromHome18171911819
selectTokenToSendFormLoaded21202322323
reviewTransactionToConfirmationPage8508478533851853
total8898878922889892
SwapopenSwapPageFromHome1051001083108108
fetchAndDisplaySwapQuotes56754580643388863866433
total57734620656990964936569
🌐 Dapp Page Load Benchmarks

Current Commit: 1acc2a5 | Date: 2/27/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.07s (±47ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 750ms (±44ms) 🟢 | historical mean value: 732ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 83ms (±12ms) 🟢 | historical mean value: 83ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.07s 47ms 1.04s 1.39s 1.09s 1.39s
domContentLoaded 750ms 44ms 724ms 1.05s 767ms 1.05s
firstPaint 83ms 12ms 68ms 180ms 92ms 180ms
firstContentfulPaint 83ms 12ms 68ms 180ms 92ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 219 Bytes (0%)
  • ui: 467 Bytes (0.01%)
  • common: 20 Bytes (0%)

Copy link

@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.

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

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 10, 2026

Builds ready [f6a4450]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2772692858284285
total2772692858284285
Confirm Txconfirm_tx6044602060902960666090
total6044602060902960666090
Bridge User Actionsbridge_load_page23419827124244271
bridge_load_asset_picker17514820623193206
bridge_search_token72670076023741760
total1113109211342011321134
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14881248202312015381692
load12401027171310512841414
domContentLoaded12321023170310312751406
domInteractive301897192685
firstPaint169741320138216342
backgroundConnect22319730016231257
firstReactRender20135062129
initialActions105124
loadScripts1026836149910110791189
setupStore176325321622
numNetworkReqs312289192283
Power User HomeuiStartup2680167712607165323244632
load11911035164414312351528
domContentLoaded11761026162813912261475
domInteractive3419150193457
firstPaint1838049687240321
backgroundConnect797261978514363732417
firstReactRender24174462636
initialActions107113
loadScripts961824138112910071264
setupStore1685371730
numNetworkReqs793422845100171
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2202182232221223
srpButtonToSrpForm93929319393
confirmSrpToPwForm21212202122
pwFormToMetricsScreen15151501515
metricsToWalletReadyScreen16151601616
doneButtonToHomeScreen74673375911759759
openAccountMenuToAccountListLoaded2938291929631829632963
total3946381140439240184043
Onboarding New WalletcreateWalletToSocialScreen2192162212220221
srpButtonToPwForm1081031175110117
createPwToRecoveryScreen888088
skipBackupToMetricsScreen36363603636
agreeButtonToOnboardingSuccess16161601616
doneButtonToAssetList52847960243542602
total91587798639923986
Asset DetailsassetClickToPriceChart1101031155115115
total1101031155115115
Solana Asset DetailsassetClickToPriceChart79758438284
total79758438284
Import Srp HomeloginToHomeScreen1887185319232618991923
openAccountMenuAfterLogin43305384853
homeAfterImportWithNewWallet25022354270712125542707
total45174249477818146334778
Send TransactionsopenSendPageFromHome20182321923
selectTokenToSendFormLoaded19192002020
reviewTransactionToConfirmationPage85584787411850874
total89888591211906912
SwapopenSwapPageFromHome29253333133
fetchAndDisplaySwapQuotes268726842690226882690
total2725271527441127302744
🌐 Dapp Page Load Benchmarks

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

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 967ms (±70ms) 🟢 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 684ms (±67ms) 🟢 | historical mean value: 740ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±11ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 967ms 70ms 928ms 1.24s 1.18s 1.24s
domContentLoaded 684ms 67ms 653ms 951ms 888ms 951ms
firstPaint 75ms 11ms 60ms 172ms 84ms 172ms
firstContentfulPaint 75ms 11ms 60ms 172ms 84ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.15 MiB (100%)
  • ui: 8.25 MiB (100%)
  • common: 10.99 MiB (100%)

Copy link

@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.

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

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 10, 2026

Builds ready [62d6e76]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account28226830615281306
total28226830615281306
Confirm Txconfirm_tx601860166020160186020
total601860166020160186020
Bridge User Actionsbridge_load_page20818922613212226
bridge_load_asset_picker19613626244223262
bridge_search_token71469774417721744
total1130106512166311951216
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14221204171210214751632
load118799714058712341351
domContentLoaded118099413788512271345
domInteractive2917114202686
firstPaint204731378236228341
backgroundConnect21419526915218248
firstReactRender20125162130
initialActions208224
loadScripts98080411828210271149
setupStore1465481525
numNetworkReqs312289192285
Power User HomeuiStartup22701651569172621974266
load11891039189816512081636
domContentLoaded11741027181316111991623
domInteractive3720148243698
firstPaint19481554101261412
backgroundConnect48626426895603212107
firstReactRender24167282441
initialActions103112
loadScripts95781615691539751387
setupStore1674761729
numNetworkReqs75361724599169
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2182172201219220
srpButtonToSrpForm95949619696
confirmSrpToPwForm22212312223
pwFormToMetricsScreen15151601616
metricsToWalletReadyScreen16161601616
doneButtonToHomeScreen67459181686727816
openAccountMenuToAccountListLoaded2917290129361629302936
total3885386239061638873906
Onboarding New WalletcreateWalletToSocialScreen2202182222221222
srpButtonToPwForm1121101131113113
createPwToRecoveryScreen999099
skipBackupToMetricsScreen37373703737
agreeButtonToOnboardingSuccess17161701717
doneButtonToAssetList674559858114755858
total1075955128212511541282
Asset DetailsassetClickToPriceChart1239914016139140
total1239914016139140
Solana Asset DetailsassetClickToPriceChart79718967989
total79718967989
Import Srp HomeloginToHomeScreen22271992254121824342541
openAccountMenuAfterLogin674986148086
homeAfterImportWithNewWallet23712249253510623832535
total45814290488022847094880
Send TransactionsopenSendPageFromHome22153262332
selectTokenToSendFormLoaded18172011920
reviewTransactionToConfirmationPage85384687110848871
total90188094325897943
SwapopenSwapPageFromHome43345485054
fetchAndDisplaySwapQuotes269126872695326912695
total2738272227631527412763
🌐 Dapp Page Load Benchmarks

Current Commit: 62d6e76 | Date: 3/10/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±39ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 724ms (±36ms) 🟢 | historical mean value: 732ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±13ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 39ms 1.01s 1.32s 1.06s 1.32s
domContentLoaded 724ms 36ms 703ms 988ms 752ms 988ms
firstPaint 79ms 13ms 64ms 192ms 88ms 192ms
firstContentfulPaint 79ms 13ms 64ms 192ms 88ms 192ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.15 MiB (100%)
  • ui: 8.25 MiB (100%)
  • common: 10.99 MiB (100%)

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 10, 2026

Builds ready [0aa5c19]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2712642786275278
total2712642786275278
Confirm Txconfirm_tx6031598660582960546058
total6031598660582960546058
Bridge User Actionsbridge_load_page22919727630247276
bridge_load_asset_picker15913017619175176
bridge_search_token7107047175711717
total108610831090310861090
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14201201195611314471625
load1184995171710712121387
domContentLoaded1176991162010012051354
domInteractive2917116212484
firstPaint1596848182218299
backgroundConnect21519134119217246
firstReactRender20114962127
initialActions105124
loadScripts97980214199810071158
setupStore1364361522
numNetworkReqs312294192381
Power User HomeuiStartup2486170312624179322354218
load12241079167914812651624
domContentLoaded12041068166514212361591
domInteractive36181673033126
firstPaint226741195141294394
backgroundConnect6712641076116473451831
firstReactRender26166292747
initialActions104113
loadScripts982858141913410031352
setupStore1664061731
numNetworkReqs79372284685170
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2202182221221222
srpButtonToSrpForm94949519495
confirmSrpToPwForm21212202222
pwFormToMetricsScreen16161601616
metricsToWalletReadyScreen16161701617
doneButtonToHomeScreen77759811612138541161
openAccountMenuToAccountListLoaded27832486291617229132916
total3930387340215339534021
Onboarding New WalletcreateWalletToSocialScreen2202172232221223
srpButtonToPwForm1081061101108110
createPwToRecoveryScreen889099
skipBackupToMetricsScreen35333723637
agreeButtonToOnboardingSuccess16161701617
doneButtonToAssetList74449610882108691088
total1136886148120912541481
Asset DetailsassetClickToPriceChart13011315314138153
total13011315314138153
Solana Asset DetailsassetClickToPriceChart81739068490
total81739068490
Import Srp HomeloginToHomeScreen2061196221607020922160
openAccountMenuAfterLogin69667337373
homeAfterImportWithNewWallet2461237025496524842549
total4617452947157746694715
Send TransactionsopenSendPageFromHome19181901919
selectTokenToSendFormLoaded18181901919
reviewTransactionToConfirmationPage8498448533851853
total8858808904887890
SwapopenSwapPageFromHome392455125055
fetchAndDisplaySwapQuotes268726732697926942697
total272627182734527282734
🌐 Dapp Page Load Benchmarks

Current Commit: 0aa5c19 | Date: 3/10/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±39ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 743ms (±39ms) 🟢 | historical mean value: 727ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±12ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 39ms 1.04s 1.36s 1.08s 1.36s
domContentLoaded 743ms 39ms 727ms 1.04s 752ms 1.04s
firstPaint 80ms 12ms 60ms 176ms 92ms 176ms
firstContentfulPaint 80ms 12ms 60ms 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.27 MiB (100%)
  • common: 10.99 MiB (100%)

Copy link

@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 2 potential issues.

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

),
);
const bridgeTxHistoryItem =
bridgeTxHistoryItemByHash ?? bridgeTxHistoryItemByOriginalTxMetaId;
Copy link

Choose a reason for hiding this comment

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

Duplicate bridge history lookups across component and hook

Low Severity

The transaction-list-item component independently computes bridgeTxHistoryItem using the same two-selector fallback chain (selectBridgeHistoryItemByHashselectBridgeHistoryForOriginalTxMetaId) that useBridgeTxHistoryData already performs internally. This duplicates the lookup logic across two call sites for the same transaction, increasing maintenance burden and the risk of the two lookups diverging in future changes.

Additional Locations (1)

Fix in Cursor Fix in Web

Triggered by project rule: MetaMask Extension - General Coding Guidelines

Copy link
Contributor

@ameliejyc ameliejyc Mar 10, 2026

Choose a reason for hiding this comment

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

This seems relevant - this component already calls useBridgeTxHistoryData . Would it be possible to return bridgeHistoryItem from it and use that instead of duplicating the selector calls?

Copy link
Author

Choose a reason for hiding this comment

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

Discussed with @ameliejyc and it can be addressed in another PR - should we create an issue?

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 10, 2026

Builds ready [0ae60a4]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2762742792277279
total2762742792277279
Confirm Txconfirm_tx607960746084460806084
total607960746084460806084
Bridge User Actionsbridge_load_page21219623817226238
bridge_load_asset_picker1951902014201201
bridge_search_token7187167202720720
total1113108111482411131148
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup1405118916839114361598
load117499514478811951354
domContentLoaded116799114378611911335
domInteractive2817106182475
firstPaint1477132968208259
backgroundConnect21219525311214237
firstReactRender19135352027
initialActions206124
loadScripts9708031244859941132
setupStore1373351620
numNetworkReqs322288192381
Power User HomeuiStartup3487171212851231541798546
load12821073226918213131690
domContentLoaded12591062223117212931622
domInteractive37201242435105
firstPaint214901590171265389
backgroundConnect14212769389211820386793
firstReactRender26175362937
initialActions104123
loadScripts1042861201816710491366
setupStore1564161727
numNetworkReqs974124342106191
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2192172232220223
srpButtonToSrpForm9691105599105
confirmSrpToPwForm21212212222
pwFormToMetricsScreen15151601516
metricsToWalletReadyScreen16151601616
doneButtonToHomeScreen707587874127848874
openAccountMenuToAccountListLoaded2909289629401829022940
total40243886415210841054152
Onboarding New WalletcreateWalletToSocialScreen2202192211220221
srpButtonToPwForm1081061091109109
createPwToRecoveryScreen888088
skipBackupToMetricsScreen35343613636
agreeButtonToOnboardingSuccess16161711717
doneButtonToAssetList56148269078609690
total9648731144999981144
Asset DetailsassetClickToPriceChart1441411452145145
total1441411452145145
Solana Asset DetailsassetClickToPriceChart78777917979
total78777917979
Import Srp HomeloginToHomeScreen1983187720908120232090
openAccountMenuAfterLogin715388138088
homeAfterImportWithNewWallet22862108253415824032534
total43094110453415143174534
Send TransactionsopenSendPageFromHome25173362933
selectTokenToSendFormLoaded19172012020
reviewTransactionToConfirmationPage8478468481848848
total8938859016895901
SwapopenSwapPageFromHome35214694046
fetchAndDisplaySwapQuotes2779268128949528902894
total2814272729349429212934
🌐 Dapp Page Load Benchmarks

Current Commit: 0ae60a4 | Date: 3/10/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±43ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 745ms (±40ms) 🟢 | historical mean value: 727ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 83ms (±12ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 43ms 1.02s 1.38s 1.09s 1.38s
domContentLoaded 745ms 40ms 713ms 1.05s 763ms 1.05s
firstPaint 83ms 12ms 72ms 196ms 88ms 196ms
firstContentfulPaint 83ms 12ms 72ms 196ms 88ms 196ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.15 MiB (100%)
  • ui: 8.27 MiB (100%)
  • common: 10.99 MiB (100%)

Copy link
Contributor

@Prithpal-Sooriya Prithpal-Sooriya left a comment

Choose a reason for hiding this comment

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

Policy files LGTM

Copy link

@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.

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

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 10, 2026

Builds ready [a5cdddb]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account28026930213276302
total28026930213276302
Confirm Txconfirm_tx602760196034760326034
total602760196034760326034
Bridge User Actionsbridge_load_page24419128835264288
bridge_load_asset_picker17510724148205241
bridge_search_token70769772511706725
total1138107712246812181224
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14851252208011815191696
load12361039170710412591427
domContentLoaded12291034169610312551405
domInteractive3117123222696
firstPaint175771233134220314
backgroundConnect22620534519231257
firstReactRender20145162230
initialActions207124
loadScripts1020825148210210401201
setupStore1473761728
numNetworkReqs312295202285
Power User HomeuiStartup2371162512433143521664244
load11851013259321311981582
domContentLoaded11671006248320311801558
domInteractive3820390413797
firstPaint200721418151246331
backgroundConnect527259933210593371112
firstReactRender26165772842
initialActions1019214
loadScripts95479222571979801331
setupStore1665781732
numNetworkReqs77372264589170
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2182162191219219
srpButtonToSrpForm94929519595
confirmSrpToPwForm21212202222
pwFormToMetricsScreen15151501515
metricsToWalletReadyScreen16161701617
doneButtonToHomeScreen63759773255610732
openAccountMenuToAccountListLoaded2920289629462329412946
total3876384539062238793906
Onboarding New WalletcreateWalletToSocialScreen2202162222222222
srpButtonToPwForm1081081090109109
createPwToRecoveryScreen889089
skipBackupToMetricsScreen35343713637
agreeButtonToOnboardingSuccess16161601616
doneButtonToAssetList54948959847591598
total93687398849980988
Asset DetailsassetClickToPriceChart1141121172117117
total1141121172117117
Solana Asset DetailsassetClickToPriceChart79788018080
total79788018080
Import Srp HomeloginToHomeScreen20231885213910321322139
openAccountMenuAfterLogin67607776977
homeAfterImportWithNewWallet2541246225914925672591
total45764407474612446884746
Send TransactionsopenSendPageFromHome21172852428
selectTokenToSendFormLoaded20192002020
reviewTransactionToConfirmationPage8488478491849849
total8918848975896897
SwapopenSwapPageFromHome37354233642
fetchAndDisplaySwapQuotes268826852690226902690
total272527212732427262732
🌐 Dapp Page Load Benchmarks

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

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±40ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 746ms (±38ms) 🟢 | historical mean value: 727ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 83ms (±10ms) 🟢 | historical mean value: 83ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 40ms 1.03s 1.35s 1.09s 1.35s
domContentLoaded 746ms 38ms 719ms 1.02s 770ms 1.02s
firstPaint 83ms 10ms 68ms 168ms 96ms 168ms
firstContentfulPaint 83ms 10ms 68ms 168ms 96ms 168ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.15 MiB (100%)
  • ui: 8.27 MiB (100%)
  • common: 10.99 MiB (100%)

ameliejyc
ameliejyc previously approved these changes Mar 10, 2026
Copy link

@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.

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

SteP-n-s
SteP-n-s previously approved these changes Mar 10, 2026
Copy link

@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.

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

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 10, 2026

Builds ready [1d09a5f]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account28627129911293299
total28627129911293299
Confirm Txconfirm_tx6066604160891960876089
total6066604160891960876089
Bridge User Actionsbridge_load_page23219227933246279
bridge_load_asset_picker1821711918191191
bridge_search_token7107077132709713
total1105108911281611091128
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14331225173011014771633
load12021020147810512501407
domContentLoaded11951015147210312451389
domInteractive291799182678
firstPaint1607341375215279
backgroundConnect21919631118225255
firstReactRender20125172233
initialActions104124
loadScripts995814125610210401178
setupStore1373351623
numNetworkReqs322293202283
Power User HomeuiStartup39831875129702313442610091
load13201127177414313821637
domContentLoaded13021114176213913461613
domInteractive41212883835122
firstPaint226931236138279374
backgroundConnect14222939960174915415569
firstReactRender26194852936
initialActions104112
loadScripts1074910150412811041361
setupStore1654071834
numNetworkReqs1024822941111202
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2202182242223224
srpButtonToSrpForm93929309393
confirmSrpToPwForm21212102121
pwFormToMetricsScreen15151601516
metricsToWalletReadyScreen15151601516
doneButtonToHomeScreen65560070947700709
openAccountMenuToAccountListLoaded27822489292116728992921
total3870377839446038903944
Onboarding New WalletcreateWalletToSocialScreen2202182222221222
srpButtonToPwForm1081071091108109
createPwToRecoveryScreen888088
skipBackupToMetricsScreen37344233842
agreeButtonToOnboardingSuccess16161601616
doneButtonToAssetList61350874883644748
total100589311649310291164
Asset DetailsassetClickToPriceChart13110415820141158
total13110415820141158
Solana Asset DetailsassetClickToPriceChart75718047880
total75718047880
Import Srp HomeloginToHomeScreen1923183820096219412009
openAccountMenuAfterLogin38363913839
homeAfterImportWithNewWallet2320223024557923572455
total43794157481024845014810
Send TransactionsopenSendPageFromHome19152442024
selectTokenToSendFormLoaded20192012020
reviewTransactionToConfirmationPage8478458481847848
total8848808883887888
SwapopenSwapPageFromHome422460145660
fetchAndDisplaySwapQuotes268526832687226862687
total2729270727471627422747
🌐 Dapp Page Load Benchmarks

Current Commit: 1d09a5f | Date: 3/10/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±59ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 739ms (±56ms) 🟢 | historical mean value: 726ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 81ms (±11ms) 🟢 | historical mean value: 82ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 59ms 1.02s 1.38s 1.09s 1.38s
domContentLoaded 739ms 56ms 712ms 1.03s 770ms 1.03s
firstPaint 81ms 11ms 64ms 172ms 92ms 172ms
firstContentfulPaint 81ms 11ms 64ms 172ms 92ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.15 MiB (100%)
  • ui: 8.28 MiB (100%)
  • common: 10.99 MiB (100%)

@sonarqubecloud
Copy link

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 10, 2026

Builds ready [cf8a6a8]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account377268575131495575
total377268575131495575
Confirm Txconfirm_tx6057603261042860536104
total6057603261042860536104
Bridge User Actionsbridge_load_page27125528711272287
bridge_load_asset_picker16613421129186211
bridge_search_token7107067133711713
total1119109911321311291132
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14161180191012014531601
load1176973162110412031336
domContentLoaded1168967159110211991329
domInteractive3015166262491
firstPaint1407042076193263
backgroundConnect21219248532208245
firstReactRender20124152130
initialActions108123
loadScripts977776137710110131139
setupStore1373451521
numNetworkReqs362788183383
Power User HomeuiStartup45221860159383525517614628
load13511114276321313801748
domContentLoaded13301101270320513541717
domInteractive40203564732131
firstPaint252781242149302477
backgroundConnect2080283129833374216311736
firstReactRender25174552838
initialActions105114
loadScripts1098886244619511121452
setupStore1564961626
numNetworkReqs1536327843174231
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2212182242221224
srpButtonToSrpForm99971001100100
confirmSrpToPwForm23222302323
pwFormToMetricsScreen16161701617
metricsToWalletReadyScreen17161811818
doneButtonToHomeScreen66260274452693744
openAccountMenuToAccountListLoaded2930290829441429402944
total3971390640335240154033
Onboarding New WalletcreateWalletToSocialScreen2182182190218219
srpButtonToPwForm1101091111111111
createPwToRecoveryScreen989099
skipBackupToMetricsScreen37354023740
agreeButtonToOnboardingSuccess17151811718
doneButtonToAssetList51747761457496614
total9118641022658831022
Asset DetailsassetClickToPriceChart1259615826154158
total1259615826154158
Solana Asset DetailsassetClickToPriceChart1027612420115124
total1027612420115124
Import Srp HomeloginToHomeScreen1984190521067519692106
openAccountMenuAfterLogin683786228586
homeAfterImportWithNewWallet2351228224095724052409
total4398433645498843594549
Send TransactionsopenSendPageFromHome24242612426
selectTokenToSendFormLoaded21192312123
reviewTransactionToConfirmationPage8458458450845845
total8918898932891893
SwapopenSwapPageFromHome29194183641
fetchAndDisplaySwapQuotes269126832699726962699
total272327212725227242725
🌐 Dapp Page Load Benchmarks

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

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±41ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 748ms (±63ms) 🟢 | historical mean value: 721ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 85ms (±43ms) 🟢 | historical mean value: 82ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 41ms 1.03s 1.38s 1.09s 1.38s
domContentLoaded 748ms 63ms 716ms 1.32s 779ms 1.32s
firstPaint 85ms 43ms 68ms 504ms 92ms 504ms
firstContentfulPaint 85ms 43ms 68ms 504ms 92ms 504ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.62 KiB (0.03%)
  • ui: 1.62 KiB (0.02%)
  • common: 244 Bytes (0%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

INVALID-PR-TEMPLATE PR's body doesn't match template QA Passed size-L team-be-trade BE Trade team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants