Skip to content

Conversation

@jeffsmale90
Copy link
Contributor

@jeffsmale90 jeffsmale90 commented Sep 18, 2025

Description

This feature is only enabled in Flask.

When a dapp requests an EIP-7715 Readable Permission, the user must sign with eth_signTypedData_v4, but it's important that the user can understand what is being signed. This PR surfaced the decoded permission information in a new Sign Permission view.

When a eth_signTypedData_v4 request is received by @metamask/signature-controller that appears to be a delegation, it will pass this request to @metamask/gator-permissions-controller to decode the request into the originating permission. If this is successful, @metamask/signature-controller attaches the decoded permission to the request metadata.

This PR adds a new view showing the details of the permission that the user is signing. This does not implement the final design, and focusses only on introducing the functionality to extension. Further iteration will be made to improve the UX. As such, no internationalization has been included in this change.

A couple important points to note:

  • if GATOR_PERMISSIONS_ENABLED is not true, the request will be rejected here (this should never happen, because the method wallet_requestExecutionPermissions will not allow requests if the feature is not enabled
  • if the origin is not the configured Gator Permissions Snap, the permission will not be decoded by the GatorPermissionsController
  • if the request is for a delegation signature, and no permission is decoded, the SignatureController will reject the request
  • This feature is only being released into Flask at this stage - future PRs will refine the UX before this is released to end-users

Open in GitHub Codespaces

Changelog

CHANGELOG entry: presents a Permission confirmation view when a decoded permission exists on signTypedData metadata. Flask only.

Related issues

These PRs are related to this feature:

Manual testing steps

  1. Run the 7715 gator snaps locally
  2. Build MetaMask flask with GATOR_PERMISSIONS_ENABLED=true and GATOR_PERMISSIONS_PROVIDER_SNAP_ID=local:http://localhost:8082
  3. Open the 7715 gator snap page
  4. Install snaps if necessary, by clicking "Install kernel snap", then "Install provider snap"
  5. Select the appropriate permission type and parameters
  6. Click "Grant Permission"
  7. Adjust the requested permission as necessary
  8. Click "Grant"

Expect to see the sign permission screen:

Screenshots/Recordings

image

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
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 18, 2025
@metamaskbot
Copy link
Collaborator

metamaskbot commented Sep 18, 2025

✨ Files requiring CODEOWNER review ✨

@MetaMask/confirmations (7 files, +6423 -14)
  • 📁 ui/
    • 📁 pages/
      • 📁 confirmations/
        • 📁 components/
          • 📁 confirm/
            • 📁 info/
              • 📁 __snapshots__/
                • 📄 info.test.tsx.snap +486 -12
              • 📁 typed-sign/
                • 📁 __snapshots__/
                  • 📄 typed-sign-permission.test.tsx.snap +5013 -0
                  • 📄 typed-sign-permission.test.tsx +428 -0
                  • 📄 typed-sign-permission.tsx +458 -0
                • 📄 info.test.tsx +24 -0
                • 📄 info.tsx +12 -2
        • 📁 types/
          • 📄 confirm.ts +2 -0

🧩 @MetaMask/extension-devs (4 files, +36 -0)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +9 -0
      • 📁 experimental/
        • 📄 policy.json +9 -0
      • 📁 flask/
        • 📄 policy.json +9 -0
      • 📁 main/
        • 📄 policy.json +9 -0

📜 @MetaMask/policy-reviewers (4 files, +36 -0)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +9 -0
      • 📁 experimental/
        • 📄 policy.json +9 -0
      • 📁 flask/
        • 📄 policy.json +9 -0
      • 📁 main/
        • 📄 policy.json +9 -0

Tip

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


🔗 @MetaMask/supply-chain (4 files, +36 -0)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +9 -0
      • 📁 experimental/
        • 📄 policy.json +9 -0
      • 📁 flask/
        • 📄 policy.json +9 -0
      • 📁 main/
        • 📄 policy.json +9 -0

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 35fc02f | Date: 9/18/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±76ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 750ms (±88ms) 🟢 | historical mean value: 738ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 81ms (±43ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 76ms 1.02s 1.38s 1.31s 1.38s
domContentLoaded 750ms 88ms 709ms 1.33s 992ms 1.33s
firstPaint 81ms 43ms 60ms 508ms 88ms 508ms
firstContentfulPaint 81ms 43ms 60ms 508ms 88ms 508ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [35fc02f]
UI Startup Metrics (1242 ± 58 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1242112514065812821333
load107896511945111061160
domContentLoaded107196011875011001149
domInteractive18145481638
firstPaint61285119943610871153
backgroundConnect2532422937257265
firstReactRender25165162938
getState14575111533
initialActions51224715
loadScripts82471493748850902
setupStore1062441221
WebpackHomeuiStartup112593313889411771309
load9257641133819891053
domContentLoaded9197601127819821042
domInteractive17135391545
firstPaint1636431350188265
backgroundConnect201154102046
firstReactRender38336453845
getState842741118
initialActions621641014
loadScripts9167571121809801035
setupStore964141013
FirefoxBrowserifyHomeuiStartup1378121317489414431556
load1202106914617412621318
domContentLoaded1202106814607312621318
domInteractive1093233256120246
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3218130173380
firstReactRender27235442834
getState62636610
initialActions2010125
loadScripts1177105214347212331294
setupStore84596812
WebpackHomeuiStartup16491392230917117451996
load14071186181214215121664
domContentLoaded14061186181114215121663
domInteractive1123347170104300
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3120181163641
firstReactRender47378164957
getState73858710
initialActions512002036
loadScripts13841162178514314941640
setupStore96243915
Benchmark value 1243 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1078 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1071 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 266 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 15 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 14 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 33 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 3 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 246 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 80 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 5 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1649 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1407 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1407 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 113 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 47 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 1384 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 1996 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1664 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1663 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 300 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 57 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 6 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1640 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Sum of mean exceeds: 434ms | Sum of p95 exceeds: 569.8ms
Sum of all benchmark exceeds: 1003.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 134 Bytes (0%)
  • ui: 5.44 KiB (0.08%)
  • common: 10 Bytes (0%)

@jeffsmale90 jeffsmale90 force-pushed the feat/sign-decoded-permission branch from 35fc02f to 97e73e7 Compare September 19, 2025 04:33
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 97e73e7 | Date: 9/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.07s (±75ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 753ms (±72ms) 🟢 | historical mean value: 739ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±11ms) 🟢 | historical mean value: 79ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.07s 75ms 1.02s 1.35s 1.32s 1.35s
domContentLoaded 753ms 72ms 706ms 1.03s 980ms 1.03s
firstPaint 80ms 11ms 64ms 176ms 88ms 176ms
firstContentfulPaint 80ms 11ms 64ms 176ms 88ms 176ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [97e73e7]
UI Startup Metrics (1231 ± 61 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1231112413916112701336
load106593212386111001168
domContentLoaded105792612326110921160
domInteractive18146071736
firstPaint686143123942010581164
backgroundConnect2542392847258263
firstReactRender26184863040
getState1453771631
initialActions51384613
loadScripts81167698260844910
setupStore1063141018
WebpackHomeuiStartup110191613549511541269
load9127501136839701029
domContentLoaded9077451131829651018
domInteractive16125491439
firstPaint1546236056182266
backgroundConnect17106091632
firstReactRender36336243643
getState73224716
initialActions722151015
loadScripts9037431128829621011
setupStore86222911
FirefoxBrowserifyHomeuiStartup1346118816819214041513
load1167104513987012211282
domContentLoaded1166104513987012201282
domInteractive1013228248103212
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3318109193284
firstReactRender27224742936
getState737610514
initialActions3040439
loadScripts1140102813737111911265
setupStore959911824
WebpackHomeuiStartup15911369195714716961864
load13631154173714014811631
domContentLoaded13621154173714014811631
domInteractive1063235564100289
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect31208493646
firstReactRender44356554752
getState63273611
initialActions3156635
loadScripts13391130171614014601607
setupStore95264918
Benchmark value 255 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 264 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 18 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 15 exceeds gate value 7 for chrome webpack home p95 initialActions
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 3 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 212 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 84 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 9 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 106 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 289 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 52 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: 288ms | Sum of p95 exceeds: 442.8ms
Sum of all benchmark exceeds: 730.8ms

Bundle size diffs [🚀 Bundle size reduced!]
  • background: 8.54 KiB (0.19%)
  • ui: 8.53 KiB (0.12%)
  • common: -49.83 KiB (-0.64%)

@jeffsmale90 jeffsmale90 changed the title [DRAFT] WIP first pass at surfacing Sign Permission view for eth_signTypedData_v4 feat: surface Sign Permission view for eth_signTypedData_v4 with decoded permission Sep 22, 2025
@metamaskbot metamaskbot added the INVALID-PR-TEMPLATE PR's body doesn't match template label Sep 22, 2025
@jeffsmale90 jeffsmale90 force-pushed the feat/sign-decoded-permission branch from 97e73e7 to 8539332 Compare September 22, 2025 04:07
@github-actions github-actions bot added size-L and removed size-M labels Sep 22, 2025
@metamaskbot metamaskbot removed the INVALID-PR-TEMPLATE PR's body doesn't match template label Sep 22, 2025
@atlassian
Copy link

atlassian bot commented Sep 22, 2025

🔗 Link your GitHub account to Atlassian

To enable Code Reviewer, please link your GitHub account to your Atlassian account.

Click here to connect your accounts

This is a one-time setup that takes less than a minute.

@socket-security
Copy link

socket-security bot commented Sep 24, 2025

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

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​metamask/​delegation-core@​0.2.0751009992100
Updated@​metamask/​gator-permissions-controller@​0.1.0 ⏵ 0.2.097 -310083 -1790 -10100
Updated@​metamask/​signature-controller@​33.0.0 ⏵ 34.0.0100 +4100100 +25100 +3100

View full report

@socket-security
Copy link

socket-security bot commented Sep 24, 2025

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

@MoMannn
Copy link
Contributor

MoMannn commented Sep 24, 2025

@SocketSecurity ignore @metamask/[email protected] This is package that we produce and uses fetch for some API calls.

github-merge-queue bot pushed a commit that referenced this pull request Sep 24, 2025
## **Description**

This PR adds `@metamask/gator-permissions-snaps` and
`@metamask/permissions-kernel-snap` as preinstalled snaps in flask.

It also enables the Gator Permissions feature with
`GATOR_PERMISSIONS_SNAP` env variable, and adds the `gator-permissions`
build feature.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/36230?quickstart=1)

## **Changelog**

CHANGELOG entry: Adds EIP-7715 Readable Permissions to MetaMask flask,
allowing dapps to call `wallet_requestExecutionPermissions`

## **Related issues**

## **Manual testing steps**

Call `wallet_requestExecutionPermissions` with appropriate args, or use
the Delegation Toolkit's experimental action to request a permission.
This will allow the user to modify and / or approve the permission, but
signing will fail until
#36054 is merged.


## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.

---------

Co-authored-by: MoMannn <[email protected]>
@jeffsmale90 jeffsmale90 force-pushed the feat/sign-decoded-permission branch 2 times, most recently from 17f74d3 to 0396e5c Compare September 24, 2025 19:42
case WEEK:
return 'Weekly';
default:
return `${seconds} seconds`;
Copy link
Contributor

Choose a reason for hiding this comment

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

This could be updated to show seconds/minutes/days/weeks whichever is more appropriate based on the amount. So that it doesn't say 120 seconds but 2 minutes. But can be done in a separate PR.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes! I think we should leave this until we do an actual designed UI.

const { periodDuration } = permission.data;
const { startTime } = permission.data;
const { tokenAddress } = permission.data;

Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn't startTime also be validated here that is should exist like with streaming?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, good call! It should always be set, but the type is overly permissive.

I've added validation for all of the permission types.

<ConfirmInfoAlertRow
alertKey={RowAlertKey.RequestFrom}
ownerId={id}
label={t('requestFrom')}
Copy link
Contributor

Choose a reason for hiding this comment

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

I see we are using translations here but not at other points. Is this intentional?

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 only used translations for existing keys, because this isn't yet designed, I didn't want to add keys that we aren't going to end up keeping.

@jeffsmale90 jeffsmale90 requested a review from MoMannn September 24, 2025 19:56
MoMannn
MoMannn previously approved these changes Sep 24, 2025
@jeffsmale90 jeffsmale90 force-pushed the feat/sign-decoded-permission branch 5 times, most recently from 85716bc to ce3b6b9 Compare September 24, 2025 21:44
@jeffsmale90 jeffsmale90 force-pushed the feat/sign-decoded-permission branch from ce3b6b9 to 96c5198 Compare September 24, 2025 21:48
@jeffsmale90 jeffsmale90 marked this pull request as ready for review September 24, 2025 22:24
@jeffsmale90 jeffsmale90 requested review from a team as code owners September 24, 2025 22:24
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 96c5198 | Date: 9/24/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±54ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 742ms (±51ms) 🟢 | historical mean value: 735ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±13ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 54ms 1.03s 1.34s 1.15s 1.34s
domContentLoaded 742ms 51ms 714ms 1.02s 817ms 1.02s
firstPaint 77ms 13ms 60ms 192ms 84ms 192ms
firstContentfulPaint 77ms 13ms 60ms 192ms 84ms 192ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [96c5198]
UI Startup Metrics (1229 ± 69 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1229109614936912701365
load106496312456110971201
domContentLoaded105895512376110911194
domInteractive17135671637
firstPaint69888125442710801181
backgroundConnect2512412836254258
firstReactRender24184252436
getState1354981628
initialActions60729615
loadScripts81371399661847958
setupStore1062941121
WebpackHomeuiStartup1188943142410912631330
load998773118610610701143
domContentLoaded993768118110610671138
domInteractive16124771536
firstPaint1736460479190308
backgroundConnect16103561630
firstReactRender36334833743
getState73203717
initialActions62224814
loadScripts990766117910510641135
setupStore86152912
FirefoxBrowserifyHomeuiStartup14281243183011014841647
load1236108014978212911378
domContentLoaded1236108014978212911378
domInteractive1053629549109224
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3320127163468
firstReactRender28246242933
getState63152711
initialActions6118919411
loadScripts1210105914798012641359
setupStore1267012951
WebpackHomeuiStartup15411354203215916561874
load13021152169913514051582
domContentLoaded13011152169913514041582
domInteractive1073247068101298
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect32216473643
firstReactRender37324933942
getState7214414610
initialActions511561546
loadScripts12781128167913613771564
setupStore116140141022
Benchmark value 252 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 1201 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1194 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 1182 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 259 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 15 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 958 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 21 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 14 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1429 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 29 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 12 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 224 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 11 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 51 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 33 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 6 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 312ms | Sum of p95 exceeds: 518.8ms
Sum of all benchmark exceeds: 830.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 21.2 KiB (0.47%)
  • ui: 9.22 KiB (0.13%)
  • common: 2.41 KiB (0.03%)

Copy link
Contributor

@mj-kiwi mj-kiwi left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Member

@OGPoyraz OGPoyraz left a comment

Choose a reason for hiding this comment

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

Confirmation changes LGTM

@jeffsmale90 jeffsmale90 added this pull request to the merge queue Sep 25, 2025
Merged via the queue into main with commit 344b9e6 Sep 25, 2025
412 of 417 checks passed
@jeffsmale90 jeffsmale90 deleted the feat/sign-decoded-permission branch September 25, 2025 08:01
@github-actions github-actions bot locked and limited conversation to collaborators Sep 25, 2025
@metamaskbot metamaskbot added the release-13.5.0 Issue or pull request that will be included in release 13.5.0 label Sep 25, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.5.0 Issue or pull request that will be included in release 13.5.0 size-XL team-delegation MetaMask Delegation Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants