Skip to content

feat: update hamburger menu to use drawer#39991

Merged
NidhiKJha merged 27 commits intomainfrom
CEUX-864-replace-global-menu-and-add-update-e-2-e-tests
Feb 16, 2026
Merged

feat: update hamburger menu to use drawer#39991
NidhiKJha merged 27 commits intomainfrom
CEUX-864-replace-global-menu-and-add-update-e-2-e-tests

Conversation

@NidhiKJha
Copy link
Member

@NidhiKJha NidhiKJha commented Feb 11, 2026

Description

This PR is to update hamburger to use global-menu drawer instead of global-menu popover component.
Note: This PR also removed the headless-ui library and implemented the drawer from scratch. Hence, the changes in package.json. It's not impacted other files because we added that library only for drawer component

Open in GitHub Codespaces

Changelog

CHANGELOG entry: replaced global-menu with global-menu-drawer

Related issues

Fixes: issue

Manual testing steps

  1. Run extension with yarn start
  2. click on hamburger menu. See the drawer appears
  3. Click on the snaps or any other route menu, it should navigate to the page
  4. Click on the back button on Page, it should redirect to homepage with the drawer open (drawer should have transition)

Screenshots/Recordings

Before

After

Screen.Recording.2026-02-16.at.9.46.22.AM.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

Medium Risk
Touches core navigation and the global header menu/drawer behavior, including custom transition/portal logic and new URL-driven state, which could introduce regressions in routing or overlay interactions across environments.

Overview
Replaces the header hamburger GlobalMenu popover with GlobalMenuDrawerWithList, and persists the drawer open/close state via a drawerOpen URL search param to avoid close/reopen flashes across route changes.

Refactors GlobalMenuDrawer to drop @headlessui/react in favor of a custom, phase-based transition implementation, with updated portal/positioning logic for fullscreen and sidepanel environments plus Escape/outside-click closing.

Updates global menu navigation to carry a from query param into Notifications, Snaps, and permissions routes and adjusts back-button behavior in notifications, snap-list, permissions-page, and gator-permissions-page accordingly; menu list styling/testids were tweaked, unit/e2e tests updated/added, and @headlessui/react was removed from dependencies.

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

@NidhiKJha NidhiKJha requested a review from a team as a code owner February 11, 2026 18:36
@metamaskbot metamaskbot added the team-core-extension-ux Core Extension UX team label Feb 11, 2026
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 11, 2026

✨ Files requiring CODEOWNER review ✨

🔑 @MetaMask/accounts-engineers (1 files, +0 -58)
  • 📁 test/
    • 📁 e2e/
      • 📁 tests/
        • 📁 multichain-accounts/
          • 📄 account-details.spec.ts +0 -58

👨‍🔧 @MetaMask/core-extension-ux (11 files, +652 -435)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 app-header/
          • 📄 app-header-unlocked-content.tsx +34 -23
          • 📄 app-header.test.js +46 -21
        • 📁 global-menu/
          • 📄 global-menu-list.tsx +15 -6
          • 📄 global-menu-list.types.ts +12 -0
          • 📄 global-menu.test.tsx +0 -178
          • 📄 global-menu.tsx +8 -5
        • 📁 global-menu-drawer/
          • 📄 global-menu-drawer.test.tsx +271 -0
          • 📄 global-menu-drawer.tsx +221 -183
          • 📄 useGlobalMenuSections.tsx +12 -9
        • 📁 pages/
          • 📁 gator-permissions/
            • 📄 gator-permissions-page.tsx +15 -2
          • 📁 permissions-page/
            • 📄 permissions-page.js +18 -8

🫰 @MetaMask/core-platform (3 files, +22 -7)
  • 📁 test/
    • 📁 e2e/
      • 📁 snaps/
        • 📄 test-snap-cronjob-duration.spec.ts +1 -1
        • 📄 test-snap-notification.spec.ts +3 -3
  • 📁 ui/
    • 📁 pages/
      • 📁 snaps/
        • 📁 snaps-list/
          • 📄 snap-list.js +18 -3

🔔 @MetaMask/notifications (1 files, +14 -4)
  • 📁 ui/
    • 📁 pages/
      • 📁 notifications/
        • 📄 notifications.tsx +14 -4

🧪 @MetaMask/qa (1 files, +6 -0)
  • 📁 test/
    • 📁 e2e/
      • 📁 page-objects/
        • 📁 pages/
          • 📄 header-navbar.ts +6 -0

@NidhiKJha
Copy link
Member Author

@metamaskbot update-policies

@metamaskbot metamaskbot requested a review from a team as a code owner February 11, 2026 18:54
@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

👀 lavamoat/browserify/beta/policy.json changes differ from main/policy.json policy changes
👀 lavamoat/browserify/experimental/policy.json changes differ from main/policy.json policy changes
👀 lavamoat/browserify/flask/policy.json changes differ from main/policy.json policy changes
👀 lavamoat/webpack/mv2/beta/policy.json changes differ from mv2/main/policy.json policy changes
👀 lavamoat/webpack/mv2/experimental/policy.json changes differ from mv2/main/policy.json policy changes
👀 lavamoat/webpack/mv2/flask/policy.json changes differ from mv2/main/policy.json policy changes
👀 lavamoat/webpack/mv3/beta/policy.json changes differ from mv3/main/policy.json policy changes
👀 lavamoat/webpack/mv3/experimental/policy.json changes differ from mv3/main/policy.json policy changes
👀 lavamoat/webpack/mv3/flask/policy.json changes differ from mv3/main/policy.json policy changes

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 11, 2026

Builds ready [d758ba2]
UI Startup Metrics (1336 ± 101 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup13361121162310113801523
load115296713918611901282
domContentLoaded114696413868511851275
domInteractive261592192281
firstPaint197601183178206298
backgroundConnect22620131514231252
firstReactRender15103031721
initialActions106113
loadScripts9327561173859721064
setupStore1263351323
numNetworkReqs2315100211585
BrowserifyPower User HomeuiStartup2595136610839208122438490
load12241033182217312511678
domContentLoaded12051028181316712331665
domInteractive38202163434123
firstPaint199721285140245367
backgroundConnect828281829214863843686
firstReactRender23144262633
initialActions103112
loadScripts96379815091579901413
setupStore1563961723
numNetworkReqs1175223745142214
WebpackStandard HomeuiStartup8246871055988721022
load70961192887761893
domContentLoaded70460792186758887
domInteractive2615105192379
firstPaint1086235454138198
backgroundConnect27187293143
firstReactRender1492741722
initialActions104111
loadScripts70160591985756885
setupStore135206201222
numNetworkReqs231598201578
WebpackPower User HomeuiStartup1294864269230313571882
load75064711981167631027
domContentLoaded73964011861167451015
domInteractive43192924237130
firstPaint1607552986211309
backgroundConnect17513183687166283
firstReactRender22153132427
initialActions101011
loadScripts73663811771147431005
setupStore1343961523
numNetworkReqs1385825944158221
FirefoxBrowserifyStandard HomeuiStartup16221348214517416582055
load13931176178112414371635
domContentLoaded13921176178012514371630
domInteractive79322554493149
firstPaint------
backgroundConnect56291602058103
firstReactRender1292521316
initialActions103122
loadScripts13661159173412014121604
setupStore186153271359
numNetworkReqs241295221788
BrowserifyPower User HomeuiStartup28602193879669729863506
load16501336668655116752134
domContentLoaded16491335668655116752134
domInteractive14035738117142383
firstPaint------
backgroundConnect3571111519300410972
firstReactRender211574122052
initialActions213122
loadScripts15901296662254115991988
setupStore1439793176154565
numNetworkReqs79371723597145
WebpackStandard HomeuiStartup15921317322123116232006
load13821175301119514281581
domContentLoaded13811174301019614281581
domInteractive862726650131170
firstPaint------
backgroundConnect53232703453119
firstReactRender14114741418
initialActions106112
loadScripts13571161298919214021541
setupStore176239281249
numNetworkReqs241395211783
WebpackPower User HomeuiStartup26961997465040128573402
load15351297366429616651942
domContentLoaded15341297366429616651942
domInteractive13228792133127522
firstPaint------
backgroundConnect3411181294253437855
firstReactRender20147562228
initialActions203122
loadScripts15021250362029216171906
setupStore15081167207157609
numNetworkReqs79412133495135
📊 Page Load Benchmark Results

Current Commit: d758ba2 | Date: 2/11/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±39ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 727ms (±37ms) 🟢 | historical mean value: 734ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±10ms) 🟢 | historical mean value: 81ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 39ms 1.02s 1.33s 1.07s 1.33s
domContentLoaded 727ms 37ms 705ms 999ms 746ms 999ms
firstPaint 77ms 10ms 64ms 160ms 88ms 160ms
firstContentfulPaint 77ms 10ms 64ms 160ms 88ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 59 Bytes (0%)
  • ui: 250.27 KiB (3.02%)
  • common: 25 Bytes (0%)

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 12, 2026

Builds ready [1c18c6f]
UI Startup Metrics (1387 ± 111 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup13871201191511114281543
load1188100715779312291344
domContentLoaded1182100315689312211338
domInteractive2816121202383
firstPaint1366734468194263
backgroundConnect24221850129241267
firstReactRender2011242231930
initialActions105113
loadScripts9567781327929961102
setupStore1363451623
numNetworkReqs231592201581
BrowserifyPower User HomeuiStartup17141407240815117532021
load11611026212016511401576
domContentLoaded11451021201415311301524
domInteractive3418185273367
firstPaint214771597189251320
backgroundConnect31228440324319362
firstReactRender22145772241
initialActions1010112
loadScripts90979417461468931295
setupStore1584171532
numNetworkReqs1054725643132165
WebpackStandard HomeuiStartup82668013051068821018
load713593101489769861
domContentLoaded708590100889764856
domInteractive2616115192276
firstPaint1036030147120202
backgroundConnect25175582839
firstReactRender14102841722
initialActions103112
loadScripts705588100588762854
setupStore127103101220
numNetworkReqs231594211583
WebpackPower User HomeuiStartup1177918177113812541418
load6936161211107680978
domContentLoaded6856111206107670971
domInteractive35171512931124
firstPaint1295942075144272
backgroundConnect15912834745154270
firstReactRender21173032327
initialActions102111
loadScripts6826091195105668961
setupStore1256071217
numNetworkReqs1174527253146251
FirefoxBrowserifyStandard HomeuiStartup17401564238416317492156
load15151344196712915351810
domContentLoaded15131344196712915351809
domInteractive994035250139159
firstPaint------
backgroundConnect6033164196091
firstReactRender13112721416
initialActions102122
loadScripts14851321190412315061767
setupStore157153181341
numNetworkReqs241396211788
BrowserifyPower User HomeuiStartup27572005451540028693584
load15961304246923516232101
domContentLoaded15951304246823516232101
domInteractive12936741130114438
firstPaint------
backgroundConnect255113911205214879
firstReactRender19156651922
initialActions103122
loadScripts15571280241322515792036
setupStore1289849193103623
numNetworkReqs673714534100128
WebpackStandard HomeuiStartup15431291217415016151736
load1336114616489913941504
domContentLoaded13351141164710013941504
domInteractive732923343112143
firstPaint------
backgroundConnect55261592963117
firstReactRender14115871423
initialActions102012
loadScripts1311113315709413721463
setupStore146172201242
numNetworkReqs231390191679
WebpackPower User HomeuiStartup27611925745563628773586
load16261252613053817442254
domContentLoaded16251247612953817432253
domInteractive13132897161109478
firstPaint------
backgroundConnect25048947196235766
firstReactRender22166262430
initialActions213122
loadScripts15851233610053516652207
setupStore1877820243247744
numNetworkReqs64351703396123
📊 Page Load Benchmark Results

Current Commit: 1c18c6f | Date: 2/12/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.02s (±38ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 714ms (±37ms) 🟢 | historical mean value: 730ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±12ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.02s 38ms 1.00s 1.32s 1.05s 1.32s
domContentLoaded 714ms 37ms 695ms 999ms 730ms 999ms
firstPaint 76ms 12ms 60ms 172ms 84ms 172ms
firstContentfulPaint 76ms 12ms 60ms 172ms 84ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 88 Bytes (0%)
  • ui: 250.69 KiB (3.03%)
  • common: -83 Bytes (0%)

@NidhiKJha NidhiKJha removed the request for review from a team February 13, 2026 18:51
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 15, 2026

Builds ready [dada7d2]
UI Startup Metrics (1399 ± 119 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup13991195182311914511580
load12101012158311212601410
domContentLoaded12031008157511112561402
domInteractive271689172474
firstPaint178681340174216338
backgroundConnect24823028110250272
firstReactRender16113341723
initialActions105113
loadScripts969776133511010181161
setupStore1362951620
numNetworkReqs231587201582
BrowserifyPower User HomeuiStartup17901464250015418052119
load11951074211917411701668
domContentLoaded11781067208516811581629
domInteractive37181733035118
firstPaint204741496182246352
backgroundConnect33830443822351370
firstReactRender24156082641
initialActions1010112
loadScripts91981018321668931339
setupStore1674781834
numNetworkReqs67421812964155
WebpackStandard HomeuiStartup8587031112989351039
load74562197294814915
domContentLoaded74061896693808909
domInteractive271692182379
firstPaint1236534354165201
backgroundConnect282073113055
firstReactRender1510118111722
initialActions103112
loadScripts73761696492806907
setupStore1263551222
numNetworkReqs231593211583
WebpackPower User HomeuiStartup1242865235422413071597
load71061614311286971032
domContentLoaded70060714071286881025
domInteractive39201572936119
firstPaint1516847069189265
backgroundConnect17413934048169295
firstReactRender23194642531
initialActions104111
loadScripts69760513931256861016
setupStore1355491337
numNetworkReqs1164829455139254
FirefoxBrowserifyStandard HomeuiStartup15371347196114415541874
load13311158169611613771588
domContentLoaded13301158169611613721587
domInteractive69361603294136
firstPaint------
backgroundConnect5227159185480
firstReactRender12102621313
initialActions103122
loadScripts13071136165911213501552
setupStore13677101137
numNetworkReqs251297221786
BrowserifyPower User HomeuiStartup27492079405140228573510
load15911307223227316662159
domContentLoaded15911306223227316662159
domInteractive12335692118116393
firstPaint------
backgroundConnect273118890210247844
firstReactRender201573101825
initialActions103122
loadScripts15461219220926316112116
setupStore101778317081580
numNetworkReqs66381342989125
WebpackStandard HomeuiStartup16201396196711016731856
load1406119616848314531526
domContentLoaded1406119616848314531526
domInteractive1032921840131161
firstPaint------
backgroundConnect55242023256132
firstReactRender14102421419
initialActions102012
loadScripts1381118116607914281487
setupStore156163191349
numNetworkReqs231288191780
WebpackPower User HomeuiStartup26051906349939626723440
load15371259228528016682153
domContentLoaded15361255228528016672153
domInteractive11333592119102445
firstPaint------
backgroundConnect2811151228220256791
firstReactRender20154952328
initialActions203122
loadScripts14951239226625916432055
setupStore1538718206177667
numNetworkReqs63341373391126
📊 Page Load Benchmark Results

Current Commit: dada7d2 | Date: 2/15/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.08s (±78ms) 🟡 | historical mean value: 1.06s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 763ms (±76ms) 🟢 | historical mean value: 746ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 84ms (±9ms) 🟢 | historical mean value: 85ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.08s 78ms 1.03s 1.37s 1.34s 1.37s
domContentLoaded 763ms 76ms 713ms 1.05s 1.01s 1.05s
firstPaint 84ms 9ms 68ms 156ms 92ms 156ms
firstContentfulPaint 84ms 9ms 68ms 156ms 92ms 156ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: 1.13 KiB (0.03%)
  • ui: 77.73 KiB (0.96%)
  • common: -149.48 KiB (-1.35%)

Comment on lines +190 to +192
navigate(
`${NOTIFICATIONS_ROUTE}?from=${encodeURIComponent(location.pathname)}`,
);
Copy link
Member Author

@NidhiKJha NidhiKJha Feb 15, 2026

Choose a reason for hiding this comment

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

When user navigates from drawer to page, and returns back to home page. For the first back button, we show the drawer on homepage with transition

// Show chevron for route items that have a valid route
const showChevron = isRouteItem(item);
// Show chevron for route items or when explicitly requested (e.g. notifications)
const showChevron = isRouteItem(item) || item.showChevron === true;
Copy link
Member Author

@NidhiKJha NidhiKJha Feb 15, 2026

Choose a reason for hiding this comment

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

when there are no notifications and the user clicks for first tim, then a modal is rendered but we still need to show the chevron because after opt in it becomes a route

Comment on lines -1 to -6
import React from 'react';
import { fireEvent, waitFor } from '../../../../test/jest';
import { renderWithProvider } from '../../../../test/lib/render-helpers-navigate';
import configureStore from '../../../store/store';
import mockState from '../../../../test/data/mock-state.json';
import {
Copy link
Member Author

@NidhiKJha NidhiKJha Feb 15, 2026

Choose a reason for hiding this comment

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

This file doesn't make sense since after using drawer, global-menu popover is deprecated. Actual component will be removed in separate PR

Comment on lines -4206 to -4213
"@headlessui/react@npm:^1.7.17":
version: 1.7.19
resolution: "@headlessui/react@npm:1.7.19"
dependencies:
"@tanstack/react-virtual": "npm:^3.0.0-beta.60"
client-only: "npm:^0.0.1"
peerDependencies:
react: ^16 || ^17 || ^18
Copy link
Member Author

Choose a reason for hiding this comment

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

wrote the drawer component from scratch so removed it

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 15, 2026

Builds ready [a0a8a2c]
UI Startup Metrics (1383 ± 93 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1383119317889314261531
load1188101515438712271346
domContentLoaded1182101115358612211334
domInteractive271692172569
firstPaint160671264132204330
backgroundConnect25023043121251271
firstReactRender15113031723
initialActions201481512
loadScripts9487781274849861102
setupStore1273041420
numNetworkReqs231586201580
BrowserifyPower User HomeuiStartup17341426226015318112054
load11761073174815211591618
domContentLoaded11611056168314311471579
domInteractive3517143223581
firstPaint1787341781240319
backgroundConnect33630141422350374
firstReactRender21153632327
initialActions102011
loadScripts90380214011408861308
setupStore1564761722
numNetworkReqs1144525644136198
WebpackStandard HomeuiStartup87670912601179601076
load7586261182108840937
domContentLoaded7526221173107834928
domInteractive281697202488
firstPaint1266528053170236
backgroundConnect25185162939
firstReactRender14112841722
initialActions104112
loadScripts7496201171106826926
setupStore1263761226
numNetworkReqs231587201583
WebpackPower User HomeuiStartup1269894205018913501616
load74865414041237371030
domContentLoaded73964713891237271020
domInteractive40192103637119
firstPaint159681406146174312
backgroundConnect17313538052175294
firstReactRender24194142530
initialActions101011
loadScripts73664513791207251010
setupStore1456071521
numNetworkReqs1144526049145222
FirefoxBrowserifyStandard HomeuiStartup15051306217318115381881
load13001129190014313441594
domContentLoaded12981124189614313401594
domInteractive60302363479113
firstPaint------
backgroundConnect5224239245686
firstReactRender12102321216
initialActions102112
loadScripts12761110187514013191544
setupStore156154191337
numNetworkReqs241299221788
BrowserifyPower User HomeuiStartup27572010453446528713705
load15831312243928616882273
domContentLoaded15831312243328616872273
domInteractive12436643116115412
firstPaint------
backgroundConnect330120969275425927
firstReactRender201488102027
initialActions106122
loadScripts15401290240127315822251
setupStore1529797204142620
numNetworkReqs67391393291133
WebpackStandard HomeuiStartup15771352362424216301893
load13751175344723214281567
domContentLoaded13751174344623214281567
domInteractive101322106206121167
firstPaint------
backgroundConnect49251702450106
firstReactRender14105051422
initialActions1015112
loadScripts13511160342523014051495
setupStore12660101041
numNetworkReqs241390211783
WebpackPower User HomeuiStartup27342030386942528413633
load15781269256130317082296
domContentLoaded15771269256130317082296
domInteractive13531908155116467
firstPaint------
backgroundConnect312121982255291898
firstReactRender23167382532
initialActions203122
loadScripts15401246252129516672251
setupStore1468757204151695
numNetworkReqs66371783387128
📊 Page Load Benchmark Results

Current Commit: a0a8a2c | Date: 2/15/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±42ms) 🟡 | historical mean value: 1.06s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 746ms (±40ms) 🟢 | historical mean value: 746ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 82ms (±10ms) 🟢 | historical mean value: 85ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 42ms 1.03s 1.36s 1.10s 1.36s
domContentLoaded 746ms 40ms 717ms 1.04s 788ms 1.04s
firstPaint 82ms 10ms 68ms 168ms 88ms 168ms
firstContentfulPaint 82ms 10ms 68ms 168ms 88ms 168ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: 1.13 KiB (0.03%)
  • ui: 77.73 KiB (0.96%)
  • common: -149.48 KiB (-1.35%)

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 16, 2026

Builds ready [1bc10fe]
UI Startup Metrics (1410 ± 98 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1410123317489814581600
load1217103614799112561374
domContentLoaded1210103214669112501366
domInteractive2817121192475
firstPaint159701072114212260
backgroundConnect25623147827258282
firstReactRender18113051928
initialActions301891912
loadScripts97178812149110211133
setupStore1374351621
numNetworkReqs231590211584
BrowserifyPower User HomeuiStartup3061144810871190940845012
load12831091200215813141622
domContentLoaded12671080198415412821577
domInteractive38202283237101
firstPaint1928648594262365
backgroundConnect12112999253157019232711
firstReactRender24174552734
initialActions105112
loadScripts1007827168114610181317
setupStore1774991836
numNetworkReqs1015223238123175
WebpackStandard HomeuiStartup87771713421159361086
load7696361267112823977
domContentLoaded7636321261112818970
domInteractive2716111202278
firstPaint1346166683175255
backgroundConnect28207183242
firstReactRender14102541822
initialActions103112
loadScripts7606301259111816968
setupStore1284161222
numNetworkReqs231595211584
WebpackPower User HomeuiStartup1251836237827912881799
load697608102791709927
domContentLoaded687603102292698920
domInteractive3419125223295
firstPaint1526873693190301
backgroundConnect16413559157159274
firstReactRender21163232326
initialActions102111
loadScripts685601101590695913
setupStore1143041317
numNetworkReqs1435928944157232
FirefoxBrowserifyStandard HomeuiStartup15911357246921316131987
load13811170229618614101677
domContentLoaded13801170229618614071676
domInteractive86359759999172
firstPaint------
backgroundConnect56271942657101
firstReactRender12102621314
initialActions102122
loadScripts13541137227217913831642
setupStore1367291329
numNetworkReqs241294211786
BrowserifyPower User HomeuiStartup27752039478941828923631
load15671297324230015891889
domContentLoaded15671297324230015851889
domInteractive187501772259172401
firstPaint------
backgroundConnect45712911652806331020
firstReactRender201574101829
initialActions207122
loadScripts15251270317429515381851
setupStore10018686124101374
numNetworkReqs912518131105156
WebpackStandard HomeuiStartup16621430214313317021949
load1439124416638714881607
domContentLoaded1438124416638714871606
domInteractive1133225646136174
firstPaint------
backgroundConnect56251703158130
firstReactRender14112631420
initialActions103122
loadScripts1411123016198014571542
setupStore166163241337
numNetworkReqs231389191775
WebpackPower User HomeuiStartup2936208810637110929933479
load16861303868398216391944
domContentLoaded16851302868398216391944
domInteractive17358724138180474
firstPaint------
backgroundConnect48013916323287191064
firstReactRender22156692331
initialActions217122
loadScripts16431285862998015891903
setupStore15018850165172529
numNetworkReqs894221132105141
📊 Page Load Benchmark Results

Current Commit: 1bc10fe | Date: 2/16/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±73ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 748ms (±71ms) 🟢 | historical mean value: 738ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±14ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 73ms 1.02s 1.35s 1.27s 1.35s
domContentLoaded 748ms 71ms 712ms 1.03s 954ms 1.03s
firstPaint 80ms 14ms 64ms 208ms 96ms 208ms
firstContentfulPaint 80ms 14ms 64ms 208ms 96ms 208ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: 1.13 KiB (0.03%)
  • ui: 77.73 KiB (0.96%)
  • common: -149.48 KiB (-1.35%)

Copy link
Contributor

@baptiste-marchand baptiste-marchand left a comment

Choose a reason for hiding this comment

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

LGTM on the Notifications files

Copy link
Member

@seaona seaona left a comment

Choose a reason for hiding this comment

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

Qa changes LGTM

Copy link
Contributor

@mathieuartu mathieuartu left a comment

Choose a reason for hiding this comment

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

Owned files LGTM!

@NidhiKJha NidhiKJha enabled auto-merge February 16, 2026 12:00
Copy link
Contributor

@ameliejyc ameliejyc left a comment

Choose a reason for hiding this comment

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

Overall lgtm! The behaviour works as expected. My only nit is when resizing the sidepanel with the menu open, the drawer doesn't stick to the right as it should and makes the experience quite bumpy. This is something we can revisit.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.20.0 Issue or pull request that will be included in release 13.20.0 size-XL team-core-extension-ux Core Extension UX team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants