Skip to content

Conversation

@MajorLift
Copy link
Contributor

@MajorLift MajorLift commented Oct 17, 2025

Description

Fix this error:

[experimental] scripts:core:dist:disable-console: MetaMask build: Encountered an error while running task "scripts:core:dist:disable-console".
[experimental] scripts:core:dist:disable-console: TypeError: Tried to access a declared, but not defined environmental variable "APPLE_EXPERIMENTAL_CLIENT_ID"
[experimental] 	Why am I seeing this: "APPLE_EXPERIMENTAL_CLIENT_ID" is declared in builds.yml, but had no actual value when we tried loading it.
[experimental] 	How do I fix this: You could provide a default value for the variable in builds.yml under "env" property and commit to git. For example:
[experimental] 		env:
[experimental] 		 - APPLE_EXPERIMENTAL_CLIENT_ID: ''
[experimental]   at Variables.get (/home/runner/work/metamask-extension/metamask-extension/development/lib/variables.js:32:7)
[experimental]   at assertAndLoadEnvVar (/home/runner/work/metamask-extension/metamask-extension/development/build/set-environment-variables.js:134:33)
[experimental]   at getAppleClientId (/home/runner/work/metamask-extension/metamask-extension/development/build/set-environment-variables.js:266:12)
[experimental]   at setEnvironmentVariables (/home/runner/work/metamask-extension/metamask-extension/development/build/set-environment-variables.js:32:23)
[experimental]   at eval (/home/runner/work/metamask-extension/metamask-extension/development/build/scripts.js:903:5)
[experimental]   at async Object.eval [as scripts:core:dist:disable-console] (/home/runner/work/metamask-extension/metamask-extension/development/build/task.js:124:5)
[experimental]   at async runTask (/home/runner/work/metamask-extension/metamask-extension/development/build/task.js:31:5)
[experimental]   at async defineAndRunBuildTasks (/home/runner/work/metamask-extension/metamask-extension/development/build/index.js:313:3)
[experimental] MetaMask build: Encountered an error while running task "scripts:dist".
[experimental] Error: MetaMask build: runInChildProcess for task "scripts:core:dist:disable-console" encountered an error "1".
[experimental]   at ChildProcess.eval (/home/runner/work/metamask-extension/metamask-extension/development/build/task.js:108:13)
[experimental]   at Object.onceWrapper (node:events:633:26)
[experimental]   at ChildProcess.emit (node:events:518:28)
[experimental]   at ChildProcess._handle.onexit (node:internal/child_process:293:12)
[experimental] yarn build scripts:dist --policy-only --lint-fence-files=false --build-type=experimental exited with code 1

https://github.com/MetaMask/metamask-extension/actions/runs/18643676985/job/53146990062?pr=36936

Open in GitHub Codespaces

Changelog

CHANGELOG entry: null

Related issues

Fixes:

Manual testing steps

  1. Go to this page...

Screenshots/Recordings

Before

After

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.

metamaskbot and others added 4 commits October 17, 2025 09:02
… workflow (#36942)

<!--
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?
-->

Declares environment variables in `builds.yml` that are required for the
`validate-lavamoat-policies` workflow to run successfully.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/36942?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**

- [ ] 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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds per-environment INFURA, Segment, Google, and Apple OAuth env vars
to builds.yml for workflow compatibility.
> 
> - **Build config (`builds.yml`)**:
> - Add per-environment INFURA project IDs: `INFURA_PROD_PROJECT_ID`,
`INFURA_BETA_PROJECT_ID`, `INFURA_FLASK_PROJECT_ID`,
`INFURA_EXPERIMENTAL_PROJECT_ID`.
> - Add per-environment Segment write keys: `SEGMENT_PROD_WRITE_KEY`,
`SEGMENT_BETA_WRITE_KEY`, `SEGMENT_FLASK_WRITE_KEY`,
`SEGMENT_EXPERIMENTAL_WRITE_KEY`.
>   - Add per-environment OAuth client IDs:
> - Google: `GOOGLE_PROD_CLIENT_ID`, `GOOGLE_BETA_CLIENT_ID`,
`GOOGLE_FLASK_CLIENT_ID`, `GOOGLE_EXPERIMENTAL_CLIENT_ID`.
> - Apple: `APPLE_PROD_CLIENT_ID`, `APPLE_BETA_CLIENT_ID`,
`APPLE_FLASK_CLIENT_ID`, `APPLE_EXPERIMENTAL_CLIENT_ID`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
707f704. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…roment variables (#36945)

<!--
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/36945?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**

- [ ] 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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Removes default empty-string values for Segment write keys and
Google/Apple OAuth client IDs, declaring them as required env vars
instead.
> 
> - **Build config (`builds.yml`)**:
>   - **Env var declarations**:
> - `SEGMENT_PROD_WRITE_KEY`, `SEGMENT_BETA_WRITE_KEY`,
`SEGMENT_FLASK_WRITE_KEY`, `SEGMENT_EXPERIMENTAL_WRITE_KEY` changed from
`''` defaults to declarations.
> - `GOOGLE_PROD_CLIENT_ID`, `GOOGLE_BETA_CLIENT_ID`,
`GOOGLE_FLASK_CLIENT_ID`, `GOOGLE_EXPERIMENTAL_CLIENT_ID` changed from
`''` defaults to declarations.
> - `APPLE_PROD_CLIENT_ID`, `APPLE_BETA_CLIENT_ID`,
`APPLE_FLASK_CLIENT_ID`, `APPLE_EXPERIMENTAL_CLIENT_ID` changed from
`''` defaults to declarations.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
f20db36. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
This PR updates the change log for 13.6.0.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds the 13.6.0 section to CHANGELOG with key additions/fixes and
updates comparison links.
> 
> - **CHANGELOG**:
>   - Add `13.6.0` release notes with highlights:
> - Real-time balance updates via integrated WebSocket and account
activity services (feature-flagged).
> - Expanded Bitcoin support (feature flag, BIP44 accounts, Bridge
support, BTC assets labeling; v1.3.0).
> - Shield subscription enhancements (entry modal integration, new
durations, error toasts, eligibility checks, coverage UI).
> - UI/components: add funds modal, new toast, file upload, skeleton
loaders; network and token logos.
>     - Localization: add Irish (Gaeilge).
> - Various fixes and performance improvements (token duplication, ENS
content hash resolution, Solana provider interactions, shield controller
patching).
> - Update links: set `[Unreleased]` to compare from `v13.6.0` and add
`[13.6.0]` compare URL.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
193b781. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com>
Co-authored-by: Gauthier Petetin <gauthierpetetin@hotmail.com>
@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-extension-platform Extension Platform team label Oct 17, 2025
@MajorLift MajorLift force-pushed the jongsun/fix/251017-validate-lavamoat-policy-env-vars branch from e52e5ad to 8f7d77b Compare October 17, 2025 18:45
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 8f7d77b | Date: 10/17/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±76ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 747ms (±87ms) 🟢 | historical mean value: 737ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 83ms (±42ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 76ms 999ms 1.35s 1.31s 1.35s
domContentLoaded 747ms 87ms 695ms 1.30s 1.01s 1.30s
firstPaint 83ms 42ms 64ms 496ms 92ms 496ms
firstContentfulPaint 83ms 42ms 64ms 496ms 92ms 496ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [8f7d77b]
UI Startup Metrics (1323 ± 90 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1323118215909014051489
load113395413828812011303
domContentLoaded112694713758711941295
domInteractive19145171838
firstPaint687135138445311181264
backgroundConnect26724630711273290
firstReactRender3120123133649
getState1865492141
initialActions61376718
loadScripts8666941115849351012
setupStore1163041219
WebpackHomeuiStartup834708108267847988
load63157692267634820
domContentLoaded62457091466629812
domInteractive15115281437
firstPaint19357827201176707
backgroundConnect22104272733
firstReactRender27166173233
getState932731114
initialActions206136
loadScripts62156890364627801
setupStore951821113
FirefoxBrowserifyHomeuiStartup14461248188610914871623
load1231105714997312811353
domContentLoaded1231105714987212811353
domInteractive1183531856122258
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3720163203886
firstReactRender25216662635
getState93406826
initialActions5121621311
loadScripts1206104114226912561322
setupStore134200211044
WebpackHomeuiStartup15891394199012916311899
load1361121517519714281530
domContentLoaded1361121517509714271529
domInteractive1153038580109357
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3821129174183
firstReactRender292383113139
getState12314721921
initialActions5110912313
loadScripts1336119017279514011501
setupStore136148211038

…ips, and popovers positioning cp-13.6.0 (#36973)

- fix: Popper.js used for dropdowns, tooltips, and popovers positioning
cp-13.6.0 (#36967)

## **Description**

This PR fixes an issue where Popper.js(used for dropdowns, tooltips, and
popovers) fails to access `window.devicePixelRatio` in production builds
due to LavaMoat scuttling. The issue was introduced by a recent
@popperjs/core update in [PR

#36557](https://github.com/MetaMask/metamask-extension/pull/36557/files#diff-51e4f558fae534656963876761c95b83b6ef5da5103c4adef6768219ed76c2deR9408).
The problem stems from [this upstream change in
floating-ui](floating-ui/floating-ui#2229)
which modified how Popper.js accesses the window object.

- Popper.js now gets a reference to the real window via a DOM node
rather than using the global window supplied to the LavaMoat compartment
- LavaMoat's scuttling removes `devicePixelRatio` from the real global
window object for security
- The LavaMoat policy grants compartments access to specified globals,
but Popper.js is trying to access them from the wrong window context
- The upstream change was intended to handle iframe scenarios (pages
with iframes where popovers from inside iframes render outside)

Two approaches were considered:
1. **Patching Popper.js** - Would require ongoing maintenance with
library updates
2. **Adding scuttling exception** - Simpler, more maintainable approach
that follows existing patterns

This solution was reached through collaborative investigation by
@markstacey and @davidmurdoch, who identified the root cause, evaluated
multiple approaches, and confirmed that the scuttling exception approach
works effectively
https://consensys.slack.com/archives/CTQAGKY5V/p1760559149075479 🙏

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/36967?quickstart=1)

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes: #36951
Fixes: https://consensyssoftware.atlassian.net/browse/CEUX-468

## **Manual testing steps**

1. Go to the latest build of the extension in this PR
2. Test UI components that use Popper.js:
   - Open dropdowns in the UI
   - Hover over elements that show tooltips
   - Test any popover menus
4. Verify that these components position correctly without console
errors
5. Check browser developer tools for any `devicePixelRatio` related
errors (should be none)

## **Screenshots/Recordings**

### **Before**
Popper.js would fail to access devicePixelRatio in production builds
causing positioning issues

<img width="413" height="640" alt="Screenshot 2025-10-17 at 3 20 36 PM"

src="https://github.com/user-attachments/assets/a04c16f2-7cdc-4b4b-b866-66917a2de87d"
/>




https://github.com/user-attachments/assets/91eb5594-1694-4718-804b-20613e6446bb

### **After**

Popper.js components work correctly with proper positioning in all build
types

<img width="417" height="644" alt="Screenshot 2025-10-17 at 2 53 17 PM"

src="https://github.com/user-attachments/assets/1bb75f03-a569-45f5-9da5-a6451fa33463"
/>



https://github.com/user-attachments/assets/2a2f13f1-a607-447b-bcf1-6631163f915c

## **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]
> Expose `devicePixelRatio` globally in LavaMoat scuttle exceptions
(moved from test-only) to restore Popper-based positioning.
> 
> - **Build/LavaMoat scuttling** (`development/build/index.js`):
> - Add `devicePixelRatio` to global `scuttleGlobalThisExceptions` (for
`@popperjs/core` and snap simple keyring site).
> - Remove `devicePixelRatio` from test-only exceptions
(`BUILD_TARGETS.TEST*`).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
90342ac. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->


[70832c2](70832c2)

Co-authored-by: George Marshall <george.marshall@consensys.net>
@MajorLift MajorLift force-pushed the jongsun/fix/251017-validate-lavamoat-policy-env-vars branch 2 times, most recently from ff5a8d4 to 8818659 Compare October 20, 2025 16:06
@MajorLift MajorLift changed the base branch from release/13.6.0 to main October 20, 2025 16:06
@MajorLift MajorLift changed the title [DNM] fix: cp-13.16.0 Add missing environment variables in lavamoat workflows Oct 20, 2025
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: ff5a8d4 | Date: 10/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.09s (±78ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 777ms (±88ms) 🟢 | historical mean value: 737ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 96ms (±131ms) 🟢 | historical mean value: 80ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.09s 78ms 1.04s 1.40s 1.32s 1.40s
domContentLoaded 777ms 88ms 727ms 1.32s 989ms 1.32s
firstPaint 96ms 131ms 68ms 1.40s 104ms 1.40s
firstContentfulPaint 96ms 131ms 68ms 1.40s 104ms 1.40s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [ff5a8d4]
UI Startup Metrics (1235 ± 79 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1235113117417912801330
load106295815047010961160
domContentLoaded105595514936910891156
domInteractive1813133131642
firstPaint57784152543110701145
backgroundConnect25723760838256264
firstReactRender26194662942
getState155106121831
initialActions60446616
loadScripts80471692054840897
setupStore1052741119
WebpackHomeuiStartup8987491430899211036
load671608124482682824
domContentLoaded662603123481669811
domInteractive17125891542
firstPaint19658842185190631
backgroundConnect241193102838
firstReactRender3018157163449
getState1053351215
initialActions309258
loadScripts659601122380667808
setupStore1163341317
FirefoxBrowserifyHomeuiStartup1396122016769714501593
load1195104714798112641312
domContentLoaded1194104714798112641312
domInteractive1083528450113240
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect30225573346
firstReactRender24214632528
getState84979814
initialActions41708311
loadScripts1175102814588012391290
setupStore1166381029
WebpackHomeuiStartup15911378198812416281883
load1369118316369414291585
domContentLoaded1368118216369414291584
domInteractive1133241775110361
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3821192214264
firstReactRender29227483236
getState11418120916
initialActions41254310
loadScripts1343116716108914051489
setupStore14697161155

@MajorLift MajorLift force-pushed the jongsun/fix/251017-validate-lavamoat-policy-env-vars branch from 8818659 to 80ba6d5 Compare October 20, 2025 19:12
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 80ba6d5 | Date: 10/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±79ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 739ms (±85ms) 🟢 | historical mean value: 737ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 88ms (±127ms) 🟢 | historical mean value: 80ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 79ms 1.01s 1.43s 1.30s 1.43s
domContentLoaded 739ms 85ms 703ms 1.28s 980ms 1.28s
firstPaint 88ms 127ms 64ms 1.35s 84ms 1.35s
firstContentfulPaint 88ms 127ms 64ms 1.35s 84ms 1.35s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [80ba6d5]
UI Startup Metrics (1215 ± 65 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1215110613826512631344
load103894811865610791152
domContentLoaded103394411795510731136
domInteractive1913152191637
firstPaint622121116441010361119
backgroundConnect2492362666253261
firstReactRender25184652737
getState1884662130
initialActions51366518
loadScripts78971093454833888
setupStore951921014
WebpackHomeuiStartup8657401137708911022
load64758895067653855
domContentLoaded63858293166644845
domInteractive15124871534
firstPaint19757938193198617
backgroundConnect23125172935
firstReactRender2917151143338
getState1252041417
initialActions309247
loadScripts63558092064641834
setupStore1051731215
FirefoxBrowserifyHomeuiStartup14341259193011914671688
load1216107217279312741377
domContentLoaded1216107217269312741376
domInteractive1153543964114267
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3822137184175
firstReactRender26215262544
getState848110715
initialActions41558314
loadScripts1191104717069412471340
setupStore13699121231
WebpackHomeuiStartup15111331191010215581702
load1303117516848613491465
domContentLoaded1303117416848613491463
domInteractive94333504199184
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect381975134567
firstReactRender27216992945
getState8412513816
initialActions4141538
loadScripts1282116016668413241435
setupStore1375181325
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 3.88 KiB (0.09%)
  • ui: 10.79 KiB (0.17%)
  • common: 1.09 KiB (0.01%)

@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: febe057 | Date: 10/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±71ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 735ms (±83ms) 🟢 | historical mean value: 735ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±42ms) 🟢 | historical mean value: 79ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 71ms 1.00s 1.32s 1.27s 1.32s
domContentLoaded 735ms 83ms 695ms 1.27s 931ms 1.27s
firstPaint 80ms 42ms 60ms 492ms 88ms 492ms
firstContentfulPaint 80ms 42ms 60ms 492ms 88ms 492ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [febe057]
UI Startup Metrics (1232 ± 64 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1232112714366412661366
load105394912155710871170
domContentLoaded104794412115610801165
domInteractive1814129121724
firstPaint65684120142110641115
backgroundConnect2512392686255262
firstReactRender26174662939
getState1884272134
initialActions61517718
loadScripts80271096555835917
setupStore952231015
BrowserifyPower User HomeuiStartup21341894272229424172722
load1095938169624214001696
domContentLoaded1088934168924113861689
domInteractive271466174866
firstPaint53814913963969591396
backgroundConnect26024131317270313
firstReactRender22192922329
getState19916922819219228
initialActions1124413744
loadScripts835692138422711231384
setupStore1782982629
WebpackStandard HomeuiStartup844729108061860973
load63058489058641741
domContentLoaded62257988057635732
domInteractive16116391440
firstPaint18555885173191601
backgroundConnect21114662533
firstReactRender27174783235
getState1161931417
initialActions309247
loadScripts62057886954633721
setupStore1051631214
WebpackPower User HomeuiStartup14271225199628317031996
load72060610411589291041
domContentLoaded698593981145906981
domInteractive32121213537121
firstPaint3436310383679111038
backgroundConnect55151855970185
firstReactRender21192312223
getState1633419435176194
initialActions216126
loadScripts694591970141895970
setupStore86122912
FirefoxBrowserifyStandard HomeuiStartup14771250196013315111794
load1245107116148112961387
domContentLoaded1245107116148112961387
domInteractive1203349967124285
firstPaint------
backgroundConnect4123139184582
firstReactRender27215072746
getState9412616720
initialActions7119126314
loadScripts1219105215787712731329
setupStore14795141249
BrowserifyPower User HomeuiStartup26822369339627328553396
load14141197167515915891675
domContentLoaded14141197167415915891674
domInteractive1504328865196288
firstPaint------
backgroundConnect16333699197301699
firstReactRender37284974349
getState1687629250195292
initialActions2512165411216
loadScripts13751168161114615451611
setupStore25779213379
WebpackStandard HomeuiStartup15851425203910316261800
load1360120516008314131518
domContentLoaded1360120516008314121518
domInteractive1153037371115338
firstPaint------
backgroundConnect402090154871
firstReactRender292277112971
getState74283912
initialActions5110012313
loadScripts1336118815718113931493
setupStore1366891330
WebpackPower User HomeuiStartup25392305336924525893369
load14971303198818315871988
domContentLoaded14971303198818315871988
domInteractive1476735070173350
firstPaint------
backgroundConnect11829562141173562
firstReactRender36274574345
getState1567922242191222
initialActions8145111345
loadScripts14591281180715715491807
setupStore21554153254
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 0 Bytes (0%)
  • common: 10 Bytes (0%)

@github-actions github-actions bot locked and limited conversation to collaborators Oct 21, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

size-XL team-extension-platform Extension Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants