Skip to content

Conversation

MoMannn
Copy link
Contributor

@MoMannn MoMannn commented Sep 30, 2025

Description

This PR adds RPC methods for upgrading Externally Owned Accounts (EOAs) to EIP-7702 delegator accounts. This functions are only callable by preinstalled snaps. It adds

  • wallet_upgradeAccount for upgrading the account
  • wallet_getAccountUpgradeStatus for checking if account is upgraded or not

Open in GitHub Codespaces

Related Issues

Changelog

CHANGELOG entry: null

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

Introduces EIP-7702 account upgrade/status RPC for snaps, wires middleware in the controller, adds shared upgrade/downgrade utils, refactors the UI hook/tests, and updates policies/deps.

  • RPC/Middleware:
    • Add wallet_upgradeAccount and wallet_getAccountUpgradeStatus via @metamask/eip-7702-internal-rpc-middleware and register as eip7702Middleware in app/scripts/metamask-controller.js.
    • Enable for Snap subjects when isFlask() or the Snap is preinstalled; uses hooks for upgradeAccount, getCurrentChainIdForDomain, isAtomicBatchSupported, getCode, and permitted accounts.
    • New getCurrentChainIdForDomain(domain) helper.
  • Controller:
    • Implement upgradeAccount(address, upgradeContractAddress, chainId) using createEIP7702UpgradeTransaction and toHex(chainId).
  • Shared Utils (shared/lib/eip7702-utils.ts):
    • Add createEIP7702UpgradeTransaction, createEIP7702DowngradeTransaction, isAccountUpgraded, and EIP_7702_REVOKE_ADDRESS.
  • UI:
    • Refactor useEIP7702Account to use shared utils; export EIP_7702_REVOKE_ADDRESS.
    • Update tests to import the shared constant and assert requireApproval and transaction types.
  • Policy/Deps:
    • Add @metamask/eip-7702-internal-rpc-middleware to package.json, yarn.lock, and LavaMoat policies.
  • Minor:
    • Improve error message formatting in getControllerOrThrow.

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

@MoMannn MoMannn requested a review from a team as a code owner September 30, 2025 09:23
Copy link
Contributor

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

@metamaskbot metamaskbot added the team-delegation MetaMask Delegation Team label Sep 30, 2025
@MoMannn MoMannn changed the title Add account upgrade and check status RPC methods Feat: Add account upgrade and check status RPC methods Sep 30, 2025
@MoMannn MoMannn changed the title Feat: Add account upgrade and check status RPC methods feat: Add account upgrade and check status RPC methods Sep 30, 2025
cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

metamaskbot commented Sep 30, 2025

✨ Files requiring CODEOWNER review ✨

@MetaMask/confirmations (2 files, +52 -58)
  • 📁 ui/
    • 📁 pages/
      • 📁 confirmations/
        • 📁 hooks/
          • 📄 useEIP7702Account.test.ts +9 -10
          • 📄 useEIP7702Account.ts +43 -48

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

📊 Page Load Benchmark Results

Current Commit: 0511ad1 | Date: 9/30/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±99ms) 🟡 | historical mean value: 1.06s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 735ms (±120ms) 🟢 | historical mean value: 739ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 84ms (±89ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 99ms 1.00s 1.79s 1.24s 1.79s
domContentLoaded 735ms 120ms 691ms 1.75s 929ms 1.75s
firstPaint 84ms 89ms 60ms 964ms 88ms 964ms
firstContentfulPaint 84ms 89ms 60ms 964ms 88ms 964ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [0511ad1]
UI Startup Metrics (1234 ± 67 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1234111214286712701334
load106596312365810921162
domContentLoaded105995712285810861155
domInteractive18145681741
firstPaint69382116742210771148
backgroundConnect2522392818257269
firstReactRender26175782742
getState155101131628
initialActions60336819
loadScripts81371896755842914
setupStore1062741222
WebpackHomeuiStartup20401535259126722502507
load16431232203220817781981
domContentLoaded16361221202720817721961
domInteractive2012141231569
firstPaint1646542567192313
backgroundConnect3316359473058
firstReactRender89373327285327
getState2752986414271
initialActions52224511
loadScripts16321215201620717691949
setupStore166244281523
FirefoxBrowserifyHomeuiStartup13601171172811314301611
load1183102314509112651333
domContentLoaded1182102314509112651332
domInteractive983338752100224
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect291893133263
firstReactRender28246662849
getState73396714
initialActions3012246
loadScripts1160100614268812291301
setupStore95497917
WebpackHomeuiStartup17581467220516718702051
load14881229179115016171732
domContentLoaded14881228179014916171731
domInteractive1243639567120313
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3624105124150
firstReactRender42345444551
getState73284814
initialActions51859515
loadScripts14611206175614915921708
setupStore156207241230
Benchmark value 1235 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 253 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 26 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 7 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 270 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 19 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 22 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 2507 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 70 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 271 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 11 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 30 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 28 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 224 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 6 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1758 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1489 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1488 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 124 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 36 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 42 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1462 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 16 exceeds gate value 13 for firefox webpack home mean setupStore
Benchmark value 2051 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1732 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1731 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 313 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 50 exceeds gate value 49 for firefox webpack home p95 backgroundConnect
Benchmark value 51 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 15 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1708 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 30 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 772ms | Sum of p95 exceeds: 964.8ms
Sum of all benchmark exceeds: 1736.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 3.94 KiB (0.09%)
  • ui: -100 Bytes (0%)
  • common: 1.25 KiB (0.02%)

cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 7c7c089 | Date: 9/30/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±70ms) 🟡 | historical mean value: 1.06s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 728ms (±68ms) 🟢 | historical mean value: 739ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±10ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 70ms 1.00s 1.31s 1.26s 1.31s
domContentLoaded 728ms 68ms 694ms 988ms 932ms 988ms
firstPaint 75ms 10ms 60ms 160ms 84ms 160ms
firstContentfulPaint 75ms 10ms 60ms 160ms 84ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [7c7c089]
UI Startup Metrics (1251 ± 87 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1251109715218713041406
load108196413287911251213
domContentLoaded107294813218111161206
domInteractive17134141726
firstPaint69974132544110931189
backgroundConnect2532382809258275
firstReactRender25174972840
getState13582121534
initialActions51456513
loadScripts827709106479877954
setupStore964041016
WebpackHomeuiStartup20051541250624121672430
load16171246202419017331896
domContentLoaded16111243202019017271891
domInteractive1812130161453
firstPaint1636360671193300
backgroundConnect3214342443151
firstReactRender87373207081312
getState2753266514260
initialActions52204517
loadScripts16071240201018817241880
setupStore236294541525
FirefoxBrowserifyHomeuiStartup13951204192511314521596
load1205106014738112621335
domContentLoaded1204105914738112621335
domInteractive98352544699228
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3119124153267
firstReactRender28236562842
getState73558623
initialActions6119320410
loadScripts1181104414548112441315
setupStore95648920
WebpackHomeuiStartup15501392186512916491839
load13191172159010814071537
domContentLoaded13181172158910814061537
domInteractive1013230956101287
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect302090123440
firstReactRender37315243946
getState63182710
initialActions411621638
loadScripts12961148156910813831516
setupStore1066771015
Benchmark value 1252 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1081 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1073 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 254 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 26 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 1406 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1213 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1206 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 1189 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 275 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 34 exceeds gate value 33 for chrome browserify home p95 getState
Benchmark value 13 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 955 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 260 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 17 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 31 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 28 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 7 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 228 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 10 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 102 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 30 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 5 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 287 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 8 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 318ms | Sum of p95 exceeds: 636.8ms
Sum of all benchmark exceeds: 954.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 4.04 KiB (0.09%)
  • ui: -100 Bytes (0%)
  • common: 1.25 KiB (0.02%)

cursor[bot]

This comment was marked as outdated.

@MoMannn MoMannn marked this pull request as draft September 30, 2025 13:19
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 244a65d | Date: 9/30/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±64ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 738ms (±62ms) 🟢 | historical mean value: 739ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±12ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 64ms 1.01s 1.34s 1.28s 1.34s
domContentLoaded 738ms 62ms 698ms 1.02s 956ms 1.02s
firstPaint 78ms 12ms 60ms 180ms 88ms 180ms
firstContentfulPaint 78ms 12ms 60ms 180ms 88ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [244a65d]
UI Startup Metrics (1246 ± 75 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1246110814047513161371
load107596412407111401204
domContentLoaded106895012337111341196
domInteractive18135471738
firstPaint67768124244610761206
backgroundConnect2532402797257267
firstReactRender25185772641
getState135103111528
initialActions60657714
loadScripts82271499070888937
setupStore1064461021
WebpackHomeuiStartup20291516259925421932465
load16441211198319417591917
domContentLoaded16371208197319317521913
domInteractive1811114141544
firstPaint1626237562185297
backgroundConnect271591123050
firstReactRender93373357584305
getState235311551428
initialActions52375517
loadScripts16331206196119217491902
setupStore206301441432
FirefoxBrowserifyHomeuiStartup15331246205714515871933
load1307108615208813621486
domContentLoaded1306108615198813611486
domInteractive1123634656118250
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect37221662139103
firstReactRender31245863243
getState15433340867
initialActions5243559
loadScripts1279106914708613361456
setupStore136128161129
WebpackHomeuiStartup15601357192114616611862
load13321162168313514321600
domContentLoaded13321162168213514321600
domInteractive106333356798298
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect31215073640
firstReactRender36314633842
getState63142712
initialActions511231449
loadScripts13091136165413614111578
setupStore105506923
Benchmark value 1246 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1076 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1069 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 254 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 25 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 1372 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1204 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1197 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 1207 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 268 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 14 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 21 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 2465 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 17 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1534 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1307 exceeds gate value 1245 for firefox browserify home mean load
Benchmark value 1307 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 113 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 37 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 32 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 16 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 5 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 1280 exceeds gate value 1230 for firefox browserify home mean loadScripts
Benchmark value 13 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1933 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 250 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 103 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 67 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 9 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 29 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 107 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 31 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 5 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 298 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 9 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 637ms | Sum of p95 exceeds: 914.8ms
Sum of all benchmark exceeds: 1551.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 4.25 KiB (0.09%)
  • ui: -100 Bytes (0%)
  • common: 1.25 KiB (0.02%)

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 2703ec4 | Date: 10/1/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±72ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 745ms (±70ms) 🟢 | historical mean value: 738ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±10ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 72ms 1.01s 1.35s 1.28s 1.35s
domContentLoaded 745ms 70ms 699ms 1.03s 955ms 1.03s
firstPaint 76ms 10ms 60ms 156ms 84ms 156ms
firstContentfulPaint 76ms 10ms 60ms 156ms 84ms 156ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [2703ec4]
UI Startup Metrics (1242 ± 75 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1242110514807512941381
load107795912847011271199
domContentLoaded107095012777011211190
domInteractive18137281738
firstPaint68688128244110941196
backgroundConnect2522402797255263
firstReactRender24184452537
getState1353561726
initialActions50224614
loadScripts824708102168876936
setupStore1062441120
WebpackHomeuiStartup19601470256228121712434
load15581181196520616841866
domContentLoaded15511176194520616781856
domInteractive161274111441
firstPaint1576632759175288
backgroundConnect3014381373058
firstReactRender97363328384322
getState3443197515283
initialActions52354513
loadScripts15471174193420516761844
setupStore205308491228
FirefoxBrowserifyHomeuiStartup14011186197412214551599
load1208103314448012691344
domContentLoaded1207103314448012681344
domInteractive1043230553106225
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect291980103347
firstReactRender28246352833
getState12330733654
initialActions4114246
loadScripts1186101714208012431326
setupStore10592111016
WebpackHomeuiStartup15841343206515016511923
load13421153175012614081584
domContentLoaded13421153174912614081583
domInteractive1093433058112298
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect31215673742
firstReactRender38326654146
getState8315315715
initialActions40334411
loadScripts13191135171512613881565
setupStore1167181024
Benchmark value 1242 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1077 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1070 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 252 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 25 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 1381 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1199 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1190 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 1196 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 264 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 14 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 20 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 35 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 283 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 13 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 30 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 28 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 13 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 4 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 225 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 54 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 6 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 110 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 31 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 39 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 298 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 11 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 311ms | Sum of p95 exceeds: 621.8ms
Sum of all benchmark exceeds: 932.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 4.25 KiB (0.09%)
  • ui: 3.24 KiB (0.05%)
  • common: 1.2 KiB (0.01%)

@MoMannn MoMannn marked this pull request as ready for review October 2, 2025 08:39
cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 4688eff | Date: 10/2/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±71ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 739ms (±70ms) 🟢 | historical mean value: 738ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±10ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 71ms 1.01s 1.34s 1.28s 1.34s
domContentLoaded 739ms 70ms 702ms 1.02s 953ms 1.02s
firstPaint 77ms 10ms 56ms 160ms 84ms 160ms
firstContentfulPaint 77ms 10ms 56ms 160ms 84ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [4688eff]
UI Startup Metrics (1282 ± 82 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1282114715218213341425
load110498012877911591255
domContentLoaded109797312737911531248
domInteractive18136981841
firstPaint72189129845111271262
backgroundConnect25924129110266276
firstReactRender2617114112844
getState1455281826
initialActions51405517
loadScripts845726101877900987
setupStore1062331118
WebpackHomeuiStartup20431512258529322712470
load16301214203322617781988
domContentLoaded16221211202622617731979
domInteractive181284151467
firstPaint1656436766187314
backgroundConnect3513351463161
firstReactRender100373327695320
getState245332561533
initialActions8217217618
loadScripts16181208201522517701969
setupStore185285371326
FirefoxBrowserifyHomeuiStartup14401247199612014961653
load1243109314328313151392
domContentLoaded1243109214328313151391
domInteractive1133342062115240
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect302088113352
firstReactRender29258873035
getState83518630
initialActions51475411
loadScripts1220107814128112891367
setupStore126209211031
WebpackHomeuiStartup16221399220615417121888
load13791176163913014801604
domContentLoaded13791175163812914801603
domInteractive1134032964103297
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3221105123645
firstReactRender37335244045
getState8318418712
initialActions3111246
loadScripts13551147161212914591583
setupStore11569101023
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 4.4 KiB (0.1%)
  • ui: -95 Bytes (0%)
  • common: 1.28 KiB (0.02%)

Copy link
Contributor

@jeffsmale90 jeffsmale90 left a comment

Choose a reason for hiding this comment

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

This is so good!

* @param {number} chainId - The chain ID for the upgrade
* @returns {Promise<{transactionHash: string, delegatedTo: string}>}
*/
async upgradeAccount(address, upgradeContractAddress, chainId) {
Copy link
Contributor

Choose a reason for hiding this comment

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

It might be worth decomposing these hooks out to avoid bloating metamask-controller.js

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't know this is the pattern used for all other implementations I would go with the same way.

@MoMannn MoMannn requested review from a team as code owners October 7, 2025 13:35
@MoMannn MoMannn marked this pull request as draft October 7, 2025 13:36
@github-actions github-actions bot added size-M and removed size-XL labels Oct 7, 2025
Copy link

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

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​metamask/​eip-7702-internal-rpc-middleware@​1.0.0100100100100100

View full report

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 size-M team-delegation MetaMask Delegation Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants