Skip to content

feat: add wallet_requestExecutionPermissions method#35193

Merged
jeffsmale90 merged 11 commits intomainfrom
feat/eip7715_requestExecutionPermissions
Sep 9, 2025
Merged

feat: add wallet_requestExecutionPermissions method#35193
jeffsmale90 merged 11 commits intomainfrom
feat/eip7715_requestExecutionPermissions

Conversation

@jeffsmale90
Copy link
Copy Markdown
Contributor

@jeffsmale90 jeffsmale90 commented Aug 18, 2025

Adds the method wallet_requestExecutionPermissions which is defined in this proposed revision of the EIP-7715 specification ethereum/ERCs#1098.

Description

This method is proxied to @metamask/permissions-kernel-snap, which implements the exact same method. This snap will be preinstalled in Extension, before the feature is enabled for any users.

The feature is gated by process.env.EIP_7715_READABLE_PERMISSIONS_ENABLED and requires process.env.PERMISSIONS_KERNEL_SNAP_ID to be set. Presently EIP_7715_READABLE_PERMISSIONS_ENABLED is set to false, and PERMISSIONS_KERNEL_SNAP_ID is set to an empty string for all builds.

Requires MetaMask/eth-json-rpc-middleware#396 released in https://github.com/MetaMask/eth-json-rpc-middleware/releases/tag/v17.1.0. This change also adds support for wallet_revokePermission, which will be implemented in a future PR, once the revocation UI is implemented.

Open in GitHub Codespaces

Changelog

CHANGELOG entry: As this is behind a local feature gate, there are no public facing changes.

Manual testing steps

Can be tested with MetaMask/smart-accounts-kit#60 which adds support to the delegation-toolkit's experimental api to call the wallet method directly, rather than via wallet_invokeSnap.

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.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Aug 18, 2025

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 Aug 18, 2025
@jeffsmale90 jeffsmale90 force-pushed the feat/eip7715_requestExecutionPermissions branch from f267a84 to a82090e Compare August 18, 2025 22:20
@github-actions github-actions bot added size-M and removed size-S labels Aug 18, 2025
@metamaskbot
Copy link
Copy Markdown
Collaborator

Builds ready [a82090e]
UI Startup Metrics (1191 ± 70 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1191105614187012501315
load100685811977010611115
domContentLoaded99885411897010551110
domInteractive17143951731
firstPaint65394119639810161107
backgroundConnect2162032447219230
firstReactRender2114143132236
getState13587141432
initialActions30586213
loadScripts79065396969844898
setupStore85172911
WebpackHomeuiStartup28692169371526030183272
load22691500310229924512817
domContentLoaded22541492309529424432800
domInteractive2414135211969
firstPaint2377958786296380
backgroundConnect891642011868356
firstReactRender1799340787248353
getState245293482045
initialActions62264814
loadScripts22421489309228824282796
setupStore217215351843
FirefoxBrowserifyHomeuiStartup13141103175113413741685
load112596414599011831296
domContentLoaded112596414599011831295
domInteractive993442456102216
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2817123143062
firstReactRender24205172350
getState72418632
initialActions40518214
loadScripts110594914438811621264
setupStore937713535
WebpackHomeuiStartup16031367213714416771879
load13391137163911614221565
domContentLoaded13381137163811614211564
domInteractive97302885497267
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect291892103355
firstReactRender52407275663
getState94498826
initialActions30274313
loadScripts13161120161811513961545
setupStore10417518827
Benchmark value 216 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 3 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 231 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 13 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 2870 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 2270 exceeds gate value 1711 for chrome webpack home mean load
Benchmark value 2254 exceeds gate value 1704 for chrome webpack home mean domContentLoaded
Benchmark value 24 exceeds gate value 21 for chrome webpack home mean domInteractive
Benchmark value 238 exceeds gate value 199 for chrome webpack home mean firstPaint
Benchmark value 90 exceeds gate value 40 for chrome webpack home mean backgroundConnect
Benchmark value 2242 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 3272 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2817 exceeds gate value 2030 for chrome webpack home p95 load
Benchmark value 2800 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 70 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 380 exceeds gate value 334 for chrome webpack home p95 firstPaint
Benchmark value 356 exceeds gate value 90 for chrome webpack home p95 backgroundConnect
Benchmark value 14 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 2797 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 28 exceeds gate value 25 for firefox browserify home mean backgroundConnect
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 1685 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 216 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 32 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 14 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 35 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 30 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 52 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 267 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 55 exceeds gate value 49 for firefox webpack home p95 backgroundConnect
Benchmark value 63 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 13 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 2658ms | Sum of p95 exceeds: 3998.8ms
Sum of all benchmark exceeds: 6656.8ms

Bundle size diffs [🚀 Bundle size reduced!]
  • background: -6.04 KiB (-0.13%)
  • ui: 3.83 KiB (0.05%)
  • common: -55.74 KiB (-0.74%)

@jeffsmale90 jeffsmale90 force-pushed the feat/eip7715_requestExecutionPermissions branch from a82090e to ed48de5 Compare August 19, 2025 01:30
@jeffsmale90 jeffsmale90 changed the title Add wallet_requestExecutionPermissions method. feat: add wallet_requestExecutionPermissions method Aug 19, 2025
@metamaskbot
Copy link
Copy Markdown
Collaborator

Builds ready [ed48de5]
UI Startup Metrics (1190 ± 64 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1190108113936412371303
load101189612036310581114
domContentLoaded100289211906210511103
domInteractive18135061727
firstPaint61984111240410141089
backgroundConnect22120426812225250
firstReactRender20133952130
getState11590101324
initialActions30254313
loadScripts79068795559832888
setupStore84142812
WebpackHomeuiStartup21791631255518322682501
load16421224198515416991871
domContentLoaded16351220197215316941865
domInteractive181196171366
firstPaint1736154969195285
backgroundConnect3112330432949
firstReactRender18982407111320387
getState3843068310283
initialActions52203513
loadScripts16311218196215216911854
setupStore2363045713102
FirefoxBrowserifyHomeuiStartup13201125184011813741536
load113497715358811821275
domContentLoaded113497715358811821274
domInteractive1023544255103205
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3018109143366
firstReactRender24205272443
getState62346521
initialActions5016719214
loadScripts111196115168811571246
setupStore835611639
WebpackHomeuiStartup15811382220815116541948
load13161159172012013781540
domContentLoaded13161159172012113781540
domInteractive91302754294204
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3319198233474
firstReactRender53426865865
getState12491131042
initialActions5012613321
loadScripts12931133170111813571518
setupStore94417828
Benchmark value 221 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 3 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 250 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 13 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 38 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 2501 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 67 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 387 exceeds gate value 370 for chrome webpack home p95 firstReactRender
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 102 exceeds gate value 65 for chrome webpack home p95 setupStore
Benchmark value 31 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 6 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 205 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 14 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 39 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 33 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 53 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1948 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 204 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 74 exceeds gate value 49 for firefox webpack home p95 backgroundConnect
Benchmark value 65 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 42 exceeds gate value 32 for firefox webpack home p95 getState
Benchmark value 21 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 259ms | Sum of p95 exceeds: 612.8ms
Sum of all benchmark exceeds: 871.8ms

Bundle size diffs [🚀 Bundle size reduced!]
  • background: -6.44 KiB (-0.14%)
  • ui: 3.91 KiB (0.06%)
  • common: -55.33 KiB (-0.73%)

},
this.controllerMessenger,
),
processRequestExecutionPermissions:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

after this feature is enabled and shipped, I'd love to rename this hook to plain old handleSnapRequest or something like that

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Great idea! I have updated this to forwardRequestToSnap which I think is pretty clear about what it's doing. Presently it forwards the request to the specified snap verbatim, but in the future we could support a mapRequest function that could accept the incoming request and return the snap request, so that the publicly exposed method doesn't necessarily need to match exactly the snap method.

https://github.com/MetaMask/metamask-extension/pull/35193/files#diff-6fbff2cfe97ac01b77296ef2122c7e0a5b3ff6a84b584b4d1a87482f35eea3d6R2192

lmkwyt

);
}

const requestExecutionPermissionsResult = (await handleRequest({
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Forwarding requests to the kernel-snap is a pattern that is similar to how we forward requests to gator-snap to fetch granted permissions. Should we move this to the GatorPermissionsController and expose via an action to the consumer?

Is there a strong reason why processRequestExecutionPermissions() can not live in the GatorPermissionsController?

Copy link
Copy Markdown
Contributor Author

@jeffsmale90 jeffsmale90 Sep 8, 2025

Choose a reason for hiding this comment

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

Nice - in response to Jiexi's suggestion above, I've removed the bulk of EIP-7715 bespoke logic, and implemented a generic forwardRequestToSnap handler.

The only thing left is Kernel Snap Id, which is provided via environment - I think the Gator Permissions Controller should be accepting the snap Id from the same place, as it makes switching between environments really easy.

jeffsmale90 added a commit to MetaMask/eth-json-rpc-middleware that referenced this pull request Sep 3, 2025
Adds methods `wallet_requestExecutionPermissions` and
`wallet_revokeExecutionPermission`, as defined in this revision of the
EIP-7715 specification ethereum/ERCs#1098.

This supports Readable Permissions project, and is related to the
following PRs:
- MetaMask/smart-accounts-kit#60
- MetaMask/metamask-extension#35193

Note: workflows are failing due to existing problems, fixed by
#397
@jeffsmale90 jeffsmale90 force-pushed the feat/eip7715_requestExecutionPermissions branch from ed48de5 to 52fb362 Compare September 5, 2025 04:02
@jeffsmale90
Copy link
Copy Markdown
Contributor Author

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

@jeffsmale90 jeffsmale90 force-pushed the feat/eip7715_requestExecutionPermissions branch from c541fd4 to d1b4e31 Compare September 7, 2025 23:59
@jeffsmale90 jeffsmale90 marked this pull request as ready for review September 8, 2025 00:04
@jeffsmale90 jeffsmale90 force-pushed the feat/eip7715_requestExecutionPermissions branch from 167e2a7 to 83e35f3 Compare September 8, 2025 00:10
@metamaskbot
Copy link
Copy Markdown
Collaborator

📊 Page Load Benchmark Results

Current Commit: 3d19c3b | Date: 9/8/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.28s (±92ms) 🟡 | historical mean value: 1.31s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 965ms (±89ms) 🟢 | historical mean value: 991ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 91ms (±38ms) 🟢 | historical mean value: 94ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.28s 92ms 1.25s 1.91s 1.34s 1.91s
domContentLoaded 965ms 89ms 932ms 1.57s 1.02s 1.57s
firstPaint 91ms 38ms 72ms 296ms 144ms 296ms
firstContentfulPaint 91ms 38ms 72ms 296ms 144ms 296ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@jeffsmale90 jeffsmale90 force-pushed the feat/eip7715_requestExecutionPermissions branch from d7a811b to 3073711 Compare September 8, 2025 01:27
@metamaskbot
Copy link
Copy Markdown
Collaborator

📊 Page Load Benchmark Results

Current Commit: 14d7f82 | Date: 9/8/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.32s (±112ms) 🟡 | historical mean value: 1.31s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 995ms (±109ms) 🟢 | historical mean value: 991ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 97ms (±40ms) 🟢 | historical mean value: 94ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.32s 112ms 1.27s 1.95s 1.46s 1.95s
domContentLoaded 995ms 109ms 948ms 1.62s 1.13s 1.62s
firstPaint 97ms 40ms 76ms 280ms 204ms 280ms
firstContentfulPaint 97ms 40ms 76ms 280ms 204ms 280ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Copy Markdown
Collaborator

Builds ready [ded62c4]
UI Startup Metrics (1229 ± 63 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1229109714196312771321
load106895312616311171166
domContentLoaded106094812556411091156
domInteractive17144951724
firstPaint75073122041910881160
backgroundConnect2432292698246259
firstReactRender24176772536
getState1566481829
initialActions50447612
loadScripts824709101865875923
setupStore1063251123
WebpackHomeuiStartup19331461242725621262366
load15541185197919516811819
domContentLoaded15451175197519516731807
domInteractive1711110161465
firstPaint1646158278202284
backgroundConnect3717332523162
firstReactRender76373334476129
getState215280501327
initialActions5217268
loadScripts15411173196519316701796
setupStore146293281322
FirefoxBrowserifyHomeuiStartup14251200197513414711683
load1233105014658512951385
domContentLoaded1232105014658512941385
domInteractive1083536556114249
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3420169203562
firstReactRender27225442836
getState7212513615
initialActions5119019310
loadScripts1208103314458512691361
setupStore1158013834
WebpackHomeuiStartup15331313206313616111782
load13081117163011713901536
domContentLoaded13071117163011713901536
domInteractive102302916096277
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3322103103743
firstReactRender42355444450
getState63324610
initialActions501941936
loadScripts12831097161211813681512
setupStore95727920
Benchmark value 243 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 24 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 260 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 12 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 23 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 66 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 8 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1425 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 34 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 27 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 11 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1683 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 249 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 34 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 103 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 33 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 43 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 277 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 6 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 296ms | Sum of p95 exceeds: 485.8ms
Sum of all benchmark exceeds: 781.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.13 KiB (0.03%)
  • ui: 0 Bytes (0%)
  • common: 3.17 KiB (0.04%)

@metamaskbot
Copy link
Copy Markdown
Collaborator

📊 Page Load Benchmark Results

Current Commit: 9fdc885 | Date: 9/8/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.29s (±66ms) 🟡 | historical mean value: 1.31s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 967ms (±63ms) 🟢 | historical mean value: 985ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 89ms (±22ms) 🟢 | historical mean value: 95ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.29s 66ms 1.26s 1.90s 1.34s 1.90s
domContentLoaded 967ms 63ms 942ms 1.56s 1.00s 1.56s
firstPaint 89ms 22ms 76ms 256ms 132ms 256ms
firstContentfulPaint 89ms 22ms 76ms 256ms 132ms 256ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Copy Markdown
Collaborator

Builds ready [9fdc885]
UI Startup Metrics (1233 ± 74 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1233111514217412871366
load107495812637011221197
domContentLoaded106694912567111171191
domInteractive18145471739
firstPaint57878122343510741173
backgroundConnect2452332757249257
firstReactRender24174262739
getState1253051523
initialActions51294613
loadScripts829714101870877952
setupStore96263917
WebpackHomeuiStartup20741547274726422122491
load16661241210720317861924
domContentLoaded16551235208520117781901
domInteractive2012140221568
firstPaint1686050371178323
backgroundConnect3413281283467
firstReactRender84373335287178
getState3353137415277
initialActions11223032727
loadScripts16521232207220017741898
setupStore156277271522
FirefoxBrowserifyHomeuiStartup13731180186611614361599
load1186103913868112551318
domContentLoaded1186103813868112541317
domInteractive993327245102213
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3519133203682
firstReactRender27226372941
getState7218518613
initialActions41738311
loadScripts1160102013697912341287
setupStore11416717831
WebpackHomeuiStartup16081379209715617371876
load13651165164013214851606
domContentLoaded13651165164013214841605
domInteractive1044829352100271
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3522103103947
firstReactRender45385944753
getState8315815615
initialActions51971138
loadScripts13401146161813214581577
setupStore1054661017
Benchmark value 1074 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1067 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 245 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 1367 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1198 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1191 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 258 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 13 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 952 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 34 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 11 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 2491 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 69 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 277 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 27 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 36 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 11 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 213 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 82 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 11 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 31 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 104 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 35 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 45 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 271 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 53 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 8 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 303ms | Sum of p95 exceeds: 602.8ms
Sum of all benchmark exceeds: 905.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.13 KiB (0.03%)
  • ui: -100 Bytes (0%)
  • common: 3.17 KiB (0.04%)

…'s handleSnapRequest function, rather than binding the call function on the ControllerMessenger
cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Copy Markdown
Collaborator

📊 Page Load Benchmark Results

Current Commit: f34409f | Date: 9/8/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.30s (±55ms) 🟡 | historical mean value: 1.31s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 975ms (±53ms) 🟢 | historical mean value: 985ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 90ms (±19ms) 🟢 | historical mean value: 95ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.30s 55ms 1.26s 1.79s 1.37s 1.79s
domContentLoaded 975ms 53ms 942ms 1.46s 1.02s 1.46s
firstPaint 90ms 19ms 72ms 176ms 140ms 176ms
firstContentfulPaint 90ms 19ms 72ms 176ms 140ms 176ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Copy Markdown
Collaborator

Builds ready [f34409f]
UI Startup Metrics (1258 ± 73 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1258113014787313091414
load109297313166911391244
domContentLoaded108596913087011331237
domInteractive18135561733
firstPaint67378131743910781188
backgroundConnect2482352778253266
firstReactRender24164562637
getState135107111524
initialActions41153610
loadScripts844726106569891998
setupStore963331016
WebpackHomeuiStartup20401547271227822222545
load16371241210021917801971
domContentLoaded16241227209021417651931
domInteractive2012143211467
firstPaint1686640665192308
backgroundConnect3820349433478
firstReactRender83373345887313
getState3153246716268
initialActions62405615
loadScripts16171225207721017581916
setupStore186297391425
FirefoxBrowserifyHomeuiStartup15601324208713116621767
load13651159165311614691555
domContentLoaded13651159165211614681555
domInteractive1233843966129262
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3922183243994
firstReactRender29248383145
getState73437718
initialActions30173311
loadScripts13361139163411314331523
setupStore959710924
WebpackHomeuiStartup15341360198315316391860
load13101157174413214281549
domContentLoaded13101157174313314281548
domInteractive102314156494269
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3221112123545
firstReactRender43348364551
getState631141169
initialActions411331335
loadScripts12871133172013214081504
setupStore85243813
Benchmark value 1259 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1093 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1085 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 249 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 4 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 845 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 1414 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1245 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1238 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 266 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 10 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 999 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 31 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 2545 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 67 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 268 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 15 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1561 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1366 exceeds gate value 1245 for firefox browserify home mean load
Benchmark value 1365 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 124 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 40 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 30 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 1336 exceeds gate value 1230 for firefox browserify home mean loadScripts
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1767 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 1555 exceeds gate value 1495 for firefox browserify home p95 load
Benchmark value 1555 exceeds gate value 1495 for firefox browserify home p95 domContentLoaded
Benchmark value 262 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 94 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 11 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1523 exceeds gate value 1475 for firefox browserify home p95 loadScripts
Benchmark value 102 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 33 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 43 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 269 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 51 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 5 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 897ms | Sum of p95 exceeds: 1160.8ms
Sum of all benchmark exceeds: 2057.8ms

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

jiexi
jiexi previously approved these changes Sep 8, 2025
@metamaskbot
Copy link
Copy Markdown
Collaborator

📊 Page Load Benchmark Results

Current Commit: ae84b86 | Date: 9/8/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.27s (±21ms) 🟡 | historical mean value: 1.31s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 949ms (±19ms) 🟢 | historical mean value: 988ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 87ms (±19ms) 🟢 | historical mean value: 96ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.27s 21ms 1.24s 1.39s 1.31s 1.39s
domContentLoaded 949ms 19ms 931ms 1.06s 991ms 1.06s
firstPaint 87ms 19ms 72ms 200ms 132ms 200ms
firstContentfulPaint 87ms 19ms 72ms 200ms 132ms 200ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Copy Markdown
Collaborator

Builds ready [ae84b86]
UI Startup Metrics (1403 ± 70 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1403128416407014391541
load1191105814377812371326
domContentLoaded1167104414288512281315
domInteractive221796102238
firstPaint882175143743412091309
backgroundConnect29926042640297412
firstReactRender40191572943129
getState18591122236
initialActions817211923
loadScripts8917711152869501057
setupStore15796131431
WebpackHomeuiStartup21311613282326122562560
load17001277220920618192028
domContentLoaded16901266219720518102011
domInteractive2112120211588
firstPaint1676742866187296
backgroundConnect4120364473573
firstReactRender97403395998264
getState2853196216267
initialActions62294716
loadScripts16861263218420318061998
setupStore167189181625
FirefoxBrowserifyHomeuiStartup14141210191412114841646
load1222105314979012971359
domContentLoaded1221105214979012961359
domInteractive1053330855116255
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3320132173466
firstReactRender28226363036
getState9212817718
initialActions518511414
loadScripts1196103614768712661337
setupStore1149613943
WebpackHomeuiStartup16061420194013016911837
load13751197169012014731563
domContentLoaded13751197169012014721563
domInteractive1106129160101273
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect31224663642
firstReactRender45357154754
getState63212711
initialActions4155648
loadScripts13521168166412114501540
setupStore95293915
Benchmark value 1403 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1191 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1167 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 22 exceeds gate value 20 for chrome browserify home mean domInteractive
Benchmark value 882 exceeds gate value 800 for chrome browserify home mean firstPaint
Benchmark value 300 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 41 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 18 exceeds gate value 15 for chrome browserify home mean getState
Benchmark value 8 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 892 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 15 exceeds gate value 11 for chrome browserify home mean setupStore
Benchmark value 1542 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1327 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1315 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 1310 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 413 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 129 exceeds gate value 45 for chrome browserify home p95 firstReactRender
Benchmark value 36 exceeds gate value 33 for chrome browserify home p95 getState
Benchmark value 23 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 1058 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 31 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 41 exceeds gate value 40 for chrome webpack home mean backgroundConnect
Benchmark value 2560 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2011 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 88 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 267 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 16 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1998 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 1415 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 33 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 6 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 11 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 255 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 14 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 43 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 111 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 32 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 45 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 273 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 54 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 8 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 920ms | Sum of p95 exceeds: 1681.8ms
Sum of all benchmark exceeds: 2601.8ms

@jeffsmale90 jeffsmale90 added this pull request to the merge queue Sep 9, 2025
Merged via the queue into main with commit 7d955c2 Sep 9, 2025
146 checks passed
@jeffsmale90 jeffsmale90 deleted the feat/eip7715_requestExecutionPermissions branch September 9, 2025 09:44
@github-actions github-actions bot locked and limited conversation to collaborators Sep 9, 2025
@metamaskbot metamaskbot added the release-13.4.0 Issue or pull request that will be included in release 13.4.0 label Sep 9, 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.4.0 Issue or pull request that will be included in release 13.4.0 size-M team-delegation MetaMask Delegation Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants