Skip to content

Conversation

@FrederikBolding
Copy link
Member

@FrederikBolding FrederikBolding commented Nov 19, 2025

Description

This bumps Snaps packages to the latest version. Notable changes include:

  • Ensure the user has onboarded before allowing usage of Snaps.
  • Use a mutex for snap_setState operations
  • Support specified clientVersions in the registry

Open in GitHub Codespaces

Changelog

CHANGELOG entry: Fixed a rare issue where Snaps updating state rapidly would lose data


Note

Bumps Snaps packages, requires onboarding completion before Snap operations, and passes extension client version to the Snaps registry; updates messengers, tests, and LavaMoat policy.

  • Snaps Init:
    • Add OnboardingController:getState and subscribe to OnboardingController:stateChange in SnapControllerInit messenger.
    • Implement and pass ensureOnboardingComplete to SnapController.
  • Snaps Registry:
    • Provide clientConfig with { type: 'extension', version }, parsing METAMASK_VERSION to strip prerelease tags.
  • Dependencies/Policies:
    • Bump @metamask/snaps-controllers to ^17.0.0 and @metamask/snaps-rpc-methods to ^14.1.1 (lockfile updates incl. @metamask/snaps-registry@^3.3.0).
    • Update LavaMoat policies to allow @metamask/eth-qr-keyring>async-mutex under @metamask/snaps-rpc-methods.
  • Tests:
    • Update tests to assert ensureOnboardingComplete wiring and clientConfig.version behavior.

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

@metamaskbot metamaskbot added the team-core-platform Core Platform team label Nov 19, 2025
@socket-security
Copy link

socket-security bot commented Nov 19, 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/​snaps-rpc-methods@​14.1.0 ⏵ 14.1.199 -110076 -2497 -350 -50
Updated@​metamask/​snaps-controllers@​16.1.1 ⏵ 17.0.098 +110076 +198 +150

View full report

@metamaskbot
Copy link
Collaborator

metamaskbot commented Nov 19, 2025

✨ Files requiring CODEOWNER review ✨

🫰 @MetaMask/core-platform (5 files, +77 -4)
  • 📁 app/
    • 📁 scripts/
      • 📁 controller-init/
        • 📁 messengers/
          • 📁 snaps/
            • 📄 snap-controller-messenger.ts +16 -3
        • 📁 snaps/
          • 📄 snap-controller-init.test.ts +1 -0
          • 📄 snap-controller-init.ts +32 -1
          • 📄 snaps-registry-init.test.ts +13 -0
          • 📄 snaps-registry-init.ts +15 -0

🧩 @MetaMask/extension-devs (5 files, +10 -5)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +2 -1
      • 📁 experimental/
        • 📄 policy.json +2 -1
      • 📁 flask/
        • 📄 policy.json +2 -1
      • 📁 main/
        • 📄 policy.json +2 -1
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +2 -1

📜 @MetaMask/policy-reviewers (5 files, +10 -5)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +2 -1
      • 📁 experimental/
        • 📄 policy.json +2 -1
      • 📁 flask/
        • 📄 policy.json +2 -1
      • 📁 main/
        • 📄 policy.json +2 -1
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +2 -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 (5 files, +10 -5)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +2 -1
      • 📁 experimental/
        • 📄 policy.json +2 -1
      • 📁 flask/
        • 📄 policy.json +2 -1
      • 📁 main/
        • 📄 policy.json +2 -1
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +2 -1

@FrederikBolding
Copy link
Member Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Builds ready [bd56653]
📊 Page Load Benchmark Results

Current Commit: bd56653 | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±72ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 736ms (±70ms) 🟢 | historical mean value: 725ms ⬆️ (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.05s 72ms 1.01s 1.33s 1.27s 1.33s
domContentLoaded 736ms 70ms 697ms 1.01s 946ms 1.01s
firstPaint 79ms 10ms 60ms 160ms 92ms 160ms
firstContentfulPaint 79ms 10ms 60ms 160ms 92ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.12 KiB (0.02%)
  • ui: 77 Bytes (0%)
  • common: 182 Bytes (0%)

@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 [38550f0]
📊 Page Load Benchmark Results

Current Commit: 38550f0 | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.02s (±38ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 713ms (±34ms) 🟢 | historical mean value: 722ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 74ms (±11ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.02s 38ms 976ms 1.30s 1.05s 1.30s
domContentLoaded 713ms 34ms 677ms 959ms 731ms 959ms
firstPaint 74ms 11ms 56ms 164ms 84ms 164ms
firstContentfulPaint 74ms 11ms 56ms 164ms 84ms 164ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.12 KiB (0.02%)
  • ui: 665 Bytes (0.01%)
  • common: 280 Bytes (0%)

@metamaskbot
Copy link
Collaborator

Builds ready [459e650]
📊 Page Load Benchmark Results

Current Commit: 459e650 | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.02s (±39ms) 🟡 | historical mean value: 1.03s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 712ms (±37ms) 🟢 | historical mean value: 718ms ⬇️ (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.02s 39ms 1.00s 1.34s 1.04s 1.34s
domContentLoaded 712ms 37ms 693ms 1.01s 723ms 1.01s
firstPaint 76ms 12ms 56ms 184ms 88ms 184ms
firstContentfulPaint 76ms 12ms 56ms 184ms 88ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.12 KiB (0.02%)
  • ui: 674 Bytes (0.01%)
  • common: 280 Bytes (0%)

@metamaskbot metamaskbot added the INVALID-PR-TEMPLATE PR's body doesn't match template label Nov 19, 2025
@metamaskbot
Copy link
Collaborator

Builds ready [312ec52]
UI Startup Metrics (1258 ± 106 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12581080159610613401430
load107692414109911371238
domContentLoaded106991814049811281226
domInteractive2515117192172
firstPaint55379142042910761233
backgroundConnect21619626311218239
firstReactRender27195382749
getState321769103857
initialActions104112
loadScripts8627031170979211021
setupStore1143241222
numNetworkReqs1367619670
BrowserifyPower User HomeuiStartup19061569276125520562498
load1021901169215310191475
domContentLoaded100589216781529981436
domInteractive36161993830146
firstPaint5649117044159641453
backgroundConnect22620827312231253
firstReactRender8043126138999
getState17713334343197267
initialActions104112
loadScripts79769414621517931237
setupStore22969122848
numNetworkReqs956720831103183
WebpackStandard HomeuiStartup84770911671008651114
load59954690077602800
domContentLoaded59254088073596784
domInteractive171161121456
firstPaint20259891212178788
backgroundConnect251285162659
firstReactRender3619269303761
getState19113952229
initialActions102111
loadScripts58953887072593776
setupStore1263151422
numNetworkReqs1367719871
WebpackPower User HomeuiStartup13571152234922515011798
load6545701123113667972
domContentLoaded6345581049102636926
domInteractive27131483119121
firstPaint297631055285588932
backgroundConnect52112764671140
firstReactRender7643109128292
getState15612224523171195
initialActions103011
loadScripts6315561041100634918
setupStore15655122136
numNetworkReqs1307025147175214
FirefoxBrowserifyStandard HomeuiStartup13131095165311213881532
load110494113268411651240
domContentLoaded110394113238411641240
domInteractive67321784085151
firstPaint------
backgroundConnect4223123194687
firstReactRender24195972447
getState11675101022
initialActions103012
loadScripts107792812997911371214
setupStore12678101127
numNetworkReqs1266214756
BrowserifyPower User HomeuiStartup27282178360328729343273
load1203955171318312481573
domContentLoaded1202955171318312481573
domInteractive14231555134157525
firstPaint------
backgroundConnect22824978263325825
firstReactRender84381451993121
getState21060860210184830
initialActions208126
loadScripts1167940167317711951548
setupStore1365795214125756
numNetworkReqs94482264389207
WebpackStandard HomeuiStartup14081206189211814521644
load1200104214629012661360
domContentLoaded1200104214619012661360
domInteractive58271833780132
firstPaint------
backgroundConnect4020120194286
firstReactRender281972103051
getState136164181144
initialActions103012
loadScripts1175102414248412441323
setupStore136100131145
numNetworkReqs1266516763
WebpackPower User HomeuiStartup28172285376332529603600
load14001122203018814681843
domContentLoaded14001121203018814681843
domInteractive14132658136157507
firstPaint------
backgroundConnect18728865199212712
firstReactRender88412422697123
getState23178876240174843
initialActions4056838
loadScripts13631104193317214391801
setupStore1299753196117717
numNetworkReqs96582234393208
📊 Page Load Benchmark Results

Current Commit: 312ec52 | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±37ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 716ms (±36ms) 🟢 | historical mean value: 722ms ⬇️ (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.03s 37ms 1.00s 1.30s 1.06s 1.30s
domContentLoaded 716ms 36ms 692ms 980ms 749ms 980ms
firstPaint 76ms 10ms 60ms 156ms 84ms 156ms
firstContentfulPaint 76ms 10ms 60ms 156ms 84ms 156ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.12 KiB (0.02%)
  • ui: 0 Bytes (0%)
  • common: 182 Bytes (0%)

@FrederikBolding FrederikBolding marked this pull request as ready for review November 19, 2025 14:54
@FrederikBolding FrederikBolding requested review from a team as code owners November 19, 2025 14:54
initMessenger.subscribe('OnboardingController:stateChange', listener);

await promise;
}
Copy link

Choose a reason for hiding this comment

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

Bug: Event listener not unsubscribed on error paths

In ensureOnboardingComplete, the OnboardingController:stateChange listener is only unsubscribed when completedOnboarding becomes true. If the promise is rejected, cancelled, or the await is interrupted, the listener remains subscribed indefinitely, causing a memory leak and continued event processing. The listener should be properly cleaned up in all execution paths, such as using a try-finally block or similar error handling mechanism.

Fix in Cursor Fix in Web

Copy link
Member Author

Choose a reason for hiding this comment

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

We control the promise, so it will only ever resolve.

initMessenger.subscribe('OnboardingController:stateChange', listener);

await promise;
}
Copy link

Choose a reason for hiding this comment

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

Bug: Race condition causes hanging if onboarding completes before listener subscribes

In ensureOnboardingComplete, there's a window between checking completedOnboarding state (line 103) and subscribing to the event listener (line 120). If onboarding completes during this window and no further state changes occur, the promise will hang indefinitely because the listener only resolves on future state changes. The function should re-check the state after subscribing or use a mechanism that handles already-completed onboarding.

Fix in Cursor Fix in Web

Copy link
Member Author

Choose a reason for hiding this comment

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

I'm assuming that onboarding cannot happen while the controllers are initializing so this is a moot point

cryptodev-2s
cryptodev-2s previously approved these changes Nov 19, 2025
Copy link
Contributor

@cryptodev-2s cryptodev-2s left a comment

Choose a reason for hiding this comment

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

LGTM!

@metamaskbot
Copy link
Collaborator

Builds ready [1c642df]
UI Startup Metrics (1215 ± 92 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1215105314819212771383
load103089612538610911180
domContentLoaded102488712458510831175
domInteractive231489182078
firstPaint55079121039810061125
backgroundConnect20919126612212236
firstReactRender29185183745
getState31166193748
initialActions102112
loadScripts822674104785877967
setupStore1162941120
numNetworkReqs1367419671
BrowserifyPower User HomeuiStartup18691550319226519952376
load1010893199316910041428
domContentLoaded99688619731679841404
domInteractive37151764228170
firstPaint49510020033879151019
backgroundConnect22420129413230251
firstReactRender80481241489102
getState17312933241190265
initialActions104112
loadScripts78867816991617841192
setupStore20857112844
numNetworkReqs976920130104173
WebpackStandard HomeuiStartup8306961095898551042
load57852886266582729
domContentLoaded57052381561574715
domInteractive171166101445
firstPaint18956858188172698
backgroundConnect261284162776
firstReactRender321977103745
getState18113252129
initialActions106112
loadScripts56851880759572708
setupStore1252641419
numNetworkReqs1467420872
WebpackPower User HomeuiStartup13601169237221914561848
load66357013311386591061
domContentLoaded64255111791246341021
domInteractive32132244219151
firstPaint313621150264584879
backgroundConnect50122454269115
firstReactRender7742106128490
getState15111322120161193
initialActions104111
loadScripts63954911711226321012
setupStore19681153350
numNetworkReqs1316827252174241
FirefoxBrowserifyStandard HomeuiStartup12531076165211113341442
load105993012747911171210
domContentLoaded105893012747911131210
domInteractive60302163682134
firstPaint------
backgroundConnect3820124204296
firstReactRender22184252335
getState115162161022
initialActions102022
loadScripts103591612187210811170
setupStore11668101032
numNetworkReqs1266114855
BrowserifyPower User HomeuiStartup26821748356430529143133
load1193952160917312571554
domContentLoaded1193952160917312571548
domInteractive14132554136158515
firstPaint------
backgroundConnect20726921229290697
firstReactRender84401511893121
getState24785929246197845
initialActions3026327
loadScripts1150936157816811881529
setupStore1276865206116775
numNetworkReqs95542134098203
WebpackStandard HomeuiStartup14331210182612914881740
load1224105415089412931415
domContentLoaded1223105315079412931415
domInteractive67262314292133
firstPaint------
backgroundConnect42191242343107
firstReactRender28207293040
getState126113141044
initialActions102012
loadScripts1196103514319012601368
setupStore14572151058
numNetworkReqs1366717764
WebpackPower User HomeuiStartup28722148379630730523462
load13871100185420215321812
domContentLoaded13861100185420215321812
domInteractive13928566140159497
firstPaint------
backgroundConnect16822700173223600
firstReactRender903921928103150
getState27382939267245879
initialActions41591038
loadScripts13511085182419714831768
setupStore105572215593515
numNetworkReqs95602214391211
📊 Page Load Benchmark Results

Current Commit: 1c642df | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.02s (±39ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 712ms (±37ms) 🟢 | historical mean value: 723ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 74ms (±15ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.02s 39ms 1.00s 1.34s 1.03s 1.34s
domContentLoaded 712ms 37ms 694ms 1.01s 719ms 1.01s
firstPaint 74ms 15ms 60ms 208ms 80ms 208ms
firstContentfulPaint 74ms 15ms 60ms 208ms 80ms 208ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.2 KiB (0.03%)
  • ui: -126 Bytes (0%)
  • common: 133 Bytes (0%)

@metamaskbot
Copy link
Collaborator

Builds ready [6503485]
UI Startup Metrics (1229 ± 96 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1229104414909612951374
load104989113089111181188
domContentLoaded104388613029011061184
domInteractive2414105191982
firstPaint54080119541410381165
backgroundConnect2091932418213221
firstReactRender30205793450
getState331768114054
initialActions105112
loadScripts839688110790903982
setupStore1152531318
numNetworkReqs1367619672
BrowserifyPower User HomeuiStartup19311623304328520792582
load1017867166018310151580
domContentLoaded100186116501809961567
domInteractive38172374728179
firstPaint5429216163969381318
backgroundConnect22520428614230256
firstReactRender82501361489103
getState17812932539196263
initialActions106112
loadScripts79466314401777891339
setupStore211155102742
numNetworkReqs1376927045168245
WebpackStandard HomeuiStartup8497141171818681010
load59754590562602747
domContentLoaded59154088259596733
domInteractive181165121553
firstPaint18956818192187735
backgroundConnect261098172969
firstReactRender3420111153964
getState20123552329
initialActions102111
loadScripts58853887457594724
setupStore1262641418
numNetworkReqs1367619872
WebpackPower User HomeuiStartup13591164245623614681882
load66757112121446611080
domContentLoaded64755911621326331033
domInteractive30131973819139
firstPaint3106411662805771025
backgroundConnect48112254269153
firstReactRender7843113148698
getState15310732629162197
initialActions102011
loadScripts64455711531306311025
setupStore19691173455
numNetworkReqs1046224042116196
FirefoxBrowserifyStandard HomeuiStartup12191067175411712801446
load102692112127210851175
domContentLoaded102692112067210851175
domInteractive58292323581128
firstPaint------
backgroundConnect3517148193873
firstReactRender22184352235
getState1169614922
initialActions103012
loadScripts100590511686710581136
setupStore13519521938
numNetworkReqs1266115856
BrowserifyPower User HomeuiStartup25911877360834527583311
load1153939167018911761616
domContentLoaded1152933167018911761616
domInteractive14730648148154544
firstPaint------
backgroundConnect184251004222186698
firstReactRender84371562194128
getState20984900209184843
initialActions2011226
loadScripts1117923163418111201561
setupStore1186785182114744
numNetworkReqs96592194390204
WebpackStandard HomeuiStartup14161216180211114661661
load1210106215388812651376
domContentLoaded1210106215378812651375
domInteractive70271954086131
firstPaint------
backgroundConnect3920124214088
firstReactRender281871102953
getState145167211051
initialActions1010122
loadScripts1183104715158412431339
setupStore13571121247
numNetworkReqs1356616762
WebpackPower User HomeuiStartup27032226361026028673201
load13431091177316313861688
domContentLoaded13421091177316313861688
domInteractive12831548121139444
firstPaint------
backgroundConnect15325742166169601
firstReactRender85381812495135
getState26178869266187829
initialActions3144637
loadScripts13101076174815913321648
setupStore1178769179107630
numNetworkReqs94552244392199
📊 Page Load Benchmark Results

Current Commit: 6503485 | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 983ms (±78ms) 🟢 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 685ms (±101ms) 🟢 | historical mean value: 728ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 82ms (±82ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 983ms 78ms 951ms 1.70s 1.01s 1.70s
domContentLoaded 685ms 101ms 657ms 1.66s 700ms 1.66s
firstPaint 82ms 82ms 60ms 896ms 84ms 896ms
firstContentfulPaint 82ms 82ms 60ms 896ms 84ms 896ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.21 KiB (0.03%)
  • ui: -481.34 KiB (-6.45%)
  • common: 132 Bytes (0%)

Copy link
Member

@Mrtenz Mrtenz left a comment

Choose a reason for hiding this comment

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

Cursor has some comments that seem worth addressing.

Mrtenz
Mrtenz previously approved these changes Nov 19, 2025
@FrederikBolding
Copy link
Member Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

No policy changes

@metamaskbot
Copy link
Collaborator

Builds ready [62f9d5b]
UI Startup Metrics (1249 ± 97 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1249108114639713231432
load106690612639011301215
domContentLoaded105990312588911271208
domInteractive2514104202281
firstPaint57687125242610601211
backgroundConnect2181982599223235
firstReactRender30205193847
getState341770113960
initialActions105112
loadScripts848702105188909987
setupStore1153241318
numNetworkReqs1257420572
BrowserifyPower User HomeuiStartup18541463273427320342483
load95482915901629541431
domContentLoaded94082115781629341420
domInteractive35152134029149
firstPaint60210015973658981226
backgroundConnect20818429115215233
firstReactRender79441521886116
getState19313935749211298
initialActions103012
loadScripts74764513001547431217
setupStore20964122842
numNetworkReqs1427430353175268
WebpackStandard HomeuiStartup78469397967827927
load58753880455595729
domContentLoaded58253579654591722
domInteractive221476141964
firstPaint23981768170207626
backgroundConnect1062951223
firstReactRender2919172163237
getState281252113746
initialActions102112
loadScripts57953278953589715
setupStore1263261427
numNetworkReqs1257821575
WebpackPower User HomeuiStartup14561192253623015921936
load67558214061316761010
domContentLoaded66557613811296631002
domInteractive35161913430137
firstPaint276871054197280683
backgroundConnect1573761629
firstReactRender8344112129299
getState15712231733161225
initialActions104112
loadScripts6625741369127660993
setupStore23969153356
numNetworkReqs1476731155194245
FirefoxBrowserifyStandard HomeuiStartup11911063168612012211489
load100390612517310451144
domContentLoaded100190612517310441144
domInteractive52291732871120
firstPaint------
backgroundConnect3420145183673
firstReactRender20173532127
getState96526919
initialActions102022
loadScripts98288512277110241119
setupStore12513318830
numNetworkReqs1156816763
BrowserifyPower User HomeuiStartup26471891369234128343415
load1155951160117212351493
domContentLoaded1154951160117212341493
domInteractive14234537121155458
firstPaint------
backgroundConnect21026995235266769
firstReactRender86401381896124
getState30083886272353832
initialActions2133324
loadScripts1120931157717011921469
setupStore1226783186119714
numNetworkReqs97572104096195
WebpackStandard HomeuiStartup14211217189912314691684
load1209105914539312741378
domContentLoaded1209105914539312741378
domInteractive60262053883131
firstPaint------
backgroundConnect43191983140114
firstReactRender27206972939
getState1165291041
initialActions102012
loadScripts1182104514328912501353
setupStore146184231237
numNetworkReqs1256817663
WebpackPower User HomeuiStartup28052031384635929923561
load13691096200219614961782
domContentLoaded13691095200119614961781
domInteractive13229632136148495
firstPaint------
backgroundConnect16225946182173597
firstReactRender83381271993117
getState23084935233186844
initialActions4157838
loadScripts13341079189418914101752
setupStore1435779212131742
numNetworkReqs98642354494218
📊 Page Load Benchmark Results

Current Commit: 62f9d5b | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±73ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 743ms (±70ms) 🟢 | historical mean value: 725ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±11ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 73ms 1.01s 1.35s 1.31s 1.35s
domContentLoaded 743ms 70ms 699ms 1.02s 978ms 1.02s
firstPaint 78ms 11ms 60ms 160ms 88ms 160ms
firstContentfulPaint 78ms 11ms 60ms 160ms 88ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.21 KiB (0.03%)
  • ui: 0 Bytes (0%)
  • common: 182 Bytes (0%)

@FrederikBolding FrederikBolding added this pull request to the merge queue Nov 20, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Nov 20, 2025
@FrederikBolding FrederikBolding added this pull request to the merge queue Nov 20, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Nov 20, 2025
@FrederikBolding FrederikBolding added this pull request to the merge queue Nov 20, 2025
Merged via the queue into main with commit 35c98db Nov 20, 2025
176 checks passed
@FrederikBolding FrederikBolding deleted the fb/snaps-bump-v133 branch November 20, 2025 13:42
@github-actions github-actions bot locked and limited conversation to collaborators Nov 20, 2025
@metamaskbot metamaskbot added the release-13.11.0 Issue or pull request that will be included in release 13.11.0 label Nov 20, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

INVALID-PR-TEMPLATE PR's body doesn't match template release-13.11.0 Issue or pull request that will be included in release 13.11.0 size-S team-core-platform Core Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants