Skip to content

Conversation

@micaelae
Copy link
Member

@micaelae micaelae commented Nov 19, 2025

Description

Replaces the LowReturn banner with a warning font-color change to prevent swap page from auto-scrolling while streaming quotes. Also added an e2e test to verify the QuotesReceived event is published if the trade is submitted before quotes finish loading

Open in GitHub Codespaces

Changelog

CHANGELOG entry: feat: enable tx submission before swap quotes are loaded

Related issues

Fixes: https://consensyssoftware.atlassian.net/browse/SWAPS-3421, https://consensyssoftware.atlassian.net/browse/SWAPS-3427

Manual testing steps

  1. Go to this page...

Screenshots/Recordings

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

Enables submitting swaps before quotes finish loading, replaces the low-return banner with in-line warning styling, updates analytics payloads, adds e2e coverage, and bumps bridge controllers with corresponding LavaMoat policy updates.

  • Bridge UI/Logic:
    • Enable CTA while quotes are loading by removing isLoading from disabled logic in bridge-cta-button.tsx and related tests.
    • Replace LowReturn banner with warning-colored fee text in multichain-bridge-quote-card.tsx; remove auto-scroll tied to that banner.
    • Pass isLoading and warnings to submitBridgeTx; add getWarningLabels selector and use it across submission and analytics.
    • Simplify quote analytics via getQuotesReceivedProperties and track QuotesReceived during streaming.
  • Tests:
    • Add SSE streaming tests to verify incremental quotes and event emission; new case for submitting before streaming completes.
    • Update mocks to .once() for getQuoteStream; remove redundant mocks; update snapshots.
  • Dependencies:
    • Bump @metamask/bridge-controller and @metamask/bridge-status-controller to ^62.0.0 (and related packages like controller-utils, gas-fee, polling, multichain-network); update yarn.lock.
  • LavaMoat Policy:
    • Redirect multiple entries to @metamask/assets-controllers>@metamask/polling-controller and add policy blocks for @metamask/bridge-status-controller>@metamask/polling-controller and @metamask/bridge-controller>@metamask/multichain-network-controller across Browserify/Webpack policies.

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

@metamaskbot metamaskbot added the team-swaps-and-bridge Swaps and Bridge team label Nov 19, 2025
@metamaskbot
Copy link
Collaborator

metamaskbot commented Nov 19, 2025

✨ Files requiring CODEOWNER review ✨

🧩 @MetaMask/extension-devs (6 files, +218 -36)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +44 -7
      • 📁 experimental/
        • 📄 policy.json +44 -7
      • 📁 flask/
        • 📄 policy.json +44 -7
      • 📁 main/
        • 📄 policy.json +44 -7
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +36 -7
      • 📁 mv3/
        • 📄 policy.json +6 -1

📜 @MetaMask/policy-reviewers (6 files, +218 -36)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +44 -7
      • 📁 experimental/
        • 📄 policy.json +44 -7
      • 📁 flask/
        • 📄 policy.json +44 -7
      • 📁 main/
        • 📄 policy.json +44 -7
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +36 -7
      • 📁 mv3/
        • 📄 policy.json +6 -1

Tip

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


🔗 @MetaMask/supply-chain (6 files, +218 -36)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +44 -7
      • 📁 experimental/
        • 📄 policy.json +44 -7
      • 📁 flask/
        • 📄 policy.json +44 -7
      • 📁 main/
        • 📄 policy.json +44 -7
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +36 -7
      • 📁 mv3/
        • 📄 policy.json +6 -1

🔄 @MetaMask/swaps-engineers (11 files, +205 -101)
  • 📁 test/
    • 📁 e2e/
      • 📁 tests/
        • 📁 bridge/
          • 📄 bridge-test-utils.ts +2 -4
          • 📄 swap-positive-cases.spec.ts +101 -3
  • 📁 ui/
    • 📁 ducks/
      • 📁 bridge/
        • 📄 selectors.ts +21 -0
      • 📁 bridge-status/
        • 📄 actions.ts +15 -2
    • 📁 hooks/
      • 📁 bridge/
        • 📄 useQuoteFetchEvents.ts +13 -57
    • 📁 pages/
      • 📁 bridge/
        • 📁 hooks/
          • 📁 __snapshots__/
            • 📄 useSubmitBridgeTransaction.test.tsx.snap +4 -0
            • 📄 useSubmitBridgeTransaction.ts +27 -2
        • 📁 prepare/
          • 📄 bridge-cta-button.test.tsx +5 -6
          • 📄 bridge-cta-button.tsx +0 -2
          • 📄 prepare-bridge-page.tsx +0 -22
        • 📁 quotes/
          • 📄 multichain-bridge-quote-card.tsx +17 -3

github-merge-queue bot pushed a commit to MetaMask/core that referenced this pull request Nov 19, 2025
…itted (#7182)

## Explanation

Publishes the `QuotesReceived` event when submitting a trade before all
quotes load

Extension PR: MetaMask/metamask-extension#37963
Mobilie PR: MetaMask/metamask-mobile#22905

<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

Fixes https://consensyssoftware.atlassian.net/browse/SWAPS-3427

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [x] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Publishes a QuotesReceived event on early trade submission and adds a
helper and types to standardize its payload and warnings.
> 
> - **Bridge Status Controller**:
> - Change `submitTx` to accept optional `isLoading` and `warnings`;
when `isLoading=true`, publish `Unified SwapBridge Quotes Received`
using `getQuotesReceivedProperties` before stopping quote polling.
>   - Allow tracking of `QuotesReceived` in internal tracking helper.
> - **Bridge Controller**:
> - Add and export `getQuotesReceivedProperties` to build QuotesReceived
metrics payload; re-export from `index.ts`.
> - Introduce `QuoteWarning` type and use it for `warnings` across
events/tests; update snapshots to standardized values (e.g.,
`low_return`, `insufficient_balance`).
> - Selector/tests: refine `gasIncluded` vs `gasIncluded_7702` handling
and add scenario where fees come from dest token under 7702.
> - Tests: add BTC fee error handling (return `undefined` fees on
failure) and validate BTC/SOL fee behaviors.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
89bb4b5. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@metamaskbot
Copy link
Collaborator

Builds ready [41f851b]
UI Startup Metrics (1258 ± 97 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1258109615599713211444
load108993613689111471244
domContentLoaded108393013629111401235
domInteractive2415104192075
firstPaint61688129442910781213
backgroundConnect2372232547243249
firstReactRender30195783248
getState23757102943
initialActions105112
loadScripts8526961120909071009
setupStore1172441221
numNetworkReqs1367519671
BrowserifyPower User HomeuiStartup21261899251818122382518
load1138982150318714051503
domContentLoaded1116963149619013751496
domInteractive541815549120155
firstPaint729124152048310691520
backgroundConnect25323727610263276
firstReactRender684688127988
getState22616637252236372
initialActions102012
loadScripts885734126618911431266
setupStore27154983449
numNetworkReqs1229319435161194
WebpackStandard HomeuiStartup86173412841108531160
load628569103198621932
domContentLoaded621563100393615915
domInteractive191281151563
firstPaint213591007234191918
backgroundConnect251082142861
firstReactRender322067103750
getState1162031215
initialActions104111
loadScripts61856199391613905
setupStore1264461428
numNetworkReqs1367619671
WebpackPower User HomeuiStartup1083928179323112671793
load649575875104755875
domContentLoaded63356582294740822
domInteractive35131133788113
firstPaint27170825227343825
backgroundConnect47111995575199
firstReactRender43375544355
getState1368616023148160
initialActions101011
loadScripts62856281291730812
setupStore1662792527
numNetworkReqs806113326113133
FirefoxBrowserifyStandard HomeuiStartup13801241201112514001687
load1172106614839011921422
domContentLoaded1172106614839011921422
domInteractive4632120175287
firstPaint------
backgroundConnect3824193213981
firstReactRender26204462540
getState137193191325
initialActions103122
loadScripts1149104814228211751365
setupStore14661101635
numNetworkReqs1467820773
BrowserifyPower User HomeuiStartup32952568442454037964424
load15061280193221317961932
domContentLoaded15061280193221417961932
domInteractive25678663197482663
firstPaint------
backgroundConnect66716913563439351356
firstReactRender885512318100123
getState1437418128162181
initialActions213133
loadScripts14591249188021117531880
setupStore13424500135155500
numNetworkReqs1277723862227238
WebpackStandard HomeuiStartup16661515223714016772010
load1409127617049714341614
domContentLoaded1409127517049714331614
domInteractive59301763465150
firstPaint------
backgroundConnect51262242956116
firstReactRender362589143781
getState1275471225
initialActions207122
loadScripts1379125116248814101595
setupStore167111191363
numNetworkReqs1366917763
WebpackPower User HomeuiStartup34832547499777340384997
load17251401236828520602368
domContentLoaded17251401236828520602368
domInteractive24268624203554624
firstPaint------
backgroundConnect60416911283378931128
firstReactRender1158227948111279
getState206105601132198601
initialActions328138
loadScripts16621370225226919782252
setupStore67261333179133
numNetworkReqs1286924163225241
📊 Page Load Benchmark Results

Current Commit: 41f851b | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±70ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 732ms (±68ms) 🟢 | historical mean value: 728ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±11ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 70ms 1.01s 1.31s 1.26s 1.31s
domContentLoaded 732ms 68ms 698ms 1.00s 930ms 1.00s
firstPaint 76ms 11ms 60ms 160ms 88ms 160ms
firstContentfulPaint 76ms 11ms 60ms 160ms 88ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 53 Bytes (0%)
  • ui: -800 Bytes (-0.01%)
  • common: 1.12 KiB (0.01%)

@metamaskbot
Copy link
Collaborator

Builds ready [91015ce]
UI Startup Metrics (1100 ± 90 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup110094914809011451264
load9388221283809951069
domContentLoaded9318191270799851062
domInteractive2013102141756
firstPaint6609012973689621072
backgroundConnect1791672198182194
firstReactRender25175162640
getState20868112441
initialActions102112
loadScripts758640108777813886
setupStore962021014
numNetworkReqs1367620673
BrowserifyPower User HomeuiStartup20381735295834223132958
load1042874172725413111727
domContentLoaded1024860171125212911711
domInteractive571518662154186
firstPaint839196174745813031747
backgroundConnect20018523917215239
firstReactRender75461101895110
getState22415634564297345
initialActions102122
loadScripts844688150124211121501
setupStore26144592945
numNetworkReqs1239019237178192
WebpackStandard HomeuiStartup83371912431058291150
load617560100197607914
domContentLoaded61155698693601892
domInteractive181275131451
firstPaint19257990189179590
backgroundConnect231182142454
firstReactRender3119152143537
getState1162131216
initialActions102111
loadScripts60855497691599882
setupStore1164661316
numNetworkReqs1367319869
WebpackPower User HomeuiStartup1098927169223112741692
load66658111011487681101
domContentLoaded65156810691417431069
domInteractive31131003047100
firstPaint29661907262575907
backgroundConnect371694255094
firstReactRender40374824148
getState1438921327153213
initialActions101011
loadScripts64756610591387311059
setupStore1162861128
numNetworkReqs76621211989121
FirefoxBrowserifyStandard HomeuiStartup14171267180011514471714
load1200108914838312331397
domContentLoaded1199108914838312321397
domInteractive53311512560114
firstPaint------
backgroundConnect3825127164169
firstReactRender25204462539
getState127189181020
initialActions103122
loadScripts1177106814547812111361
setupStore1267081327
numNetworkReqs1367720875
BrowserifyPower User HomeuiStartup33342481467159537064671
load15191267201723717702017
domContentLoaded15191267201723717702017
domInteractive23979599177458599
firstPaint------
backgroundConnect5858312953568121295
firstReactRender88611302099130
getState19911833767219337
initialActions213133
loadScripts14851241197923417481979
setupStore783312728105127
numNetworkReqs1248024659178246
WebpackStandard HomeuiStartup16091432240118816042183
load13531196218413513851640
domContentLoaded13531196218413513851640
domInteractive54301232364113
firstPaint------
backgroundConnect49182183252126
firstReactRender332483113462
getState167223271150
initialActions103122
loadScripts13221175215212613551540
setupStore15677141253
numNetworkReqs1367118764
WebpackPower User HomeuiStartup33172784446440234934464
load16861413207918018222079
domContentLoaded16851412207918018222079
domInteractive22871484137392484
firstPaint------
backgroundConnect365178805175411805
firstReactRender916211916106119
getState246134579134300579
initialActions214124
loadScripts16301361198517617761985
setupStore13433559142140559
numNetworkReqs1267723555201235
📊 Page Load Benchmark Results

Current Commit: 91015ce | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±52ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 739ms (±51ms) 🟢 | historical mean value: 728ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±11ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 52ms 1.03s 1.34s 1.12s 1.34s
domContentLoaded 739ms 51ms 710ms 1.02s 788ms 1.02s
firstPaint 79ms 11ms 64ms 180ms 88ms 180ms
firstContentfulPaint 79ms 11ms 64ms 180ms 88ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 53 Bytes (0%)
  • ui: -800 Bytes (-0.01%)
  • common: 1.12 KiB (0.01%)

@metamaskbot
Copy link
Collaborator

Builds ready [154fea4]
UI Startup Metrics (1242 ± 95 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1242107914829512831431
load107293513078811351237
domContentLoaded106693013018711301230
domInteractive231598182071
firstPaint65286128342710611237
backgroundConnect2332202567237245
firstReactRender311987113850
getState2276492738
initialActions105112
loadScripts8397101063868921014
setupStore1163341123
numNetworkReqs1367620673
BrowserifyPower User HomeuiStartup21111875268421222392684
load1137967153318313331533
domContentLoaded1113952151018413081510
domInteractive591617458123174
firstPaint683196153047710381530
backgroundConnect2502402689256268
firstReactRender674488157888
getState22015133750263337
initialActions102112
loadScripts886727126217710741262
setupStore26657122957
numNetworkReqs1219318633170186
WebpackStandard HomeuiStartup85972013081088601143
load626571101090618898
domContentLoaded61856598986613882
domInteractive191277141556
firstPaint21160993233184886
backgroundConnect261281142665
firstReactRender322077103643
getState1161831315
initialActions102111
loadScripts61556397983611867
setupStore1253551320
numNetworkReqs1367519672
WebpackPower User HomeuiStartup1124969173723213141737
load69759111311578151131
domContentLoaded68258011151497871115
domInteractive40141534581153
firstPaint3367511233286091123
backgroundConnect48112485650248
firstReactRender43384924349
getState1459716923157169
initialActions101011
loadScripts67857811041467771104
setupStore1163171131
numNetworkReqs816213827115138
FirefoxBrowserifyStandard HomeuiStartup14501298194412614851744
load1220111714938512561442
domContentLoaded1220111714938512561441
domInteractive49331683142145
firstPaint------
backgroundConnect4123146185082
firstReactRender26214442740
getState1276381125
initialActions213122
loadScripts1197109714527912371388
setupStore147213211228
numNetworkReqs1267316761
BrowserifyPower User HomeuiStartup31822565484567033114845
load15471326211621517492116
domContentLoaded15471326211621517492116
domInteractive27486663186489663
firstPaint------
backgroundConnect44811213053866541305
firstReactRender85611231696123
getState223109519118358519
initialActions318138
loadScripts14991293208021416832080
setupStore12531483111153483
numNetworkReqs1207723957132239
WebpackStandard HomeuiStartup16731474234315716852026
load14181235176111314421673
domContentLoaded14171235176111314411673
domInteractive56312333258130
firstPaint------
backgroundConnect53282943357113
firstReactRender352683103749
getState137102111224
initialActions213123
loadScripts13841214167410514111606
setupStore16595161456
numNetworkReqs1366817766
WebpackPower User HomeuiStartup31092552406146335754061
load16421446190616517941906
domContentLoaded16421445190616517941906
domInteractive22274444124358444
firstPaint------
backgroundConnect42312510883027581088
firstReactRender925115424101154
getState1586622944198229
initialActions213133
loadScripts15991420185815617591858
setupStore1173240689132406
numNetworkReqs1257423152166231
📊 Page Load Benchmark Results

Current Commit: 154fea4 | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±46ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 724ms (±36ms) 🟢 | historical mean value: 728ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±13ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 46ms 1.02s 1.32s 1.07s 1.32s
domContentLoaded 724ms 36ms 704ms 984ms 748ms 984ms
firstPaint 76ms 13ms 60ms 196ms 84ms 196ms
firstContentfulPaint 76ms 13ms 60ms 196ms 84ms 196ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 53 Bytes (0%)
  • ui: -800 Bytes (-0.01%)
  • common: 1.12 KiB (0.01%)

@metamaskbot
Copy link
Collaborator

Builds ready [0a2b3f4]
UI Startup Metrics (1245 ± 93 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1245108214719313171422
load105989912648911331206
domContentLoaded105188912589011281196
domInteractive231380162174
firstPaint646106121642210681191
backgroundConnect21920033816224245
firstReactRender3020125143450
getState341777123960
initialActions1012112
loadScripts840675104189919977
setupStore1262741320
numNetworkReqs1367619671
BrowserifyPower User HomeuiStartup18451525268825319922486
load990875155515210021434
domContentLoaded97586715341509781428
domInteractive39162885029175
firstPaint52210215703519001007
backgroundConnect22020326011225243
firstReactRender7845157168495
getState17413639741182260
initialActions104112
loadScripts77266713271487791224
setupStore19105792737
numNetworkReqs956519733101191
WebpackStandard HomeuiStartup8737091180909101068
load61654492871619815
domContentLoaded60854091267611785
domInteractive191282141553
firstPaint20861916203191744
backgroundConnect271185172773
firstReactRender342097144067
getState20123152327
initialActions104112
loadScripts60553890365609776
setupStore1362841522
numNetworkReqs1367619871
WebpackPower User HomeuiStartup12521025224420313501714
load6065281224123616866
domContentLoaded5875151160113589830
domInteractive29122783920100
firstPaint298551164275551813
backgroundConnect49142334360162
firstReactRender724098127894
getState1469118416155176
initialActions102011
loadScripts5845131152112587823
setupStore16669142940
numNetworkReqs1356824647178217
FirefoxBrowserifyStandard HomeuiStartup12811083180711913641498
load107593113818711411234
domContentLoaded107393013808711411233
domInteractive65312004083136
firstPaint------
backgroundConnect4120212254485
firstReactRender23185962436
getState126163171121
initialActions103122
loadScripts104991112478111161215
setupStore1164671131
numNetworkReqs1266115757
BrowserifyPower User HomeuiStartup26041853335933728403225
load1170931155317512231523
domContentLoaded1169931155317512221523
domInteractive14230545127163479
firstPaint------
backgroundConnect194251001216239693
firstReactRender84371301994119
getState21679894229172818
initialActions3032528
loadScripts1131913151216411821468
setupStore1226777191114754
numNetworkReqs93572144188197
WebpackStandard HomeuiStartup14151224190612714451688
load1201103214789512591407
domContentLoaded1200103114779412561406
domInteractive63272164381177
firstPaint------
backgroundConnect3918148214188
firstReactRender291975113058
getState13593141146
initialActions103012
loadScripts1175101613848812321359
setupStore14491131247
numNetworkReqs1366617765
WebpackPower User HomeuiStartup29692157386637032233662
load14401137199521215331895
domContentLoaded14401137199521215331895
domInteractive13932715150148567
firstPaint------
backgroundConnect23528966237283796
firstReactRender94572812599130
getState26473914257223888
initialActions218227
loadScripts13941115195620714661865
setupStore107675216593640
numNetworkReqs94632364192196
📊 Page Load Benchmark Results

Current Commit: 0a2b3f4 | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±65ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 726ms (±62ms) 🟢 | historical mean value: 728ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±10ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 65ms 1.01s 1.35s 1.25s 1.35s
domContentLoaded 726ms 62ms 695ms 1.01s 924ms 1.01s
firstPaint 76ms 10ms 56ms 156ms 84ms 156ms
firstContentfulPaint 76ms 10ms 56ms 156ms 84ms 156ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 235 Bytes (0%)
  • ui: -460.34 KiB (-6.19%)
  • common: 2.2 KiB (0.03%)

@socket-security
Copy link

socket-security bot commented Nov 20, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​metamask/​controller-utils@​11.15.0 ⏵ 11.16.09910077 +196 +2100
Updated@​metamask/​bridge-status-controller@​61.0.0 ⏵ 63.1.09910078 +198 +1100
Updated@​metamask/​bridge-controller@​61.0.0 ⏵ 63.2.09810079 +198 +1100

View full report

@micaelae
Copy link
Member Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Builds ready [741e2f9]
📊 Page Load Benchmark Results

Current Commit: 741e2f9 | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.00s (±77ms) 🟡 | historical mean value: 1.03s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 703ms (±91ms) 🟢 | historical mean value: 722ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±16ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.00s 77ms 955ms 1.37s 1.23s 1.37s
domContentLoaded 703ms 91ms 661ms 1.33s 917ms 1.33s
firstPaint 77ms 16ms 64ms 224ms 84ms 224ms
firstContentfulPaint 77ms 16ms 64ms 224ms 84ms 224ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 50 Bytes (0%)
  • ui: -800 Bytes (-0.01%)
  • common: 33.7 KiB (0.38%)

@metamaskbot
Copy link
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

@metamaskbot
Copy link
Collaborator

Builds ready [8589241]
UI Startup Metrics (1233 ± 95 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1233106415449513031389
load104889912288711131188
domContentLoaded104189412258611041182
domInteractive2414104192077
firstPaint58490123941510581193
backgroundConnect21719628013222248
firstReactRender28196283046
getState3517101134360
initialActions103112
loadScripts831694100687896976
setupStore1275261321
numNetworkReqs1257620572
BrowserifyPower User HomeuiStartup19101560289826720852507
load1018897189516110221450
domContentLoaded1002892188315910041433
domInteractive35162083728149
firstPaint5369314733999311303
backgroundConnect22920428113234254
firstReactRender83451651789114
getState17813141051191295
initialActions103112
loadScripts79168416121547901216
setupStore221086133047
numNetworkReqs967019528107170
WebpackStandard HomeuiStartup8157241143808391016
load61655698273623816
domContentLoaded61154796972617810
domInteractive251498202282
firstPaint24887835180228636
backgroundConnect1153171429
firstReactRender29204153236
getState291351103747
initialActions107113
loadScripts60954596070614801
setupStore1243151425
numNetworkReqs1257620571
WebpackPower User HomeuiStartup14421024216324015631956
load67057012091266791018
domContentLoaded65956612001256601010
domInteractive36171833728152
firstPaint27690739172341630
backgroundConnect1573771829
firstReactRender8154121118795
getState16012427636164252
initialActions106112
loadScripts65656411891236581001
setupStore24971163460
numNetworkReqs1567030357197294
FirefoxBrowserifyStandard HomeuiStartup12081039155610812511449
load102189012067410671158
domContentLoaded102088912057510671157
domInteractive59281963779146
firstPaint------
backgroundConnect3621104163874
firstReactRender21174652134
getState1269513923
initialActions103112
loadScripts99987211797010471139
setupStore125161171035
numNetworkReqs1157116661
BrowserifyPower User HomeuiStartup25841875364832227873064
load1139901165017312101570
domContentLoaded1138901165017312101570
domInteractive14632617131172458
firstPaint------
backgroundConnect19222985205256714
firstReactRender83391702292123
getState24775888241193833
initialActions2024327
loadScripts1098886155315911631493
setupStore1467844203150740
numNetworkReqs97612234293207
WebpackStandard HomeuiStartup14711234191012515251760
load1248107215529713151419
domContentLoaded1247107215529713141419
domInteractive69282324184175
firstPaint------
backgroundConnect4021107164378
firstReactRender302178133171
getState126114131036
initialActions103122
loadScripts1223105615329512901372
setupStore12665101231
numNetworkReqs1157216660
WebpackPower User HomeuiStartup28132141383336429933553
load13701096188319915241806
domContentLoaded13701096188219915241806
domInteractive13129663128142449
firstPaint------
backgroundConnect172251132193197598
firstReactRender84391552197120
getState23083916231182835
initialActions318237
loadScripts13341060184618714641735
setupStore1216776193101756
numNetworkReqs996223044104214
📊 Page Load Benchmark Results

Current Commit: 8589241 | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 993ms (±57ms) 🟢 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 690ms (±54ms) 🟢 | historical mean value: 724ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±12ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 993ms 57ms 956ms 1.37s 1.05s 1.37s
domContentLoaded 690ms 54ms 659ms 1.04s 738ms 1.04s
firstPaint 78ms 12ms 60ms 184ms 88ms 184ms
firstContentfulPaint 78ms 12ms 60ms 184ms 88ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 50 Bytes (0%)
  • ui: -750 Bytes (-0.01%)
  • common: 33.7 KiB (0.38%)

@metamaskbot
Copy link
Collaborator

Builds ready [25df354]
UI Startup Metrics (1212 ± 94 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1212105314769412581404
load103189512928610831193
domContentLoaded102589012888610751185
domInteractive2414118182073
firstPaint66592122241710541170
backgroundConnect2081962397212221
firstReactRender25194862841
getState30187193349
initialActions105112
loadScripts823677107385875983
setupStore1175261124
numNetworkReqs1257820571
BrowserifyPower User HomeuiStartup18941546317727020172461
load1004878190117210081484
domContentLoaded98987318771719801468
domInteractive35161923830149
firstPaint5939114983879341111
backgroundConnect22320426812229245
firstReactRender7849138138498
getState18212834646198297
initialActions1011112
loadScripts78367316331677801256
setupStore20956102543
numNetworkReqs1517331251182277
WebpackStandard HomeuiStartup8307361024748601007
load62456983165627802
domContentLoaded61956582564623796
domInteractive2514109202187
firstPaint22485833158201617
backgroundConnect1164071529
firstReactRender3120149153336
getState301396123746
initialActions105111
loadScripts61656381562621787
setupStore1273241517
numNetworkReqs1257620570
WebpackPower User HomeuiStartup15931303286227017102168
load74562516111577491132
domContentLoaded73361915991567301114
domInteractive41192724333151
firstPaint330951129220425739
backgroundConnect1786392034
firstReactRender87521331497103
getState18014536143192291
initialActions102012
loadScripts73061615861547271104
setupStore231076172467
numNetworkReqs1297033447138244
FirefoxBrowserifyStandard HomeuiStartup12181083156710312621452
load103491012608110811213
domContentLoaded103391012598210811213
domInteractive60292303683128
firstPaint------
backgroundConnect3521134183877
firstReactRender21174642131
getState12615318949
initialActions102012
loadScripts101289312097610531189
setupStore95385919
numNetworkReqs1156716760
BrowserifyPower User HomeuiStartup27902072409837129643569
load1205978181017012171604
domContentLoaded1203977181017012161604
domInteractive14534612133151519
firstPaint------
backgroundConnect2623012153112401020
firstReactRender924119024100137
getState28793947276216886
initialActions3130337
loadScripts1164959178116111781573
setupStore1248798175119684
numNetworkReqs966320939101198
WebpackStandard HomeuiStartup14461245199212914941725
load1230107015229812781430
domContentLoaded1230107015229812781429
domInteractive68282344289142
firstPaint------
backgroundConnect4019160234289
firstReactRender27217762935
getState12691131245
initialActions103122
loadScripts1205105614679312501404
setupStore145182221071
numNetworkReqs1156716659
WebpackPower User HomeuiStartup27862094358328029843270
load13771079179118515441726
domContentLoaded13771073179118515441725
domInteractive12328444106141416
firstPaint------
backgroundConnect14327626134182489
firstReactRender84411471997115
getState30371896296468877
initialActions50691138
loadScripts13361060176617914511670
setupStore1166770180105646
numNetworkReqs976022140112195
📊 Page Load Benchmark Results

Current Commit: 25df354 | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±35ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 729ms (±34ms) 🟢 | historical mean value: 732ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±12ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 35ms 1.02s 1.31s 1.07s 1.31s
domContentLoaded 729ms 34ms 706ms 987ms 744ms 987ms
firstPaint 78ms 12ms 64ms 176ms 88ms 176ms
firstContentfulPaint 78ms 12ms 64ms 176ms 88ms 176ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 50 Bytes (0%)
  • ui: -800 Bytes (-0.01%)
  • common: 33.7 KiB (0.38%)

@metamaskbot
Copy link
Collaborator

Builds ready [1423536]
UI Startup Metrics (1251 ± 92 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1251107215519213121390
load106191412998811311197
domContentLoaded105590412928811271182
domInteractive241485162168
firstPaint59985130243210691205
backgroundConnect21820225110223238
firstReactRender301863103849
getState351483124156
initialActions103112
loadScripts845702107387916962
setupStore1162641319
numNetworkReqs1257720573
BrowserifyPower User HomeuiStartup19191584267225721242410
load1025887162915610331456
domContentLoaded1009878160215410071445
domInteractive37152424230161
firstPaint5809416214239431443
backgroundConnect23020526714240256
firstReactRender82501321489106
getState17813231442200270
initialActions102112
loadScripts79667913851527971242
setupStore20766102838
numNetworkReqs946720230100182
WebpackStandard HomeuiStartup78368896560821902
load58654278150598711
domContentLoaded58153775649594706
domInteractive211372141864
firstPaint227100769150200621
backgroundConnect1152961528
firstReactRender3019130143339
getState281258103449
initialActions105112
loadScripts57953574947592697
setupStore1162941320
numNetworkReqs1257720574
WebpackPower User HomeuiStartup14051187239722815551906
load66257514171356591020
domContentLoaded65256714061346391005
domInteractive35172063828138
firstPaint260911427192249619
backgroundConnect1574882029
firstReactRender794299128695
getState15312425229161226
initialActions104112
loadScripts6495651397131637993
setupStore20871122942
numNetworkReqs1466830055184290
FirefoxBrowserifyStandard HomeuiStartup12211057177212312891456
load103290614689410881216
domContentLoaded103190514689410881216
domInteractive62292233982144
firstPaint------
backgroundConnect3620135173879
firstReactRender22174862139
getState96687920
initialActions102012
loadScripts101089114399010611166
setupStore1055361028
numNetworkReqs1156715661
BrowserifyPower User HomeuiStartup26901862370239428893627
load1165931168317912301538
domContentLoaded1164930168317912291538
domInteractive14530598129154491
firstPaint------
backgroundConnect21725937246232785
firstReactRender85441551992123
getState251871269268204880
initialActions2117227
loadScripts1117911158517111581506
setupStore1189788184116749
numNetworkReqs98562254492212
WebpackStandard HomeuiStartup14621251203112915011752
load1238108914909112811452
domContentLoaded1238108814909112811452
domInteractive63272073482128
firstPaint------
backgroundConnect44211962745106
firstReactRender28217483039
getState116133131015
initialActions103012
loadScripts1212107314538512561406
setupStore13685131142
numNetworkReqs1156916663
WebpackPower User HomeuiStartup28002096373930829753505
load14021107185616915281751
domContentLoaded14011107185616915281750
domInteractive13731571123153452
firstPaint------
backgroundConnect17130833182201694
firstReactRender82401581991117
getState23567855251173840
initialActions5149838
loadScripts13681086180116415041713
setupStore92775115093621
numNetworkReqs97582364593213
📊 Page Load Benchmark Results

Current Commit: 1423536 | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.02s (±43ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 712ms (±40ms) 🟢 | historical mean value: 732ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 73ms (±14ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.02s 43ms 997ms 1.33s 1.07s 1.33s
domContentLoaded 712ms 40ms 691ms 999ms 739ms 999ms
firstPaint 73ms 14ms 56ms 200ms 84ms 200ms
firstContentfulPaint 73ms 14ms 56ms 200ms 84ms 200ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 50 Bytes (0%)
  • ui: -800 Bytes (-0.01%)
  • common: 33.7 KiB (0.38%)

@metamaskbot
Copy link
Collaborator

Builds ready [40d80c7]
UI Startup Metrics (1211 ± 99 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1211103316239912791378
load103289613599211051188
domContentLoaded102689313539110991180
domInteractive2313123182070
firstPaint549140136440910131168
backgroundConnect21319630013217236
firstReactRender27194883045
getState341697144060
initialActions105112
loadScripts821678114489892961
setupStore1172941121
numNetworkReqs1257720573
BrowserifyPower User HomeuiStartup18831534333727720722358
load1000872199917610031421
domContentLoaded98586119671729731408
domInteractive36161964029169
firstPaint6068120154159251425
backgroundConnect22220227513228245
firstReactRender7845118138799
getState18012840849204282
initialActions104112
loadScripts77966217141687711198
setupStore20964102638
numNetworkReqs1396829754182264
WebpackStandard HomeuiStartup78170297166820909
load58954281953593709
domContentLoaded58453880752587702
domInteractive221389141861
firstPaint22880815167201655
backgroundConnect1052641119
firstReactRender29204463338
getState271260103344
initialActions105112
loadScripts58253680050585693
setupStore1163641419
numNetworkReqs1257720571
WebpackPower User HomeuiStartup14291193250224215381904
load67158414111336711016
domContentLoaded66057613951326591004
domInteractive37171743828153
firstPaint2721001057190281643
backgroundConnect1575471927
firstReactRender8147122128599
getState15112224931167225
initialActions103112
loadScripts6575731373129657993
setupStore21966132948
numNetworkReqs1326630853155264
FirefoxBrowserifyStandard HomeuiStartup11791023169512012341426
load99587512618410481177
domContentLoaded99487112608510471176
domInteractive54291583172128
firstPaint------
backgroundConnect38212342837100
firstReactRender21174252133
getState95505919
initialActions102012
loadScripts97286112257810201136
setupStore11518518923
numNetworkReqs1257217665
BrowserifyPower User HomeuiStartup27111941380535428693497
load1163953170017612051562
domContentLoaded1162953170017612051561
domInteractive14332538124155455
firstPaint------
backgroundConnect232231031264250881
firstReactRender89491582399138
getState26384888243218863
initialActions2127327
loadScripts1125936167217211441528
setupStore1217789184107755
numNetworkReqs1016421541127203
WebpackStandard HomeuiStartup14411229201612514931671
load1225102815129512851382
domContentLoaded1225102815129512851381
domInteractive63272283780133
firstPaint------
backgroundConnect43191332345103
firstReactRender28197593035
getState1064361119
initialActions103122
loadScripts1198101414358712571353
setupStore13695161063
numNetworkReqs1256617663
WebpackPower User HomeuiStartup28112032385735830353449
load13821074197618614851787
domContentLoaded13821074197618614851786
domInteractive13229607123142457
firstPaint------
backgroundConnect18026938189220615
firstReactRender86413062993124
getState26586922254216820
initialActions4173837
loadScripts13441059188218114121762
setupStore112684817399631
numNetworkReqs98632244497212
📊 Page Load Benchmark Results

Current Commit: 40d80c7 | Date: 11/21/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±43ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 724ms (±40ms) 🟢 | historical mean value: 732ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±15ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 43ms 1.00s 1.37s 1.07s 1.37s
domContentLoaded 724ms 40ms 692ms 1.03s 745ms 1.03s
firstPaint 77ms 15ms 60ms 212ms 88ms 212ms
firstContentfulPaint 77ms 15ms 60ms 212ms 88ms 212ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 50 Bytes (0%)
  • ui: -800 Bytes (-0.01%)
  • common: 33.7 KiB (0.38%)

@metamaskbot
Copy link
Collaborator

Builds ready [6dc835b]
UI Startup Metrics (1194 ± 98 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1194102215859812491349
load101585813428910721151
domContentLoaded100885513298810641139
domInteractive231382152169
firstPaint68173135141410481164
backgroundConnect19718124012201229
firstReactRender25184772939
getState301680123555
initialActions103112
loadScripts818669112388879948
setupStore1172941223
numNetworkReqs1257820572
BrowserifyPower User HomeuiStartup18671565363829820232427
load1004875206818110031455
domContentLoaded98886920591809781442
domInteractive36162384229156
firstPaint4709520784119071447
backgroundConnect22520027213230252
firstReactRender79491241387101
getState17412737341181271
initialActions108112
loadScripts78366817951757741227
setupStore211085112642
numNetworkReqs1356530051176272
WebpackStandard HomeuiStartup813731105369836969
load61555882660627785
domContentLoaded61055581860623780
domInteractive2314101182076
firstPaint21081788139203591
backgroundConnect1153071429
firstReactRender28204753236
getState301462103746
initialActions103113
loadScripts60855380958621770
setupStore1152341318
numNetworkReqs1257720570
WebpackPower User HomeuiStartup14471201237724015861954
load65956412281286561025
domContentLoaded64855912171276391017
domInteractive34161573231134
firstPaint334911226233584706
backgroundConnect1584771828
firstReactRender81511081288101
getState16813627231176252
initialActions103012
loadScripts64555712071256371008
setupStore22977142856
numNetworkReqs1506630453182295
FirefoxBrowserifyStandard HomeuiStartup12491093182412112951488
load104993713037911081187
domContentLoaded104893713038011081187
domInteractive60312153882137
firstPaint------
backgroundConnect3821241264074
firstReactRender22184752235
getState11616017921
initialActions103112
loadScripts102792112557310821161
setupStore12590111135
numNetworkReqs1156516662
BrowserifyPower User HomeuiStartup26281840363632627693383
load1160947159117912311529
domContentLoaded1159947159017912311529
domInteractive13630538124149490
firstPaint------
backgroundConnect18027897213191713
firstReactRender85381381994120
getState22175895231177824
initialActions2025327
loadScripts1130929157117412061494
setupStore1457828213134753
numNetworkReqs90582034086193
WebpackStandard HomeuiStartup14381264203614914751727
load12251062158910512711425
domContentLoaded12251062158910512711425
domInteractive70272194393167
firstPaint------
backgroundConnect3819178254096
firstReactRender27207082839
getState116125121020
initialActions102012
loadScripts1200104015719912521404
setupStore12580111034
numNetworkReqs1257117663
WebpackPower User HomeuiStartup29792371401031731523618
load14311147204521315551855
domContentLoaded14311147204521315541854
domInteractive13430674137150495
firstPaint------
backgroundConnect21130959231266690
firstReactRender91392072299129
getState30986937292475890
initialActions4061737
loadScripts13951129201821215281826
setupStore94776814588512
numNetworkReqs91612154382200
📊 Page Load Benchmark Results

Current Commit: 6dc835b | Date: 11/21/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±73ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 740ms (±71ms) 🟢 | historical mean value: 731ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±10ms) 🟢 | historical mean value: 80ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 73ms 1.02s 1.34s 1.28s 1.34s
domContentLoaded 740ms 71ms 702ms 1.03s 952ms 1.03s
firstPaint 78ms 10ms 64ms 156ms 88ms 156ms
firstContentfulPaint 78ms 10ms 64ms 156ms 88ms 156ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 50 Bytes (0%)
  • ui: -800 Bytes (-0.01%)
  • common: 33.7 KiB (0.38%)

SteP-n-s
SteP-n-s previously approved these changes Nov 21, 2025
}),
trackUnifiedSwapBridgeEvent(
UnifiedSwapBridgeEventName.QuotesReceived,
getQuotesReceivedProperties(
Copy link
Contributor

@ghgoodreau ghgoodreau Nov 21, 2025

Choose a reason for hiding this comment

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

More of a non-blocking question about analytics, but will this analytics event fire if I submit on the first streamed quote and then click away?

Copy link
Contributor

Choose a reason for hiding this comment

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

If so, maybe fire the event immediately if activeQuote is present when the user clicks "Swap", rather than waiting for the stream to finish

Copy link
Member Author

@micaelae micaelae Nov 25, 2025

Choose a reason for hiding this comment

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

This one only fires at the end of the stream if the trade has not been submitted. Otherwise, the bridge controller publishes the event and cancels the stream on submission if it hasn't finished yet

ghgoodreau
ghgoodreau previously approved these changes Nov 21, 2025
@micaelae micaelae dismissed stale reviews from ghgoodreau and SteP-n-s via 7d668fe November 21, 2025 23:13
@micaelae micaelae marked this pull request as draft November 21, 2025 23:35
@metamaskbot
Copy link
Collaborator

Builds ready [7d668fe]
UI Startup Metrics (1269 ± 111 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12691093159211113381503
load1082901138610611541242
domContentLoaded1076898137910511471235
domInteractive251487172276
firstPaint57785138744010621210
backgroundConnect21920029712225240
firstReactRender26204862845
getState331789113655
initialActions108112
loadScripts86468911661049361023
setupStore1274861224
numNetworkReqs1257420572
BrowserifyPower User HomeuiStartup18781571264024420632436
load1016893176316510231475
domContentLoaded1001883174516310051446
domInteractive36162134228158
firstPaint5889717614069441438
backgroundConnect22620727213232255
firstReactRender7950109128997
getState17813232142187275
initialActions103112
loadScripts79267915221617931229
setupStore20762102640
numNetworkReqs90661873097173
WebpackStandard HomeuiStartup803724109871818970
load61055990967619779
domContentLoaded60655689866616773
domInteractive2314110172071
firstPaint21597810150200605
backgroundConnect1154071128
firstReactRender2920134123237
getState281477103543
initialActions103112
loadScripts60355488563614764
setupStore1172331316
numNetworkReqs1257720571
WebpackPower User HomeuiStartup14261186259325315541941
load66658513021316721013
domContentLoaded65657912871306511005
domInteractive35171663627140
firstPaint264901073177259619
backgroundConnect1474361825
firstReactRender8047116128896
getState15112229538158243
initialActions108112
loadScripts6535771274128649997
setupStore21960132649
numNetworkReqs91632093699190
FirefoxBrowserifyStandard HomeuiStartup12781119186612313391487
load107495613468611271230
domContentLoaded107395413468611221230
domInteractive64302043884148
firstPaint------
backgroundConnect43231282545118
firstReactRender22184952334
getState1067810921
initialActions102012
loadScripts104893312817810971201
setupStore14416720949
numNetworkReqs1156515654
BrowserifyPower User HomeuiStartup26211816375334228403338
load1155941166417812681499
domContentLoaded1154941166317812681499
domInteractive13829589127159458
firstPaint------
backgroundConnect16228819196184733
firstReactRender83381371791116
getState24075894246186852
initialActions217126
loadScripts1125924155117312511470
setupStore1215778180127639
numNetworkReqs90602054282199
WebpackStandard HomeuiStartup14441280202313514981724
load1222105915349812821391
domContentLoaded1221105815339812821391
domInteractive59272024079150
firstPaint------
backgroundConnect41212453340111
firstReactRender27199192937
getState146142191147
initialActions103112
loadScripts1197103914828812561357
setupStore145205211339
numNetworkReqs1256617663
WebpackPower User HomeuiStartup27941885375530929403507
load13891082190719515391778
domContentLoaded13881082190719515391777
domInteractive13728625135151489
firstPaint------
backgroundConnect14026765163164578
firstReactRender85371601996114
getState23478915244179834
initialActions3150527
loadScripts13541065186919215201727
setupStore106671017095592
numNetworkReqs91592194384204
📊 Page Load Benchmark Results

Current Commit: 7d668fe | Date: 11/21/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±70ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 731ms (±69ms) 🟢 | historical mean value: 731ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±13ms) 🟢 | historical mean value: 80ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 70ms 1.00s 1.34s 1.25s 1.34s
domContentLoaded 731ms 69ms 696ms 1.02s 932ms 1.02s
firstPaint 76ms 13ms 60ms 188ms 88ms 188ms
firstContentfulPaint 76ms 13ms 60ms 188ms 88ms 188ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 50 Bytes (0%)
  • ui: -800 Bytes (-0.01%)
  • common: 33.7 KiB (0.38%)

@metamaskbot
Copy link
Collaborator

Builds ready [b94b788]
UI Startup Metrics (1201 ± 100 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1201998151610012491412
load101485712698510581187
domContentLoaded100885512588410541178
domInteractive2615133252095
firstPaint5487512763999931188
backgroundConnect21219624810218233
firstReactRender2920144143445
getState331594123758
initialActions105112
loadScripts803657104883842977
setupStore1072941120
numNetworkReqs1257821574
BrowserifyPower User HomeuiStartup18991554273520119892238
load1024885189717910051497
domContentLoaded100987618641789851489
domInteractive44172675034185
firstPaint57110119064349681466
backgroundConnect22920526513235257
firstReactRender83451381791109
getState17113027827186222
initialActions103112
loadScripts79867916521787731270
setupStore20106592339
numNetworkReqs1356829754177291
WebpackStandard HomeuiStartup8116971043798301013
load63355785673653823
domContentLoaded62854985073649816
domInteractive27151362522100
firstPaint26487830202275717
backgroundConnect1056371217
firstReactRender27204163139
getState271298133448
initialActions104112
loadScripts62554784271647807
setupStore1063141220
numNetworkReqs1257821575
WebpackPower User HomeuiStartup14091108184415415151726
load6655871080109660954
domContentLoaded6555801072110646949
domInteractive39181914230165
firstPaint258891071205238925
backgroundConnect1374251620
firstReactRender82451171590104
getState14812420714157170
initialActions103112
loadScripts6535781062108644939
setupStore22955133349
numNetworkReqs1456931358191286
FirefoxBrowserifyStandard HomeuiStartup12211066162111112741463
load103091113338010711196
domContentLoaded102890613328010711191
domInteractive56302783575124
firstPaint------
backgroundConnect3721162233895
firstReactRender21174352134
getState106677918
initialActions102112
loadScripts100889713077610521157
setupStore1257513941
numNetworkReqs1156714751
BrowserifyPower User HomeuiStartup24491900320126026362906
load1153975164815311711517
domContentLoaded1152974164815311711516
domInteractive13032537118119455
firstPaint------
backgroundConnect1122952188123293
firstReactRender87421732497133
getState24064829205308722
initialActions2029327
loadScripts1116951161214811301492
setupStore1457763199116659
numNetworkReqs93602214281214
WebpackStandard HomeuiStartup14131249180711614641701
load1204104714379012661397
domContentLoaded1204104714369012661397
domInteractive59271773684128
firstPaint------
backgroundConnect3816126204191
firstReactRender26186152734
getState126129141144
initialActions102112
loadScripts1181103314058512421329
setupStore11586111033
numNetworkReqs1156615653
WebpackPower User HomeuiStartup26482084335527728643156
load13671127217819815281753
domContentLoaded13671127217719815281753
domInteractive1102854711099395
firstPaint------
backgroundConnect1042442573119258
firstReactRender82381571993123
getState28672885227429769
initialActions3149727
loadScripts13301104191218614731722
setupStore1147795153122525
numNetworkReqs916320434127153
📊 Page Load Benchmark Results

Current Commit: b94b788 | Date: 11/24/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±137ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 746ms (±157ms) 🟢 | historical mean value: 719ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 95ms (±216ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 137ms 1.01s 2.26s 1.26s 2.26s
domContentLoaded 746ms 157ms 702ms 2.18s 945ms 2.18s
firstPaint 95ms 216ms 60ms 2.24s 84ms 2.24s
firstContentfulPaint 95ms 216ms 60ms 2.24s 84ms 2.24s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 50 Bytes (0%)
  • ui: -800 Bytes (-0.01%)
  • common: 33.7 KiB (0.38%)

@metamaskbot
Copy link
Collaborator

Builds ready [2cfeca6]
UI Startup Metrics (1366 ± 146 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup13661082191714614201664
load1086883153911311181312
domContentLoaded1079880153311311101302
domInteractive2715107222292
firstPaint59179154645110771286
backgroundConnect22220131616229250
firstReactRender402378114560
getState69191693185132
initialActions108115
loadScripts86466813201118911091
setupStore1563671732
numNetworkReqs41271483430143
BrowserifyPower User HomeuiStartup23321902341828624742853
load1024901179615410011422
domContentLoaded100987217851559901413
domInteractive38172223933156
firstPaint5919218074169601316
backgroundConnect274203755126236589
firstReactRender954719626114138
getState20113768989212264
initialActions107112
loadScripts79967115691537801205
setupStore231047102744
numNetworkReqs1426641074181318
WebpackStandard HomeuiStartup86771211471149211117
load64354593490700841
domContentLoaded63854192890692833
domInteractive2614112222088
firstPaint27075942188290693
backgroundConnect1155571323
firstReactRender3718122193983
getState4614104236396
initialActions104112
loadScripts63553992588690825
setupStore14551101444
numNetworkReqs42281483431144
WebpackPower User HomeuiStartup17881321232323919602279
load689596100988706919
domContentLoaded679589100489698914
domInteractive36171462935119
firstPaint31595853202410698
backgroundConnect1038613171113564
firstReactRender924813621109124
getState17612767573181224
initialActions104112
loadScripts67658799488696906
setupStore21757122448
numNetworkReqs1186737263118292
FirefoxBrowserifyStandard HomeuiStartup13911150256118814611734
load1064906217314411091240
domContentLoaded1062905216614411091240
domInteractive7032109610889124
firstPaint------
backgroundConnect60232344064158
firstReactRender28195993449
getState2098892234
initialActions105122
loadScripts1040887208513710771207
setupStore2312112172248
numNetworkReqs40281262731120
BrowserifyPower User HomeuiStartup26862014455040628673398
load1143982173514411711484
domContentLoaded1142982173514511711484
domInteractive12450619102112379
firstPaint------
backgroundConnect1353242692148411
firstReactRender89432442597129
getState28952910208381754
initialActions2130323
loadScripts1108962160313511261430
setupStore16216983185160635
numNetworkReqs102623126681243
WebpackStandard HomeuiStartup17431476224119318472169
load13451186163010714171549
domContentLoaded13441185162910714161549
domInteractive71291893793134
firstPaint------
backgroundConnect73262284385163
firstReactRender3723120144072
getState2811174222858
initialActions205123
loadScripts1310116915599913771496
setupStore31131873226117
numNetworkReqs41291302738122
WebpackPower User HomeuiStartup30712148579081230974869
load15211172297747215962692
domContentLoaded15201172297047215962692
domInteractive137291043183101437
firstPaint------
backgroundConnect1842913742691441022
firstReactRender91393154892208
getState29057934239377860
initialActions206123
loadScripts14131151278435014782346
setupStore1327758171159573
numNetworkReqs99632545483245
📊 Page Load Benchmark Results

Current Commit: 2cfeca6 | Date: 11/25/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±75ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 733ms (±72ms) 🟢 | historical mean value: 731ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±12ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 75ms 1.01s 1.40s 1.26s 1.40s
domContentLoaded 733ms 72ms 697ms 1.06s 937ms 1.06s
firstPaint 76ms 12ms 60ms 184ms 84ms 184ms
firstContentfulPaint 76ms 12ms 60ms 184ms 84ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 59 Bytes (0%)
  • ui: -809 Bytes (-0.01%)
  • common: 33.69 KiB (0.38%)

@metamaskbot
Copy link
Collaborator

Builds ready [5aadff0]
📊 Page Load Benchmark Results

Current Commit: 5aadff0 | Date: 11/26/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.07s (±73ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 747ms (±68ms) 🟢 | historical mean value: 731ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±10ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.07s 73ms 1.03s 1.35s 1.29s 1.35s
domContentLoaded 747ms 68ms 711ms 1.02s 946ms 1.02s
firstPaint 79ms 10ms 64ms 152ms 92ms 152ms
firstContentfulPaint 79ms 10ms 64ms 152ms 92ms 152ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -150 Bytes (0%)
  • ui: -728 Bytes (-0.01%)
  • common: 819.07 KiB (9.34%)

@metamaskbot
Copy link
Collaborator

Builds ready [bbf2923]
📊 Page Load Benchmark Results

Current Commit: bbf2923 | Date: 11/26/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±82ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 716ms (±93ms) 🟢 | historical mean value: 720ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 91ms (±133ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 82ms 975ms 1.45s 1.27s 1.45s
domContentLoaded 716ms 93ms 674ms 1.35s 965ms 1.35s
firstPaint 91ms 133ms 64ms 1.41s 88ms 1.41s
firstContentfulPaint 91ms 133ms 64ms 1.41s 88ms 1.41s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -150 Bytes (0%)
  • ui: -724 Bytes (-0.01%)
  • common: 819.07 KiB (9.34%)

@socket-security
Copy link

socket-security bot commented Nov 26, 2025

Caution

MetaMask internal reviewing guidelines:

  • Do not ignore-all
  • Each alert has instructions on how to review if you don't know what it means. If lost, ask your Security Liaison or the supply-chain group
  • Copy-paste ignore lines for specific packages or a group of one kind with a note on what research you did to deem it safe.
    @SocketSecurity ignore npm/PACKAGE@VERSION
Action Severity Alert  (click "▶" to expand/collapse)
Block Medium
Network access: npm @metamask/bridge-controller in module globalThis["fetch"]

Module: globalThis["fetch"]

Location: Package overview

From: package.jsonnpm/@metamask/[email protected]

ℹ Read more on: This package | This alert | What is network access?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at [email protected].

Suggestion: Packages should remove all network access that is functionally unnecessary. Consumers should audit network access to ensure legitimate use.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@metamask/[email protected]. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Medium
Network access: npm @metamask/bridge-status-controller in module globalThis["fetch"]

Module: globalThis["fetch"]

Location: Package overview

From: package.jsonnpm/@metamask/[email protected]

ℹ Read more on: This package | This alert | What is network access?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at [email protected].

Suggestion: Packages should remove all network access that is functionally unnecessary. Consumers should audit network access to ensure legitimate use.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@metamask/[email protected]. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

@micaelae
Copy link
Member Author

@metamaskbot update-policies

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

Labels

size-M team-swaps-and-bridge Swaps and Bridge team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants