Skip to content

Conversation

MoMannn
Copy link
Contributor

@MoMannn MoMannn commented Oct 10, 2025

Description

This PR adds a modal before disconnecting from a site that shows permissions we have granted for this site and offers and option to revoke all the permissions.

Related issues

Is dependent on: #36635

Manual testing steps

  1. Go to: Permissions -> sites -> specific site which has permissions + is connected
  2. Click disconnect and again disconnect in the modal
  3. You should see a list of all permissions you have granted
  4. Click on remove all should create transaction batch to remove all permissions

Note that removing permissions does create an onchain transaction but does not yet actually delete permissions from the storage. This will be addresses in a separate PR.

Screenshots/Recordings

Before

Screen.Recording.2025-10-10.at.16.03.22.mov

After

Screen.Recording.2025-10-10.at.15.58.17.mov

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

Adds a modal when disconnecting a site to review/remove token-transfer permissions and implements multi-chain revocation, with i18n updates and minor build/UI tweaks.

  • UI/Permissions:
    • New DisconnectPermissionsModal with Skip/Remove all; integrated into MultichainReviewPermissions disconnect flow, including token/amount formatting and account/network context.
    • Adds PermissionsCell rendering logic gating; exports modal; minor layout tweaks (carousel padding/classes).
  • Gator Permissions:
    • New helpers in shared/lib/gator-permissions (token info fetch/caching, period/amount formatting, display metadata).
    • New selector getTokenTransferPermissionsByOrigin and tests; page tests updated.
    • Hook useRevokeGatorPermissions adds revokeGatorPermissionsBatchMultiChain using findNetworkClientIdByChainId.
  • i18n:
    • Adds strings: daily/weekly/monthly, everyX*, perSecond, tokenStream, tokenSubscription, skip, removeAll, and copy for "Other permissions on this site" (en, en_GB).
  • Bridge:
    • Fix mUSD decimals to 6 on Mainnet and Linea; updates corresponding test.
  • Build/LavaMoat:
    • Update to [email protected] with patch to skip policy write; policy allows node:fs/promises; remove old patch references.
  • CI:
    • Rename GitHub Actions job to release-pr-approval.

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

gauthierpetetin and others added 8 commits October 7, 2025 15:53
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

While trying to add release-pr-approval to required status checks, I
noticed the release-pr-approval job is currently called `check` which is
not accurately describing what the job is doing. This PR renames it to
`release-pr-approval`.

Similar problem as this
[PR](#36028).

[Same PR for Mobile
repo](MetaMask/metamask-mobile#20856)

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

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

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: null

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this page...
2.
3.

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

- [x] 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).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] 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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Renames the GitHub Actions job in
`.github/workflows/release-pr-approval.yml` from `check` to
`release-pr-approval`.
> 
> - **CI/Workflows**:
> - **Release PR Approval workflow**
(`.github/workflows/release-pr-approval.yml`):
>     - Rename job `jobs.check` to `jobs.release-pr-approval`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
cd3df91. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…ct decimals (#36580)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

Corrects the mUSD decimal value from 18 -> 6 in the default common token
pair constants file. The incorrect decimal was causing erroneous quotes
when the fromToken <-> toToken switch was flipped.

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

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

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: fixed a bug that was causing incorrect quotes for mUSD
to be displayed.

## **Related issues**

Fixes: #36581

## **Manual testing steps**

1. Go to ethereum or linea swaps
2. prefill a quote from eth -> mUSD
3. flip the tokens and observe a normal quote

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

- [x] 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).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] 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.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Updates mUSD decimals from 18 to 6 for mainnet and Linea bridge
defaults and aligns selector test expectations.
> 
> - **Bridge constants**:
> - Update `BRIDGE_CHAINID_COMMON_TOKEN_PAIR` mUSD `decimals` to `6` for
`eip155:1` (mainnet) and `eip155:59144` (Linea) in
`shared/constants/bridge.ts`.
> - **Tests**:
> - Align `getToToken` default mUSD `decimals` expectation to `6` in
`ui/ducks/bridge/selectors.test.ts`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
6bbd62c. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: SteP-n-s <[email protected]>
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

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

Should make the lavamoat policy generation less flaky on CI

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes: #36600

## **Manual testing steps**

1. CI shouldn't flake

## **Screenshots/Recordings**

Not applicable

## **Pre-merge author checklist**

- [x] 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).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] 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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Upgrade lavamoat-core to 16.7.1 with a patch to skip writing the
merged policy, and align Lavamoat policy and lockfile.
> 
> - **Build/Lavamoat**:
> - **lavamoat-core**: Replace patch for `^16.2.2` with patched
`16.7.1`; map `^15.2.1` and `^16.7.1` to `16.7.1` in `package.json`.
> - **Patch changes**: Keep `src/loadPolicy.js` behavior to skip writing
`policy.json` after merge; remove prior patch file for `16.2.2`.
> - **Policy**: Update `lavamoat/build-system/policy.json` to allow
`node:fs/promises` for `lavamoat>lavamoat-core` (replaces
`node:fs/promises.writeFile`).
> - **Lockfile**: Refresh `yarn.lock` to reflect `[email protected]`
and related dependency adjustments.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
3148218. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…36541)

## **Description**

Remove the deprecated `BackgroundColor.backgroundAlternativeSoft` design
token and replace all usage with
`BackgroundColor.backgroundAlternative`. This addresses part of the
technical debt cleanup by removing the final deprecated design token
that was incorrectly added to the design system.

The changes include:
- Removing `backgroundAlternativeSoft = 'background-alternative-soft'`
from the BackgroundColor enum
- Replacing all component usage of
`BackgroundColor.backgroundAlternativeSoft` with
`BackgroundColor.backgroundAlternative`
- Removing associated CSS custom properties and classes for
`background-alternative-soft`
- Updating test snapshots to reflect the CSS class changes from
`mm-box--background-color-background-alternative-soft` to
`mm-box--background-color-background-alternative`

**Note:** This PR completes the cleanup of deprecated alternative-soft
tokens. Previous PRs addressed `textAlternativeSoft` and
`iconAlternativeSoft`.

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes: #30144

## **Manual testing steps**

1. Verify all bridge components render correctly with proper background
colors
2. Check prepare bridge page displays backgrounds with appropriate
styling
3. Confirm switch tokens button background appears as expected
4. Ensure overall bridge page styling is unchanged visually

## **Screenshots/Recordings**

Not applicable - this is a technical debt cleanup with no visual changes
expected.

## **Pre-merge author checklist**

- [x] I've followed MetaMask Contributor Docs and MetaMask Extension
Coding Standards
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [ ] I've documented my code using JSDoc format if applicable
- [ ] I've applied the right labels on the PR (see labeling guidelines).
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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Removes `BackgroundColor.backgroundAlternativeSoft` and deletes
related `background-alternative-soft` CSS vars/classes from bridge
styles.
> 
> - **Design System**:
> - Remove `BackgroundColor.backgroundAlternativeSoft` from
`ui/helpers/constants/design-system.ts`.
> - **Bridge Styles** (`ui/pages/bridge/index.scss`):
> - Delete theme-specific CSS variables for
`--color-background-alternative-soft` (light/dark).
> - Remove `.mm-box--background-color-background-alternative-soft` rule.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
82cfbb0. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

This PR updates carousel component to improve spacing and layout by
updating the margin bottom from `8px` to `12px`

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes: N/A (UI improvement)

## **Manual testing steps**

1. Go to home page with carousel slides
2. Verify the carousel now has 12px margin bottom
## **Screenshots/Recordings**

### **Before**
- Carousel had 8px margin

<img width="418" height="622" alt="Screenshot 2025-10-03 at 2 52 53 PM"
src="https://github.com/user-attachments/assets/343574e7-807e-41bb-90e0-e55593b2e739"
/>
<img width="1512" height="863" alt="Screenshot 2025-10-03 at 2 53 09 PM"
src="https://github.com/user-attachments/assets/ce83cb90-da2e-4e8c-8c93-78a2a832a3bd"
/>

### **After**  
- Carousel has 12px margin for better spacing
- Same visual result but using Tailwind classes for better
maintainability

<img width="414" height="612" alt="Screenshot 2025-10-03 at 2 51 38 PM"
src="https://github.com/user-attachments/assets/f9827fdf-0a0e-4ef3-baa4-0ba81e1e2eb8"
/>
<img width="1512" height="864" alt="Screenshot 2025-10-03 at 2 52 01 PM"
src="https://github.com/user-attachments/assets/856efaf4-8634-413c-b350-120f4d2cdeb3"
/>


## **Pre-merge author checklist**

- [x] 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).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] 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.

🤖 Generated with [Claude Code](https://claude.com/claude-code)



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Removes SCSS padding/margin from `carousel-container` and applies
`px-4` and `mb-3` (12px) spacing directly on `CarouselWithEmptyState`.
> 
> - **UI**
> -
`ui/components/multichain/account-overview/account-overview-layout.tsx`
> - Adds `className="mb-3 px-4"` to `CarouselWithEmptyState` to control
spacing via utility classes.
> - **Styles**
>   - `ui/components/multichain/carousel/index.scss`
> - Removes `padding: 0 16px` and `margin-bottom: 8px` from
`.carousel-container` (spacing now handled by component props).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
e1cc3f1. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…into feat/revoke-all-permissions-on-site-disconnect
@MoMannn MoMannn requested review from a team as code owners October 10, 2025 13:56
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 Oct 10, 2025
@metamaskbot metamaskbot added the INVALID-PR-TEMPLATE PR's body doesn't match template label Oct 10, 2025
@metamaskbot
Copy link
Collaborator

metamaskbot commented Oct 10, 2025

✨ Files requiring CODEOWNER review ✨

🔑 @MetaMask/accounts-engineers (3 files, +119 -10)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 account-overview/
          • 📄 account-overview-layout.tsx +1 -0
      • 📁 multichain-accounts/
        • 📁 permissions/
          • 📁 permission-review-page/
            • 📄 multichain-review-permissions-page.test.tsx +12 -1
            • 📄 multichain-review-permissions-page.tsx +106 -9

👨‍🔧 @MetaMask/core-extension-ux (8 files, +531 -2)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 account-overview/
          • 📄 account-overview-layout.tsx +1 -0
        • 📁 carousel/
          • 📄 index.scss +0 -2
        • 📁 disconnect-permissions-modal/
          • 📁 __snapshots__/
            • 📄 disconnect-permissions-modal.test.tsx.snap +3 -0
            • 📄 disconnect-permissions-modal.stories.tsx +90 -0
            • 📄 disconnect-permissions-modal.test.tsx +140 -0
            • 📄 disconnect-permissions-modal.tsx +295 -0
            • 📄 index.ts +1 -0
          • 📄 index.js +1 -0

🧩 @MetaMask/extension-devs (1 files, +1 -1)
  • 📁 lavamoat/
    • 📁 build-system/
      • 📄 policy.json +1 -1

📜 @MetaMask/policy-reviewers (1 files, +1 -1)
  • 📁 lavamoat/
    • 📁 build-system/
      • 📄 policy.json +1 -1

Tip

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


🔗 @MetaMask/supply-chain (1 files, +1 -1)
  • 📁 lavamoat/
    • 📁 build-system/
      • 📄 policy.json +1 -1

🔄 @MetaMask/swaps-engineers (2 files, +1 -19)
  • 📁 ui/
    • 📁 ducks/
      • 📁 bridge/
        • 📄 selectors.test.ts +1 -1
    • 📁 pages/
      • 📁 bridge/
        • 📄 index.scss +0 -18

cursor[bot]

This comment was marked as outdated.

@MoMannn MoMannn marked this pull request as draft October 10, 2025 14:00
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: b44b4f3 | Date: 10/10/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: 732ms (±69ms) 🟢 | historical mean value: 736ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±14ms) 🟢 | historical mean value: 82ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 71ms 1.01s 1.35s 1.26s 1.35s
domContentLoaded 732ms 69ms 697ms 1.03s 935ms 1.03s
firstPaint 75ms 14ms 56ms 192ms 84ms 192ms
firstContentfulPaint 75ms 14ms 56ms 192ms 84ms 192ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [b44b4f3]
UI Startup Metrics (1270 ± 57 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1270113714185713131364
load109498311915311331184
domContentLoaded108897811855211281179
domInteractive18145371741
firstPaint71782119144111251171
backgroundConnect2572432939262276
firstReactRender25186072741
getState1153051423
initialActions50386518
loadScripts83774093949869910
setupStore962131015
WebpackHomeuiStartup19051602234118720172284
load15691388200513116581847
domContentLoaded15551374199212816431827
domInteractive191195181474
firstPaint2746019374251751494
backgroundConnect3615193233868
firstReactRender5320283365987
getState1237071319
initialActions4014014313
loadScripts15511370199012716401825
setupStore1244671528
FirefoxBrowserifyHomeuiStartup14431228210614315091664
load12451066164910413281416
domContentLoaded12441066164810413281416
domInteractive1063631356115260
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3419233283369
firstReactRender28235343035
getState73829614
initialActions30617214
loadScripts1218105014449513061381
setupStore9414516738
WebpackHomeuiStartup17761543232014518402124
load15381294187210416071717
domContentLoaded15371294187210416071717
domInteractive1163341869110298
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect4322128224597
firstReactRender382796143988
getState11318323654
initialActions6113117226
loadScripts15051275181710415771686
setupStore16527236874

@metamaskbot
Copy link
Collaborator

❌ test-e2e-chrome-api-specs failed. View the html report here.

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: ee1f5b1 | Date: 10/13/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±74ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 728ms (±71ms) 🟢 | historical mean value: 735ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±12ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 74ms 1.00s 1.33s 1.29s 1.33s
domContentLoaded 728ms 71ms 696ms 1.01s 960ms 1.01s
firstPaint 75ms 12ms 60ms 176ms 84ms 176ms
firstContentfulPaint 75ms 12ms 60ms 176ms 84ms 176ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [ee1f5b1]
UI Startup Metrics (1244 ± 81 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1244109815568112951375
load108096713457511331207
domContentLoaded107496213397411261198
domInteractive18134761736
firstPaint75486136244010971206
backgroundConnect2532412707257266
firstReactRender23173842432
getState1157591229
initialActions40214412
loadScripts826718107771875946
setupStore85203914
WebpackHomeuiStartup19661609251019221152301
load15861326211714716821869
domContentLoaded15701316206714516631859
domInteractive2112200261673
firstPaint3735721165261971529
backgroundConnect4316198244992
firstReactRender67213014576173
getState184143172242
initialActions7019223322
loadScripts15661313205814416571856
setupStore184172201945
FirefoxBrowserifyHomeuiStartup14431234180611915021672
load1244107215689613111407
domContentLoaded1243107215679613111406
domInteractive1073427755107269
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect30197183445
firstReactRender29245253040
getState72568615
initialActions5012415215
loadScripts1220105615449412881379
setupStore937111737
WebpackHomeuiStartup15241320208713415741758
load1328118116299113941490
domContentLoaded1328118116289113941490
domInteractive1033141977102351
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3417127183677
firstReactRender332474113471
getState72538616
initialActions5010916227
loadScripts1302116215928913641460
setupStore10413316732

@MoMannn MoMannn marked this pull request as ready for review October 13, 2025 12:30
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: e3c20d1 | Date: 10/13/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±73ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 728ms (±69ms) 🟢 | 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.04s 73ms 999ms 1.33s 1.27s 1.33s
domContentLoaded 728ms 69ms 691ms 997ms 929ms 997ms
firstPaint 76ms 10ms 60ms 152ms 88ms 152ms
firstContentfulPaint 76ms 10ms 60ms 152ms 88ms 152ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [e3c20d1]
UI Startup Metrics (1141 ± 71 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1141100213477111951261
load97884711366610321106
domContentLoaded97183911306710271100
domInteractive181163101744
firstPaint63013311383829881063
backgroundConnect20218528912206215
firstReactRender25165673039
getState1244881530
initialActions50346618
loadScripts77564494168830904
setupStore1063051120
WebpackHomeuiStartup20141709249018721602330
load16421343197713017211905
domContentLoaded16241324195412817071880
domInteractive1811141191546
firstPaint3016419584491961613
backgroundConnect47172134052149
firstReactRender61202864673164
getState175116191652
initialActions40527319
loadScripts16191321195112717041876
setupStore184165241842
FirefoxBrowserifyHomeuiStartup14071217180412114651656
load1209106114438712661353
domContentLoaded1209106014428712661352
domInteractive1003533656102229
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3019117173275
firstReactRender28244533034
getState7311915513
initialActions3078829
loadScripts1186104414268512291337
setupStore11413818654
WebpackHomeuiStartup15401366208912815801848
load1343119115918714021516
domContentLoaded1343119115918714021516
domInteractive95293695597181
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3718126223885
firstReactRender33258593441
getState9212816644
initialActions406110226
loadScripts1314117615378313651465
setupStore11312416757

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants