feat: Gas modals refactor II
Description
This PR implements the second step of https://github.com/MetaMask/MetaMask-planning/issues/6067
Note that new gas modal UI is not enabled yet until very last step. Hence no changelog included.
The recording is manually enabled on local.
Changelog
CHANGELOG entry:
Related issues
Fixes: Step II of https://github.com/MetaMask/MetaMask-planning/issues/6067
Manual testing steps
N/A
Screenshots/Recordings
Before
After
https://github.com/user-attachments/assets/10d8b032-dd1c-40ec-b985-293ce8fd0f93
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
- [X] I’ve documented my code using JSDoc format if applicable
- [X] 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.
[!NOTE] Refactors gas fee flows by introducing Advanced EIP-1559 and Advanced Gas Price modals with new input components and validations, updating UI hooks/components, and adding locales and tests.
- Confirmations UI:
- Modals: Add
AdvancedEIP1559ModalandAdvancedGasPriceModalwith Save/Cancel, wired toupdateTransactionGasFeesand modal navigation.- Inputs (new):
GasInput,GasPriceInput,MaxBaseFeeInput,PriorityFeeInputwith error handling and unit labels; render current/historical fee ranges where available.- List Item: Update
gas-estimate-list-itemto@metamask/design-system-react, remove emoji/icon usage, and adjust styles.- Estimates Modal: Remove header row and use updated list items; keep network statistics/help link.
- Hooks/Types:
- Update gas option hooks (
useAdvancedGasFeeOption,useGasFeeEstimateLevelOptions,useGasPriceEstimateOption,useDappSuggestedGasFeeOption) to dropemoji, use redesigned tooltips, and selection logic.- Simplify
GasModalTypeandGasOption(removeemoji).- Validation/Utils (new):
- Add
utils/gasValidations(gas limit, priority fee, max base fee, gas price) andutils/number(limitToMaximumDecimalPlaces).- Locales:
- Add/update strings for advanced fee modals, GWEI ranges, input errors, and labels in
app/_locales/en*.- Tests:
- Add comprehensive tests for new inputs/modals and update existing list item tests.
Written by Cursor Bugbot for commit cbde530c8be05c8537248a970a76ae1a1d49f7b1. This will update automatically on new commits. Configure here.
✨ Files requiring CODEOWNER review ✨
✅ @MetaMask/confirmations (28 files, +1274 -186)
- 📁 ui/
- 📁 pages/
- 📁 confirmations/
- 📁 components/
- 📁 confirm/
- 📁 info/
- 📁 __snapshots__/
- 📄
info.test.tsx.snap+3 -3
- 📄
- 📁 approve/
- 📁 __snapshots__/
- 📄
approve.test.tsx.snap+1 -1
- 📄
- 📁 __snapshots__/
- 📁 base-transaction-info/
- 📁 __snapshots__/
- 📄
base-transaction-info.test.tsx.snap+1 -1
- 📄
- 📁 __snapshots__/
- 📁 native-transfer/
- 📁 __snapshots__/
- 📄
native-transfer.test.tsx.snap+1 -1
- 📄
- 📁 __snapshots__/
- 📁 nft-token-transfer/
- 📁 __snapshots__/
- 📄
nft-token-transfer.test.tsx.snap+1 -1
- 📄
- 📁 __snapshots__/
- 📁 set-approval-for-all-info/
- 📁 __snapshots__/
- 📄
set-approval-for-all-info.test.tsx.snap+1 -1
- 📄
- 📁 __snapshots__/
- 📁 shared/
- 📁 gas-fees-section/
- 📁 __snapshots__/
- 📄
gas-fees-section.test.tsx.snap+1 -1
- 📄
- 📁 __snapshots__/
- 📁 gas-fees-section/
- 📁 token-transfer/
- 📁 __snapshots__/
- 📄
token-transfer.test.tsx.snap+1 -1
- 📄
- 📁 __snapshots__/
- 📁 __snapshots__/
- 📁 info/
- 📁 gas-details-item/
- 📄
gas-details-item.test.js+2 -2
- 📄
- 📁 gas-estimate-list-item/
- 📄
gas-estimate-list-item.test.tsx+1 -34 - 📄
gas-estimate-list-item.tsx+35 -77
- 📄
- 📁 gas-input/
- 📄
gas-input.test.tsx+83 -0 - 📄
gas-input.tsx+70 -0
- 📄
- 📁 gas-price-input/
- 📄
gas-price-input.test.tsx+94 -0 - 📄
gas-price-input.tsx+85 -0
- 📄
- 📁 gas-timing/
- 📄
gas-timing.component.js+2 -6 - 📄
gas-timing.component.test.js+2 -2
- 📄
- 📁 max-base-fee-input/
- 📄
max-base-fee-input.test.tsx+96 -0 - 📄
max-base-fee-input.tsx+131 -0
- 📄
- 📁 modals/
- 📁 advanced-eip1559-modal/
- 📄
advanced-eip1559-modal.test.tsx+74 -9 - 📄
advanced-eip1559-modal.tsx+153 -5
- 📄
- 📁 advanced-gas-price-modal/
- 📄
advanced-gas-price-modal.test.tsx+66 -9 - 📄
advanced-gas-price-modal.tsx+126 -5
- 📄
- 📁 estimates-modal/
- 📄
estimates-modal.tsx+10 -12
- 📄
- 📁 advanced-eip1559-modal/
- 📁 priority-fee-input/
- 📄
priority-fee-input.test.tsx+96 -0 - 📄
priority-fee-input.tsx+137 -0
- 📄
- 📁 confirm/
- 📁 constants/
- 📄
gas.ts+0 -9
- 📄
- 📁 hooks/
- 📁 gas/
- 📄
useAdvancedGasFeeOption.ts+1 -6
- 📄
- 📁 gas/
- 📁 components/
- 📁 confirmations/
- 📁 pages/
Builds ready [46762d2]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1253 ± 117 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1253 | 1023 | 1700 | 117 | 1329 | 1448 |
| load | 1029 | 853 | 1435 | 100 | 1076 | 1183 | |||
| domContentLoaded | 1021 | 849 | 1398 | 98 | 1071 | 1169 | |||
| domInteractive | 25 | 15 | 98 | 18 | 22 | 81 | |||
| firstPaint | 531 | 95 | 1414 | 404 | 1008 | 1149 | |||
| backgroundConnect | 213 | 194 | 271 | 15 | 217 | 244 | |||
| firstReactRender | 45 | 31 | 94 | 15 | 48 | 81 | |||
| getState | 41 | 17 | 134 | 21 | 44 | 94 | |||
| initialActions | 1 | 0 | 6 | 1 | 1 | 3 | |||
| loadScripts | 815 | 653 | 1168 | 93 | 866 | 963 | |||
| setupStore | 12 | 7 | 48 | 6 | 13 | 25 | |||
| numNetworkReqs | 13 | 6 | 74 | 19 | 6 | 68 | |||
| Browserify | Power User Home | uiStartup | 1894 | 1556 | 2267 | 150 | 1985 | 2179 | |
| load | 1075 | 894 | 1295 | 121 | 1191 | 1258 | |||
| domContentLoaded | 1064 | 885 | 1285 | 121 | 1180 | 1251 | |||
| domInteractive | 29 | 17 | 148 | 21 | 27 | 87 | |||
| firstPaint | 588 | 100 | 1314 | 413 | 1015 | 1225 | |||
| backgroundConnect | 259 | 197 | 671 | 107 | 242 | 576 | |||
| firstReactRender | 46 | 39 | 68 | 5 | 48 | 58 | |||
| getState | 186 | 143 | 312 | 29 | 199 | 251 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 2 | |||
| loadScripts | 852 | 685 | 1085 | 118 | 970 | 1044 | |||
| setupStore | 16 | 10 | 54 | 8 | 15 | 37 | |||
| numNetworkReqs | 71 | 58 | 143 | 19 | 69 | 122 | |||
| Webpack | Standard Home | uiStartup | 799 | 676 | 1040 | 76 | 833 | 969 | |
| load | 645 | 569 | 917 | 69 | 689 | 783 | |||
| domContentLoaded | 639 | 563 | 910 | 68 | 684 | 776 | |||
| domInteractive | 25 | 16 | 100 | 19 | 22 | 86 | |||
| firstPaint | 241 | 84 | 687 | 154 | 235 | 616 | |||
| backgroundConnect | 12 | 6 | 84 | 10 | 13 | 29 | |||
| firstReactRender | 51 | 33 | 232 | 34 | 47 | 114 | |||
| getState | 28 | 14 | 55 | 10 | 37 | 47 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 1 | |||
| loadScripts | 636 | 561 | 902 | 67 | 682 | 768 | |||
| setupStore | 12 | 6 | 39 | 7 | 13 | 29 | |||
| numNetworkReqs | 13 | 6 | 78 | 19 | 6 | 73 | |||
| Webpack | Power User Home | uiStartup | 1446 | 1096 | 2013 | 208 | 1661 | 1765 | |
| load | 748 | 597 | 1026 | 111 | 865 | 923 | |||
| domContentLoaded | 740 | 591 | 1016 | 110 | 861 | 914 | |||
| domInteractive | 33 | 18 | 188 | 30 | 28 | 110 | |||
| firstPaint | 320 | 92 | 941 | 238 | 374 | 873 | |||
| backgroundConnect | 90 | 7 | 659 | 172 | 58 | 582 | |||
| firstReactRender | 50 | 41 | 66 | 5 | 52 | 61 | |||
| getState | 192 | 143 | 735 | 68 | 193 | 296 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 2 | |||
| loadScripts | 737 | 588 | 1006 | 109 | 852 | 912 | |||
| setupStore | 14 | 7 | 40 | 7 | 14 | 35 | |||
| numNetworkReqs | 73 | 57 | 228 | 28 | 68 | 134 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1347 | 1080 | 1920 | 175 | 1436 | 1689 |
| load | 1073 | 915 | 1385 | 93 | 1134 | 1234 | |||
| domContentLoaded | 1073 | 915 | 1385 | 93 | 1134 | 1234 | |||
| domInteractive | 68 | 30 | 157 | 35 | 89 | 137 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 59 | 22 | 334 | 58 | 67 | 202 | |||
| firstReactRender | 39 | 31 | 59 | 7 | 42 | 52 | |||
| getState | 12 | 7 | 103 | 11 | 11 | 25 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1044 | 898 | 1318 | 85 | 1111 | 1189 | |||
| setupStore | 14 | 5 | 201 | 21 | 11 | 40 | |||
| numNetworkReqs | 16 | 6 | 81 | 22 | 7 | 78 | |||
| Browserify | Power User Home | uiStartup | 2580 | 1535 | 3864 | 598 | 3083 | 3433 | |
| load | 1639 | 911 | 3311 | 549 | 2143 | 2354 | |||
| domContentLoaded | 1639 | 911 | 3310 | 549 | 2143 | 2354 | |||
| domInteractive | 131 | 32 | 1044 | 218 | 82 | 944 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 189 | 25 | 1121 | 237 | 204 | 1025 | |||
| firstReactRender | 56 | 34 | 190 | 18 | 59 | 86 | |||
| getState | 145 | 63 | 1001 | 97 | 170 | 226 | |||
| initialActions | 3 | 0 | 47 | 8 | 2 | 31 | |||
| loadScripts | 1529 | 897 | 2540 | 499 | 2017 | 2265 | |||
| setupStore | 37 | 5 | 250 | 51 | 39 | 167 | |||
| numNetworkReqs | 74 | 51 | 134 | 21 | 81 | 119 | |||
| Webpack | Standard Home | uiStartup | 1548 | 1286 | 2183 | 179 | 1619 | 1967 | |
| load | 1276 | 1114 | 1504 | 94 | 1317 | 1472 | |||
| domContentLoaded | 1275 | 1114 | 1504 | 94 | 1317 | 1471 | |||
| domInteractive | 73 | 30 | 177 | 34 | 94 | 129 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 57 | 22 | 224 | 44 | 64 | 154 | |||
| firstReactRender | 42 | 34 | 96 | 9 | 45 | 53 | |||
| getState | 16 | 6 | 147 | 20 | 15 | 49 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1248 | 1096 | 1474 | 84 | 1292 | 1409 | |||
| setupStore | 19 | 6 | 181 | 26 | 15 | 71 | |||
| numNetworkReqs | 15 | 6 | 86 | 21 | 8 | 80 | |||
| Webpack | Power User Home | uiStartup | 2646 | 1776 | 3547 | 491 | 3037 | 3360 | |
| load | 1821 | 1153 | 2606 | 486 | 2295 | 2520 | |||
| domContentLoaded | 1821 | 1153 | 2605 | 486 | 2295 | 2520 | |||
| domInteractive | 254 | 29 | 1109 | 354 | 212 | 975 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 160 | 28 | 999 | 193 | 195 | 466 | |||
| firstReactRender | 56 | 36 | 113 | 14 | 60 | 86 | |||
| getState | 133 | 83 | 313 | 49 | 168 | 246 | |||
| initialActions | 3 | 0 | 39 | 6 | 2 | 7 | |||
| loadScripts | 1748 | 1134 | 2516 | 464 | 2240 | 2419 | |||
| setupStore | 38 | 5 | 340 | 64 | 35 | 190 | |||
| numNetworkReqs | 71 | 47 | 133 | 23 | 68 | 119 |
📊 Page Load Benchmark Results
Current Commit: 46762d2 | Date: 12/10/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1000ms (±40ms) 🟢 | historical mean value: 1.04s ⬇️ (historical data)
- domContentLoaded-> current mean value: 691ms (±37ms) 🟢 | historical mean value: 721ms ⬇️ (historical data)
- firstContentfulPaint-> current mean value: 77ms (±13ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1000ms | 40ms | 969ms | 1.29s | 1.02s | 1.29s |
| domContentLoaded | 691ms | 37ms | 668ms | 955ms | 708ms | 955ms |
| firstPaint | 77ms | 13ms | 68ms | 192ms | 84ms | 192ms |
| firstContentfulPaint | 77ms | 13ms | 68ms | 192ms | 84ms | 192ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚨 Warning! Bundle size has increased!]
- background: 280 Bytes (0.01%)
- ui: -45 Bytes (0%)
- common: 1 KiB (0.01%)
Builds ready [cbde530]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1271 ± 104 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1271 | 1034 | 1526 | 104 | 1345 | 1448 |
| load | 1034 | 870 | 1236 | 86 | 1087 | 1197 | |||
| domContentLoaded | 1027 | 865 | 1225 | 86 | 1081 | 1184 | |||
| domInteractive | 26 | 14 | 86 | 18 | 22 | 82 | |||
| firstPaint | 532 | 96 | 1238 | 398 | 997 | 1188 | |||
| backgroundConnect | 215 | 196 | 262 | 12 | 221 | 236 | |||
| firstReactRender | 45 | 31 | 102 | 12 | 48 | 75 | |||
| getState | 37 | 16 | 127 | 20 | 41 | 64 | |||
| initialActions | 1 | 0 | 6 | 1 | 1 | 3 | |||
| loadScripts | 819 | 664 | 1024 | 84 | 870 | 982 | |||
| setupStore | 12 | 7 | 33 | 6 | 14 | 24 | |||
| numNetworkReqs | 13 | 6 | 77 | 19 | 6 | 72 | |||
| Browserify | Power User Home | uiStartup | 1969 | 1634 | 2663 | 163 | 2023 | 2300 | |
| load | 1134 | 918 | 1467 | 110 | 1200 | 1314 | |||
| domContentLoaded | 1122 | 913 | 1458 | 109 | 1186 | 1302 | |||
| domInteractive | 31 | 18 | 108 | 19 | 30 | 88 | |||
| firstPaint | 626 | 136 | 1396 | 439 | 1096 | 1312 | |||
| backgroundConnect | 240 | 205 | 535 | 38 | 244 | 275 | |||
| firstReactRender | 50 | 39 | 81 | 6 | 52 | 61 | |||
| getState | 223 | 154 | 742 | 94 | 232 | 282 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 899 | 699 | 1225 | 105 | 956 | 1084 | |||
| setupStore | 16 | 7 | 62 | 8 | 15 | 36 | |||
| numNetworkReqs | 71 | 59 | 201 | 21 | 68 | 125 | |||
| Webpack | Standard Home | uiStartup | 831 | 694 | 1205 | 88 | 874 | 998 | |
| load | 663 | 573 | 853 | 71 | 697 | 809 | |||
| domContentLoaded | 658 | 568 | 847 | 70 | 693 | 802 | |||
| domInteractive | 26 | 16 | 93 | 18 | 22 | 84 | |||
| firstPaint | 222 | 104 | 808 | 146 | 221 | 672 | |||
| backgroundConnect | 12 | 6 | 59 | 10 | 11 | 37 | |||
| firstReactRender | 57 | 32 | 257 | 38 | 52 | 137 | |||
| getState | 31 | 15 | 96 | 14 | 40 | 55 | |||
| initialActions | 1 | 0 | 7 | 1 | 1 | 1 | |||
| loadScripts | 654 | 566 | 838 | 69 | 691 | 793 | |||
| setupStore | 12 | 6 | 40 | 6 | 14 | 26 | |||
| numNetworkReqs | 13 | 6 | 78 | 20 | 6 | 73 | |||
| Webpack | Power User Home | uiStartup | 1437 | 1063 | 2039 | 206 | 1594 | 1833 | |
| load | 746 | 596 | 1047 | 114 | 855 | 930 | |||
| domContentLoaded | 738 | 589 | 1039 | 113 | 846 | 923 | |||
| domInteractive | 31 | 16 | 112 | 24 | 27 | 103 | |||
| firstPaint | 325 | 87 | 1005 | 240 | 396 | 848 | |||
| backgroundConnect | 96 | 8 | 716 | 187 | 56 | 571 | |||
| firstReactRender | 49 | 41 | 74 | 5 | 51 | 59 | |||
| getState | 185 | 145 | 352 | 35 | 194 | 250 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 1 | |||
| loadScripts | 735 | 587 | 1036 | 112 | 843 | 916 | |||
| setupStore | 15 | 6 | 40 | 9 | 14 | 36 | |||
| numNetworkReqs | 70 | 56 | 157 | 21 | 66 | 135 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1277 | 1055 | 1764 | 167 | 1323 | 1696 |
| load | 1026 | 905 | 1228 | 82 | 1074 | 1213 | |||
| domContentLoaded | 1025 | 899 | 1228 | 83 | 1074 | 1212 | |||
| domInteractive | 57 | 31 | 172 | 31 | 84 | 117 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 47 | 20 | 198 | 39 | 54 | 162 | |||
| firstReactRender | 38 | 30 | 58 | 7 | 39 | 56 | |||
| getState | 14 | 7 | 130 | 17 | 11 | 31 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 2 | |||
| loadScripts | 1001 | 888 | 1201 | 74 | 1051 | 1157 | |||
| setupStore | 15 | 6 | 140 | 21 | 11 | 57 | |||
| numNetworkReqs | 15 | 6 | 83 | 22 | 8 | 79 | |||
| Browserify | Power User Home | uiStartup | 2703 | 1686 | 3861 | 561 | 3178 | 3479 | |
| load | 1640 | 1018 | 2834 | 519 | 2133 | 2457 | |||
| domContentLoaded | 1640 | 1018 | 2834 | 519 | 2133 | 2456 | |||
| domInteractive | 142 | 34 | 982 | 219 | 102 | 914 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 223 | 20 | 1358 | 269 | 251 | 978 | |||
| firstReactRender | 58 | 40 | 105 | 11 | 63 | 72 | |||
| getState | 142 | 69 | 376 | 57 | 157 | 270 | |||
| initialActions | 3 | 1 | 43 | 6 | 2 | 7 | |||
| loadScripts | 1516 | 1003 | 2717 | 460 | 1963 | 2276 | |||
| setupStore | 39 | 5 | 377 | 58 | 46 | 127 | |||
| numNetworkReqs | 74 | 25 | 133 | 24 | 70 | 129 | |||
| Webpack | Standard Home | uiStartup | 1548 | 1317 | 2089 | 159 | 1618 | 1876 | |
| load | 1278 | 1119 | 1778 | 105 | 1331 | 1478 | |||
| domContentLoaded | 1277 | 1119 | 1778 | 105 | 1331 | 1478 | |||
| domInteractive | 66 | 26 | 143 | 33 | 86 | 132 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 57 | 21 | 176 | 37 | 65 | 153 | |||
| firstReactRender | 41 | 33 | 90 | 9 | 44 | 55 | |||
| getState | 18 | 7 | 196 | 27 | 14 | 54 | |||
| initialActions | 1 | 0 | 3 | 1 | 1 | 2 | |||
| loadScripts | 1249 | 1101 | 1710 | 98 | 1292 | 1452 | |||
| setupStore | 18 | 5 | 207 | 26 | 15 | 55 | |||
| numNetworkReqs | 15 | 6 | 78 | 20 | 8 | 73 | |||
| Webpack | Power User Home | uiStartup | 2704 | 1784 | 3963 | 509 | 3036 | 3528 | |
| load | 1857 | 1185 | 2618 | 457 | 2273 | 2452 | |||
| domContentLoaded | 1856 | 1185 | 2618 | 457 | 2273 | 2451 | |||
| domInteractive | 218 | 28 | 1025 | 326 | 142 | 961 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 139 | 29 | 944 | 119 | 194 | 301 | |||
| firstReactRender | 53 | 35 | 116 | 14 | 60 | 72 | |||
| getState | 131 | 78 | 392 | 52 | 155 | 238 | |||
| initialActions | 2 | 0 | 43 | 4 | 2 | 4 | |||
| loadScripts | 1794 | 1156 | 2596 | 442 | 2197 | 2422 | |||
| setupStore | 49 | 5 | 1039 | 119 | 37 | 185 | |||
| numNetworkReqs | 71 | 47 | 137 | 21 | 68 | 123 |
📊 Page Load Benchmark Results
Current Commit: cbde530 | Date: 12/10/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.05s (±41ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
- domContentLoaded-> current mean value: 731ms (±37ms) 🟢 | historical mean value: 719ms ⬆️ (historical data)
- firstContentfulPaint-> current mean value: 77ms (±12ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.05s | 41ms | 1.02s | 1.36s | 1.07s | 1.36s |
| domContentLoaded | 731ms | 37ms | 702ms | 1.02s | 749ms | 1.02s |
| firstPaint | 77ms | 12ms | 60ms | 188ms | 88ms | 188ms |
| firstContentfulPaint | 77ms | 12ms | 60ms | 188ms | 88ms | 188ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚨 Warning! Bundle size has increased!]
- background: 116 Bytes (0%)
- ui: 9 Bytes (0%)
- common: 1 KiB (0.01%)
Builds ready [91aec91]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1274 ± 93 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1274 | 1048 | 1497 | 93 | 1338 | 1401 |
| load | 1041 | 877 | 1204 | 77 | 1086 | 1181 | |||
| domContentLoaded | 1034 | 872 | 1194 | 77 | 1079 | 1168 | |||
| domInteractive | 26 | 16 | 104 | 20 | 21 | 84 | |||
| firstPaint | 579 | 80 | 1221 | 424 | 1059 | 1175 | |||
| backgroundConnect | 218 | 198 | 275 | 12 | 225 | 243 | |||
| firstReactRender | 45 | 32 | 123 | 13 | 48 | 70 | |||
| getState | 36 | 18 | 139 | 16 | 42 | 63 | |||
| initialActions | 1 | 0 | 10 | 1 | 1 | 4 | |||
| loadScripts | 823 | 677 | 987 | 74 | 859 | 963 | |||
| setupStore | 12 | 6 | 50 | 7 | 13 | 25 | |||
| numNetworkReqs | 13 | 6 | 81 | 20 | 6 | 72 | |||
| Browserify | Power User Home | uiStartup | 1919 | 1632 | 3026 | 189 | 1984 | 2231 | |
| load | 1059 | 872 | 1569 | 129 | 1161 | 1266 | |||
| domContentLoaded | 1049 | 864 | 1556 | 129 | 1152 | 1256 | |||
| domInteractive | 29 | 17 | 141 | 23 | 26 | 88 | |||
| firstPaint | 538 | 88 | 1621 | 410 | 998 | 1216 | |||
| backgroundConnect | 258 | 195 | 735 | 112 | 232 | 571 | |||
| firstReactRender | 48 | 39 | 86 | 8 | 49 | 66 | |||
| getState | 196 | 143 | 696 | 90 | 194 | 286 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 2 | |||
| loadScripts | 837 | 667 | 1292 | 126 | 945 | 1055 | |||
| setupStore | 16 | 9 | 47 | 8 | 15 | 36 | |||
| numNetworkReqs | 72 | 58 | 213 | 24 | 68 | 133 | |||
| Webpack | Standard Home | uiStartup | 821 | 676 | 984 | 74 | 868 | 960 | |
| load | 669 | 572 | 860 | 74 | 721 | 810 | |||
| domContentLoaded | 663 | 566 | 852 | 74 | 714 | 802 | |||
| domInteractive | 26 | 15 | 109 | 19 | 22 | 79 | |||
| firstPaint | 264 | 82 | 859 | 205 | 235 | 799 | |||
| backgroundConnect | 11 | 6 | 39 | 7 | 12 | 31 | |||
| firstReactRender | 51 | 32 | 170 | 28 | 58 | 129 | |||
| getState | 28 | 14 | 76 | 11 | 36 | 49 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 2 | |||
| loadScripts | 660 | 563 | 849 | 73 | 712 | 800 | |||
| setupStore | 11 | 7 | 28 | 4 | 13 | 20 | |||
| numNetworkReqs | 13 | 6 | 80 | 19 | 6 | 72 | |||
| Webpack | Power User Home | uiStartup | 1391 | 1087 | 2117 | 196 | 1506 | 1724 | |
| load | 724 | 575 | 1108 | 107 | 806 | 914 | |||
| domContentLoaded | 717 | 570 | 1100 | 106 | 802 | 900 | |||
| domInteractive | 30 | 16 | 126 | 24 | 26 | 99 | |||
| firstPaint | 267 | 99 | 1107 | 203 | 243 | 754 | |||
| backgroundConnect | 69 | 6 | 576 | 134 | 42 | 533 | |||
| firstReactRender | 50 | 40 | 77 | 6 | 51 | 63 | |||
| getState | 198 | 138 | 870 | 112 | 186 | 322 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 2 | |||
| loadScripts | 714 | 568 | 1090 | 105 | 794 | 898 | |||
| setupStore | 16 | 7 | 40 | 9 | 14 | 37 | |||
| numNetworkReqs | 72 | 57 | 200 | 25 | 67 | 135 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1320 | 1068 | 2355 | 187 | 1403 | 1633 |
| load | 1076 | 912 | 2028 | 143 | 1122 | 1246 | |||
| domContentLoaded | 1076 | 908 | 2028 | 143 | 1122 | 1246 | |||
| domInteractive | 68 | 31 | 267 | 38 | 89 | 133 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 52 | 21 | 207 | 40 | 64 | 138 | |||
| firstReactRender | 38 | 31 | 68 | 8 | 38 | 57 | |||
| getState | 13 | 6 | 173 | 18 | 11 | 24 | |||
| initialActions | 1 | 0 | 4 | 1 | 2 | 2 | |||
| loadScripts | 1049 | 897 | 1940 | 136 | 1096 | 1229 | |||
| setupStore | 12 | 4 | 79 | 10 | 10 | 34 | |||
| numNetworkReqs | 15 | 6 | 80 | 21 | 7 | 78 | |||
| Browserify | Power User Home | uiStartup | 2636 | 1590 | 3918 | 548 | 3063 | 3427 | |
| load | 1628 | 1001 | 2487 | 468 | 2059 | 2397 | |||
| domContentLoaded | 1628 | 1001 | 2487 | 468 | 2058 | 2396 | |||
| domInteractive | 145 | 32 | 1116 | 242 | 94 | 937 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 157 | 26 | 1167 | 139 | 215 | 310 | |||
| firstReactRender | 58 | 36 | 106 | 14 | 63 | 90 | |||
| getState | 159 | 58 | 1000 | 129 | 165 | 263 | |||
| initialActions | 4 | 0 | 50 | 8 | 2 | 29 | |||
| loadScripts | 1555 | 972 | 2430 | 438 | 1944 | 2194 | |||
| setupStore | 51 | 4 | 927 | 111 | 43 | 240 | |||
| numNetworkReqs | 75 | 53 | 136 | 22 | 81 | 125 | |||
| Webpack | Standard Home | uiStartup | 1610 | 1225 | 3009 | 216 | 1698 | 1947 | |
| load | 1314 | 1107 | 2599 | 161 | 1355 | 1503 | |||
| domContentLoaded | 1314 | 1106 | 2599 | 161 | 1355 | 1503 | |||
| domInteractive | 77 | 28 | 178 | 34 | 96 | 133 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 55 | 18 | 168 | 36 | 60 | 139 | |||
| firstReactRender | 45 | 32 | 109 | 14 | 47 | 88 | |||
| getState | 24 | 7 | 204 | 42 | 14 | 168 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1286 | 1090 | 2579 | 157 | 1329 | 1440 | |||
| setupStore | 21 | 6 | 244 | 33 | 17 | 85 | |||
| numNetworkReqs | 15 | 6 | 85 | 21 | 8 | 77 | |||
| Webpack | Power User Home | uiStartup | 2652 | 1735 | 3872 | 532 | 3062 | 3375 | |
| load | 1877 | 1114 | 2789 | 498 | 2350 | 2530 | |||
| domContentLoaded | 1877 | 1113 | 2789 | 498 | 2350 | 2529 | |||
| domInteractive | 219 | 29 | 1141 | 327 | 231 | 980 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 131 | 26 | 980 | 120 | 193 | 290 | |||
| firstReactRender | 55 | 38 | 106 | 11 | 61 | 76 | |||
| getState | 141 | 67 | 994 | 97 | 159 | 240 | |||
| initialActions | 2 | 0 | 8 | 2 | 2 | 7 | |||
| loadScripts | 1814 | 1097 | 2765 | 472 | 2242 | 2499 | |||
| setupStore | 33 | 5 | 417 | 55 | 36 | 146 | |||
| numNetworkReqs | 75 | 57 | 135 | 23 | 70 | 128 |
📊 Page Load Benchmark Results
Current Commit: 91aec91 | Date: 12/11/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.02s (±37ms) 🟡 | historical mean value: 1.03s ⬇️ (historical data)
- domContentLoaded-> current mean value: 710ms (±35ms) 🟢 | historical mean value: 718ms ⬇️ (historical data)
- firstContentfulPaint-> current mean value: 74ms (±11ms) 🟢 | historical mean value: 76ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.02s | 37ms | 995ms | 1.30s | 1.05s | 1.30s |
| domContentLoaded | 710ms | 35ms | 688ms | 975ms | 738ms | 975ms |
| firstPaint | 74ms | 11ms | 60ms | 160ms | 84ms | 160ms |
| firstContentfulPaint | 74ms | 11ms | 60ms | 160ms | 84ms | 160ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚀 Bundle size reduced!]
- background: -150.88 KiB (-2.86%)
- ui: 12.98 KiB (0.17%)
- common: 1.96 KiB (0.02%)
Builds ready [2b85665]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1306 ± 131 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1306 | 1075 | 2023 | 131 | 1371 | 1513 |
| load | 1057 | 869 | 1344 | 90 | 1111 | 1211 | |||
| domContentLoaded | 1050 | 863 | 1331 | 89 | 1106 | 1207 | |||
| domInteractive | 27 | 14 | 115 | 20 | 23 | 83 | |||
| firstPaint | 532 | 77 | 1397 | 399 | 1013 | 1150 | |||
| backgroundConnect | 221 | 196 | 307 | 16 | 227 | 253 | |||
| firstReactRender | 47 | 33 | 118 | 16 | 50 | 84 | |||
| getState | 40 | 18 | 130 | 22 | 45 | 100 | |||
| initialActions | 1 | 0 | 5 | 1 | 1 | 2 | |||
| loadScripts | 836 | 660 | 1095 | 86 | 885 | 998 | |||
| setupStore | 13 | 5 | 55 | 7 | 14 | 27 | |||
| numNetworkReqs | 13 | 6 | 80 | 19 | 6 | 67 | |||
| Browserify | Power User Home | uiStartup | 1924 | 1584 | 2400 | 156 | 2004 | 2221 | |
| load | 1078 | 903 | 1395 | 123 | 1186 | 1291 | |||
| domContentLoaded | 1069 | 896 | 1385 | 122 | 1174 | 1279 | |||
| domInteractive | 31 | 17 | 141 | 25 | 26 | 101 | |||
| firstPaint | 613 | 99 | 1360 | 426 | 1040 | 1235 | |||
| backgroundConnect | 252 | 200 | 711 | 96 | 242 | 526 | |||
| firstReactRender | 47 | 39 | 78 | 7 | 49 | 60 | |||
| getState | 200 | 143 | 714 | 81 | 202 | 280 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 2 | |||
| loadScripts | 854 | 692 | 1177 | 120 | 949 | 1050 | |||
| setupStore | 17 | 7 | 47 | 9 | 16 | 37 | |||
| numNetworkReqs | 70 | 58 | 141 | 18 | 68 | 121 | |||
| Webpack | Standard Home | uiStartup | 814 | 673 | 1532 | 107 | 867 | 976 | |
| load | 656 | 564 | 891 | 77 | 707 | 812 | |||
| domContentLoaded | 650 | 559 | 883 | 76 | 703 | 806 | |||
| domInteractive | 26 | 16 | 103 | 19 | 22 | 82 | |||
| firstPaint | 241 | 81 | 812 | 180 | 226 | 700 | |||
| backgroundConnect | 10 | 5 | 36 | 5 | 11 | 18 | |||
| firstReactRender | 50 | 32 | 184 | 27 | 54 | 110 | |||
| getState | 28 | 13 | 83 | 12 | 36 | 46 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 2 | |||
| loadScripts | 647 | 557 | 881 | 75 | 701 | 803 | |||
| setupStore | 11 | 6 | 35 | 5 | 13 | 20 | |||
| numNetworkReqs | 14 | 6 | 79 | 20 | 6 | 74 | |||
| Webpack | Power User Home | uiStartup | 1413 | 1086 | 1868 | 195 | 1557 | 1777 | |
| load | 734 | 592 | 996 | 104 | 835 | 917 | |||
| domContentLoaded | 727 | 587 | 990 | 103 | 827 | 908 | |||
| domInteractive | 30 | 16 | 154 | 26 | 25 | 102 | |||
| firstPaint | 275 | 95 | 840 | 187 | 255 | 735 | |||
| backgroundConnect | 84 | 8 | 662 | 164 | 70 | 564 | |||
| firstReactRender | 49 | 38 | 70 | 6 | 51 | 64 | |||
| getState | 183 | 136 | 706 | 62 | 185 | 250 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 1 | |||
| loadScripts | 723 | 584 | 980 | 102 | 822 | 903 | |||
| setupStore | 15 | 6 | 48 | 9 | 14 | 34 | |||
| numNetworkReqs | 72 | 56 | 210 | 27 | 67 | 134 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1332 | 1091 | 2393 | 233 | 1438 | 1812 |
| load | 1080 | 890 | 1928 | 171 | 1127 | 1270 | |||
| domContentLoaded | 1079 | 890 | 1927 | 171 | 1127 | 1269 | |||
| domInteractive | 73 | 32 | 898 | 120 | 78 | 133 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 54 | 21 | 374 | 51 | 54 | 173 | |||
| firstReactRender | 37 | 31 | 58 | 7 | 39 | 56 | |||
| getState | 11 | 7 | 44 | 6 | 11 | 23 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 2 | |||
| loadScripts | 1053 | 875 | 1861 | 164 | 1100 | 1236 | |||
| setupStore | 17 | 5 | 196 | 25 | 13 | 74 | |||
| numNetworkReqs | 15 | 6 | 89 | 21 | 8 | 76 | |||
| Browserify | Power User Home | uiStartup | 2595 | 1667 | 3697 | 468 | 2947 | 3202 | |
| load | 1588 | 983 | 2695 | 466 | 2048 | 2213 | |||
| domContentLoaded | 1588 | 982 | 2695 | 466 | 2047 | 2213 | |||
| domInteractive | 123 | 35 | 981 | 190 | 96 | 785 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 225 | 23 | 1038 | 263 | 218 | 935 | |||
| firstReactRender | 59 | 38 | 172 | 18 | 63 | 87 | |||
| getState | 133 | 67 | 1170 | 111 | 145 | 213 | |||
| initialActions | 4 | 1 | 42 | 8 | 3 | 22 | |||
| loadScripts | 1476 | 968 | 2501 | 429 | 1903 | 2110 | |||
| setupStore | 63 | 6 | 1000 | 126 | 45 | 312 | |||
| numNetworkReqs | 74 | 52 | 146 | 23 | 69 | 130 | |||
| Webpack | Standard Home | uiStartup | 1529 | 1305 | 2026 | 149 | 1588 | 1842 | |
| load | 1269 | 1115 | 1578 | 99 | 1321 | 1473 | |||
| domContentLoaded | 1268 | 1114 | 1578 | 99 | 1321 | 1472 | |||
| domInteractive | 76 | 26 | 246 | 41 | 106 | 142 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 51 | 17 | 197 | 34 | 57 | 126 | |||
| firstReactRender | 41 | 32 | 102 | 10 | 45 | 55 | |||
| getState | 14 | 7 | 111 | 13 | 13 | 34 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1240 | 1091 | 1555 | 96 | 1295 | 1447 | |||
| setupStore | 15 | 6 | 139 | 18 | 13 | 48 | |||
| numNetworkReqs | 15 | 6 | 88 | 21 | 8 | 76 | |||
| Webpack | Power User Home | uiStartup | 2692 | 1839 | 4822 | 543 | 3031 | 3384 | |
| load | 1903 | 1164 | 3979 | 524 | 2321 | 2536 | |||
| domContentLoaded | 1902 | 1164 | 3978 | 525 | 2320 | 2536 | |||
| domInteractive | 243 | 31 | 1150 | 344 | 244 | 990 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 169 | 27 | 1112 | 208 | 200 | 893 | |||
| firstReactRender | 55 | 36 | 128 | 12 | 61 | 71 | |||
| getState | 133 | 74 | 344 | 57 | 165 | 240 | |||
| initialActions | 3 | 0 | 46 | 7 | 2 | 7 | |||
| loadScripts | 1816 | 1141 | 3874 | 504 | 2229 | 2481 | |||
| setupStore | 34 | 5 | 278 | 52 | 33 | 149 | |||
| numNetworkReqs | 75 | 48 | 139 | 24 | 71 | 130 |
📊 Page Load Benchmark Results
Current Commit: 2b85665 | Date: 12/11/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.02s (±37ms) 🟡 | historical mean value: 1.03s ⬇️ (historical data)
- domContentLoaded-> current mean value: 713ms (±35ms) 🟢 | historical mean value: 719ms ⬇️ (historical data)
- firstContentfulPaint-> current mean value: 76ms (±12ms) 🟢 | historical mean value: 76ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.02s | 37ms | 1.00s | 1.31s | 1.04s | 1.31s |
| domContentLoaded | 713ms | 35ms | 693ms | 976ms | 730ms | 976ms |
| firstPaint | 76ms | 12ms | 60ms | 180ms | 88ms | 180ms |
| firstContentfulPaint | 76ms | 12ms | 60ms | 180ms | 88ms | 180ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚀 Bundle size reduced!]
- background: -150.88 KiB (-2.86%)
- ui: 11.18 KiB (0.14%)
- common: 1.96 KiB (0.02%)
Builds ready [8bcf82c]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1263 ± 106 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1263 | 1027 | 1558 | 106 | 1342 | 1448 |
| load | 1032 | 842 | 1308 | 83 | 1084 | 1187 | |||
| domContentLoaded | 1024 | 839 | 1301 | 82 | 1076 | 1181 | |||
| domInteractive | 25 | 15 | 104 | 18 | 22 | 79 | |||
| firstPaint | 535 | 93 | 1236 | 410 | 1027 | 1147 | |||
| backgroundConnect | 215 | 192 | 267 | 13 | 224 | 234 | |||
| firstReactRender | 42 | 31 | 91 | 10 | 46 | 61 | |||
| getState | 38 | 17 | 203 | 25 | 39 | 81 | |||
| initialActions | 1 | 0 | 6 | 1 | 1 | 2 | |||
| loadScripts | 817 | 651 | 1080 | 78 | 864 | 935 | |||
| setupStore | 11 | 6 | 31 | 4 | 11 | 19 | |||
| numNetworkReqs | 13 | 6 | 79 | 19 | 6 | 71 | |||
| Browserify | Power User Home | uiStartup | 1920 | 1584 | 2353 | 147 | 1989 | 2189 | |
| load | 1085 | 886 | 1397 | 121 | 1179 | 1277 | |||
| domContentLoaded | 1075 | 880 | 1391 | 120 | 1170 | 1270 | |||
| domInteractive | 30 | 17 | 143 | 25 | 27 | 97 | |||
| firstPaint | 551 | 157 | 1340 | 413 | 1052 | 1192 | |||
| backgroundConnect | 250 | 203 | 679 | 92 | 239 | 544 | |||
| firstReactRender | 49 | 39 | 154 | 14 | 49 | 75 | |||
| getState | 208 | 145 | 724 | 94 | 211 | 295 | |||
| initialActions | 1 | 0 | 6 | 1 | 1 | 2 | |||
| loadScripts | 861 | 677 | 1160 | 118 | 950 | 1051 | |||
| setupStore | 16 | 7 | 41 | 7 | 16 | 34 | |||
| numNetworkReqs | 71 | 58 | 209 | 22 | 67 | 123 | |||
| Webpack | Standard Home | uiStartup | 823 | 682 | 1048 | 76 | 875 | 973 | |
| load | 666 | 575 | 840 | 73 | 723 | 815 | |||
| domContentLoaded | 660 | 569 | 832 | 73 | 717 | 809 | |||
| domInteractive | 26 | 16 | 102 | 20 | 22 | 87 | |||
| firstPaint | 249 | 93 | 836 | 181 | 221 | 718 | |||
| backgroundConnect | 11 | 6 | 52 | 6 | 12 | 24 | |||
| firstReactRender | 53 | 32 | 147 | 27 | 62 | 128 | |||
| getState | 30 | 15 | 94 | 13 | 38 | 49 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 1 | |||
| loadScripts | 657 | 564 | 824 | 72 | 714 | 801 | |||
| setupStore | 12 | 6 | 41 | 6 | 15 | 29 | |||
| numNetworkReqs | 13 | 6 | 80 | 20 | 6 | 72 | |||
| Webpack | Power User Home | uiStartup | 1405 | 1100 | 2025 | 201 | 1507 | 1785 | |
| load | 731 | 601 | 1154 | 106 | 807 | 915 | |||
| domContentLoaded | 723 | 595 | 1147 | 105 | 796 | 907 | |||
| domInteractive | 31 | 17 | 167 | 26 | 26 | 106 | |||
| firstPaint | 311 | 92 | 927 | 247 | 342 | 867 | |||
| backgroundConnect | 93 | 8 | 715 | 174 | 66 | 602 | |||
| firstReactRender | 50 | 39 | 99 | 7 | 52 | 60 | |||
| getState | 184 | 141 | 687 | 61 | 186 | 252 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 1 | |||
| loadScripts | 720 | 593 | 1136 | 104 | 794 | 904 | |||
| setupStore | 17 | 7 | 47 | 10 | 16 | 37 | |||
| numNetworkReqs | 72 | 56 | 231 | 29 | 67 | 131 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1356 | 1077 | 2367 | 203 | 1455 | 1740 |
| load | 1081 | 918 | 1897 | 131 | 1139 | 1280 | |||
| domContentLoaded | 1081 | 917 | 1897 | 131 | 1139 | 1280 | |||
| domInteractive | 73 | 31 | 837 | 87 | 85 | 156 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 56 | 22 | 210 | 44 | 70 | 181 | |||
| firstReactRender | 38 | 30 | 70 | 8 | 39 | 56 | |||
| getState | 13 | 6 | 98 | 12 | 14 | 26 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 2 | |||
| loadScripts | 1051 | 901 | 1836 | 121 | 1110 | 1244 | |||
| setupStore | 22 | 5 | 445 | 50 | 16 | 69 | |||
| numNetworkReqs | 16 | 6 | 87 | 22 | 8 | 77 | |||
| Browserify | Power User Home | uiStartup | 2743 | 1743 | 4524 | 608 | 3198 | 3550 | |
| load | 1758 | 1039 | 3568 | 545 | 2202 | 2475 | |||
| domContentLoaded | 1757 | 1039 | 3568 | 545 | 2201 | 2474 | |||
| domInteractive | 232 | 34 | 2020 | 361 | 252 | 996 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 191 | 28 | 1117 | 218 | 199 | 920 | |||
| firstReactRender | 57 | 41 | 107 | 11 | 63 | 76 | |||
| getState | 150 | 80 | 1011 | 102 | 169 | 257 | |||
| initialActions | 2 | 1 | 9 | 1 | 2 | 4 | |||
| loadScripts | 1668 | 1021 | 3545 | 521 | 2125 | 2446 | |||
| setupStore | 56 | 5 | 941 | 116 | 61 | 333 | |||
| numNetworkReqs | 75 | 55 | 142 | 25 | 68 | 128 | |||
| Webpack | Standard Home | uiStartup | 1550 | 1304 | 2086 | 153 | 1649 | 1859 | |
| load | 1284 | 1070 | 1638 | 119 | 1334 | 1532 | |||
| domContentLoaded | 1284 | 1070 | 1638 | 120 | 1334 | 1532 | |||
| domInteractive | 71 | 28 | 354 | 50 | 98 | 141 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 59 | 21 | 205 | 41 | 76 | 151 | |||
| firstReactRender | 43 | 32 | 95 | 12 | 43 | 82 | |||
| getState | 14 | 7 | 137 | 17 | 13 | 31 | |||
| initialActions | 1 | 0 | 2 | 0 | 1 | 2 | |||
| loadScripts | 1252 | 1052 | 1601 | 111 | 1298 | 1478 | |||
| setupStore | 14 | 5 | 86 | 13 | 12 | 47 | |||
| numNetworkReqs | 15 | 6 | 84 | 21 | 8 | 77 | |||
| Webpack | Power User Home | uiStartup | 2607 | 1782 | 3872 | 511 | 3014 | 3361 | |
| load | 1850 | 1177 | 2645 | 468 | 2275 | 2518 | |||
| domContentLoaded | 1850 | 1177 | 2644 | 468 | 2274 | 2517 | |||
| domInteractive | 261 | 28 | 1101 | 366 | 235 | 968 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 116 | 25 | 411 | 79 | 179 | 235 | |||
| firstReactRender | 56 | 37 | 128 | 16 | 60 | 101 | |||
| getState | 131 | 78 | 448 | 52 | 149 | 217 | |||
| initialActions | 2 | 1 | 31 | 3 | 2 | 7 | |||
| loadScripts | 1790 | 1137 | 2504 | 441 | 2181 | 2462 | |||
| setupStore | 35 | 4 | 1047 | 107 | 25 | 85 | |||
| numNetworkReqs | 71 | 49 | 129 | 20 | 73 | 117 |
📊 Page Load Benchmark Results
Current Commit: 8bcf82c | Date: 12/11/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.07s (±41ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
- domContentLoaded-> current mean value: 745ms (±38ms) 🟢 | historical mean value: 722ms ⬆️ (historical data)
- firstContentfulPaint-> current mean value: 79ms (±9ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.07s | 41ms | 1.04s | 1.36s | 1.10s | 1.36s |
| domContentLoaded | 745ms | 38ms | 717ms | 1.02s | 778ms | 1.02s |
| firstPaint | 79ms | 9ms | 60ms | 148ms | 88ms | 148ms |
| firstContentfulPaint | 79ms | 9ms | 60ms | 148ms | 88ms | 148ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚀 Bundle size reduced!]
- background: -150.88 KiB (-2.86%)
- ui: 11.18 KiB (0.14%)
- common: 1.96 KiB (0.02%)
Builds ready [6ea7ed8]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1289 ± 95 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Standard Home | uiStartup | 1289 | 1040 | 1574 | 95 | 1350 | 1437 |
| load | 1075 | 881 | 1318 | 86 | 1128 | 1185 | |||
| domContentLoaded | 1068 | 876 | 1309 | 86 | 1123 | 1179 | |||
| domInteractive | 26 | 16 | 102 | 21 | 22 | 91 | |||
| firstPaint | 540 | 84 | 1315 | 417 | 1069 | 1159 | |||
| backgroundConnect | 216 | 197 | 278 | 12 | 220 | 237 | |||
| firstReactRender | 47 | 32 | 101 | 13 | 49 | 73 | |||
| getState | 38 | 19 | 78 | 11 | 42 | 61 | |||
| initialActions | 1 | 0 | 6 | 1 | 1 | 4 | |||
| loadScripts | 859 | 674 | 1097 | 85 | 918 | 974 | |||
| setupStore | 12 | 7 | 33 | 4 | 14 | 19 | |||
| numNetworkReqs | 17 | 11 | 76 | 17 | 11 | 66 | |||
| Browserify | Power User Home | uiStartup | 1928 | 1576 | 2296 | 156 | 2015 | 2261 | |
| load | 1084 | 892 | 1409 | 125 | 1182 | 1298 | |||
| domContentLoaded | 1073 | 883 | 1396 | 125 | 1166 | 1289 | |||
| domInteractive | 31 | 17 | 152 | 24 | 28 | 96 | |||
| firstPaint | 546 | 103 | 1414 | 404 | 1014 | 1185 | |||
| backgroundConnect | 264 | 202 | 789 | 121 | 236 | 641 | |||
| firstReactRender | 50 | 41 | 79 | 6 | 51 | 60 | |||
| getState | 202 | 148 | 763 | 86 | 203 | 283 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 2 | |||
| loadScripts | 861 | 691 | 1182 | 123 | 952 | 1084 | |||
| setupStore | 16 | 7 | 49 | 8 | 15 | 37 | |||
| numNetworkReqs | 67 | 54 | 130 | 17 | 64 | 115 | |||
| Webpack | Standard Home | uiStartup | 854 | 682 | 1047 | 86 | 913 | 1008 | |
| load | 673 | 574 | 912 | 84 | 747 | 832 | |||
| domContentLoaded | 668 | 567 | 906 | 84 | 740 | 824 | |||
| domInteractive | 26 | 16 | 90 | 19 | 22 | 84 | |||
| firstPaint | 229 | 88 | 757 | 167 | 215 | 665 | |||
| backgroundConnect | 21 | 6 | 131 | 22 | 29 | 83 | |||
| firstReactRender | 57 | 34 | 250 | 33 | 60 | 120 | |||
| getState | 33 | 15 | 139 | 19 | 41 | 55 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 2 | |||
| loadScripts | 665 | 565 | 904 | 83 | 738 | 821 | |||
| setupStore | 12 | 7 | 43 | 7 | 14 | 28 | |||
| numNetworkReqs | 18 | 11 | 78 | 18 | 11 | 72 | |||
| Webpack | Power User Home | uiStartup | 1414 | 1082 | 1891 | 189 | 1547 | 1764 | |
| load | 725 | 594 | 1030 | 106 | 802 | 940 | |||
| domContentLoaded | 718 | 586 | 1021 | 105 | 793 | 930 | |||
| domInteractive | 31 | 16 | 152 | 26 | 27 | 101 | |||
| firstPaint | 313 | 96 | 939 | 233 | 300 | 870 | |||
| backgroundConnect | 96 | 7 | 662 | 168 | 105 | 635 | |||
| firstReactRender | 52 | 42 | 195 | 15 | 52 | 60 | |||
| getState | 180 | 141 | 314 | 31 | 186 | 243 | |||
| initialActions | 1 | 0 | 4 | 1 | 1 | 2 | |||
| loadScripts | 715 | 584 | 1018 | 104 | 791 | 921 | |||
| setupStore | 14 | 7 | 37 | 7 | 13 | 35 | |||
| numNetworkReqs | 67 | 52 | 210 | 23 | 62 | 125 | |||
| Firefox | Browserify | Standard Home | uiStartup | 1328 | 1059 | 1783 | 162 | 1443 | 1676 |
| load | 1042 | 903 | 1544 | 105 | 1098 | 1222 | |||
| domContentLoaded | 1041 | 899 | 1544 | 105 | 1098 | 1221 | |||
| domInteractive | 59 | 29 | 149 | 30 | 83 | 112 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 51 | 20 | 184 | 43 | 65 | 171 | |||
| firstReactRender | 38 | 30 | 68 | 8 | 42 | 53 | |||
| getState | 13 | 6 | 194 | 22 | 11 | 22 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 2 | |||
| loadScripts | 1014 | 890 | 1519 | 97 | 1068 | 1190 | |||
| setupStore | 15 | 6 | 206 | 22 | 11 | 42 | |||
| numNetworkReqs | 19 | 10 | 80 | 19 | 13 | 75 | |||
| Browserify | Power User Home | uiStartup | 2673 | 1735 | 3882 | 572 | 3126 | 3520 | |
| load | 1689 | 941 | 3065 | 521 | 2148 | 2525 | |||
| domContentLoaded | 1688 | 941 | 3065 | 521 | 2147 | 2525 | |||
| domInteractive | 122 | 30 | 1819 | 235 | 94 | 367 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 198 | 21 | 1160 | 239 | 210 | 1020 | |||
| firstReactRender | 58 | 34 | 180 | 18 | 65 | 79 | |||
| getState | 134 | 65 | 345 | 53 | 161 | 239 | |||
| initialActions | 2 | 0 | 43 | 4 | 2 | 3 | |||
| loadScripts | 1584 | 927 | 3038 | 486 | 2005 | 2372 | |||
| setupStore | 38 | 4 | 372 | 58 | 40 | 163 | |||
| numNetworkReqs | 70 | 54 | 136 | 20 | 84 | 113 | |||
| Webpack | Standard Home | uiStartup | 1616 | 1292 | 2065 | 175 | 1695 | 1976 | |
| load | 1318 | 1105 | 1636 | 118 | 1398 | 1544 | |||
| domContentLoaded | 1317 | 1105 | 1636 | 119 | 1398 | 1544 | |||
| domInteractive | 72 | 27 | 253 | 42 | 93 | 140 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 63 | 20 | 202 | 41 | 79 | 151 | |||
| firstReactRender | 44 | 33 | 114 | 11 | 48 | 62 | |||
| getState | 19 | 7 | 167 | 26 | 15 | 101 | |||
| initialActions | 1 | 0 | 3 | 1 | 2 | 2 | |||
| loadScripts | 1285 | 1092 | 1557 | 108 | 1345 | 1519 | |||
| setupStore | 16 | 6 | 136 | 18 | 16 | 61 | |||
| numNetworkReqs | 20 | 9 | 87 | 20 | 14 | 80 | |||
| Webpack | Power User Home | uiStartup | 2773 | 1862 | 3743 | 533 | 3215 | 3417 | |
| load | 1876 | 1206 | 2750 | 488 | 2358 | 2517 | |||
| domContentLoaded | 1876 | 1204 | 2750 | 488 | 2358 | 2516 | |||
| domInteractive | 166 | 28 | 1112 | 271 | 91 | 1006 | |||
| firstPaint | - | - | - | - | - | - | |||
| backgroundConnect | 178 | 25 | 1175 | 222 | 204 | 925 | |||
| firstReactRender | 57 | 36 | 110 | 13 | 62 | 93 | |||
| getState | 160 | 81 | 1368 | 155 | 176 | 251 | |||
| initialActions | 2 | 0 | 7 | 1 | 2 | 5 | |||
| loadScripts | 1797 | 1185 | 2639 | 464 | 2271 | 2441 | |||
| setupStore | 57 | 4 | 1040 | 151 | 41 | 256 | |||
| numNetworkReqs | 67 | 45 | 150 | 21 | 64 | 114 |
📊 Page Load Benchmark Results
Current Commit: 6ea7ed8 | Date: 12/12/2025
📄 Localhost MetaMask Test Dapp
Samples: 100
Summary
- pageLoadTime-> current mean value: 1.03s (±38ms) 🟡 | historical mean value: 1.03s ⬇️ (historical data)
- domContentLoaded-> current mean value: 719ms (±36ms) 🟢 | historical mean value: 720ms ⬇️ (historical data)
- firstContentfulPaint-> current mean value: 75ms (±10ms) 🟢 | historical mean value: 76ms ⬇️ (historical data)
📈 Detailed Results
| Metric | Mean | Std Dev | Min | Max | P95 | P99 |
|---|---|---|---|---|---|---|
| pageLoadTime | 1.03s | 38ms | 1.01s | 1.31s | 1.07s | 1.31s |
| domContentLoaded | 719ms | 36ms | 699ms | 986ms | 748ms | 986ms |
| firstPaint | 75ms | 10ms | 56ms | 152ms | 84ms | 152ms |
| firstContentfulPaint | 75ms | 10ms | 56ms | 152ms | 84ms | 152ms |
| largestContentfulPaint | 0ms | 0ms | 0ms | 0ms | 0ms | 0ms |
Bundle size diffs [🚀 Bundle size reduced!]
- background: -151.32 KiB (-2.87%)
- ui: 15.76 KiB (0.2%)
- common: 1.37 KiB (0.02%)