test: EIP-5792 methods on Multichain API
Description
We want to ensure there is support for calling EIP-5792 methods via the Multichain API. Adds E2E tests for it.
Related issues
Fixes https://github.com/MetaMask/MetaMask-planning/issues/4784
Manual testing steps
Screenshots/Recordings
Before
After
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.
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 update-policies
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
| Diff | Package | Supply Chain Security |
Vulnerability | Quality | Maintenance | License |
|---|
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
✨ Files requiring CODEOWNER review ✨
🧩 @MetaMask/extension-devs (3 files, +3 -3)
- 📁 lavamoat/
- 📁 browserify/
- 📁 beta/
- 📄
policy.json+1 -1
- 📄
- 📁 flask/
- 📄
policy.json+1 -1
- 📄
- 📁 main/
- 📄
policy.json+1 -1
- 📄
- 📁 beta/
- 📁 browserify/
📜 @MetaMask/policy-reviewers (3 files, +3 -3)
[!TIP]
Follow the policy review process outlined in the LavaMoat Policy Review Process doc before expecting an approval from Policy Reviewers.
- 📁 lavamoat/
- 📁 browserify/
- 📁 beta/
- 📄
policy.json+1 -1
- 📄
- 📁 flask/
- 📄
policy.json+1 -1
- 📄
- 📁 main/
- 📄
policy.json+1 -1
- 📄
- 📁 beta/
- 📁 browserify/
🔗 @MetaMask/supply-chain (3 files, +3 -3)
- 📁 lavamoat/
- 📁 browserify/
- 📁 beta/
- 📄
policy.json+1 -1
- 📄
- 📁 flask/
- 📄
policy.json+1 -1
- 📄
- 📁 main/
- 📄
policy.json+1 -1
- 📄
- 📁 beta/
- 📁 browserify/
@metamaskbot update-policies
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
Builds ready [329f6ba]
- builds: chrome, firefox
- builds (beta): chrome
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- build viz: Build System
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all CircleCI artifacts
UI Startup Metrics (1187 ± 64 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Home | uiStartup | 1187 | 1070 | 1593 | 64 | 1213 | 1278 |
| load | 1021 | 899 | 1436 | 62 | 1046 | 1104 | |||
| domContentLoaded | 1013 | 892 | 1427 | 63 | 1041 | 1096 | |||
| domInteractive | 16 | 13 | 34 | 3 | 16 | 24 | |||
| firstPaint | 797 | 138 | 1437 | 373 | 1038 | 1092 | |||
| backgroundConnect | 9 | 4 | 33 | 6 | 8 | 25 | |||
| firstReactRender | 20 | 15 | 47 | 6 | 20 | 35 | |||
| getState | 14 | 5 | 52 | 8 | 20 | 30 | |||
| initialActions | 0 | 0 | 1 | 0 | 0 | 1 | |||
| loadScripts | 775 | 652 | 1176 | 62 | 801 | 851 | |||
| setupStore | 8 | 4 | 33 | 4 | 8 | 17 | |||
| Webpack | Home | uiStartup | 2162 | 1732 | 2753 | 218 | 2300 | 2508 | |
| load | 1668 | 1354 | 1951 | 154 | 1765 | 1896 | |||
| domContentLoaded | 1660 | 1350 | 1938 | 152 | 1760 | 1883 | |||
| domInteractive | 16 | 12 | 58 | 10 | 13 | 46 | |||
| firstPaint | 155 | 68 | 350 | 51 | 171 | 265 | |||
| backgroundConnect | 27 | 10 | 249 | 26 | 29 | 51 | |||
| firstReactRender | 169 | 42 | 375 | 116 | 309 | 332 | |||
| getState | 19 | 5 | 303 | 41 | 14 | 39 | |||
| initialActions | 3 | 1 | 8 | 1 | 4 | 5 | |||
| loadScripts | 1656 | 1348 | 1925 | 151 | 1756 | 1871 | |||
| setupStore | 38 | 6 | 304 | 70 | 23 | 279 | |||
| Firefox | Browserify | Home | uiStartup | 1312 | 1134 | 1771 | 134 | 1333 | 1623 |
| load | 1160 | 992 | 1568 | 118 | 1200 | 1437 | |||
| domContentLoaded | 1160 | 992 | 1568 | 118 | 1199 | 1437 | |||
| domInteractive | 95 | 39 | 265 | 31 | 102 | 158 | |||
| firstPaint | NaN | NaN | NaN | NaN | NaN | NaN | |||
| backgroundConnect | 19 | 13 | 58 | 8 | 20 | 40 | |||
| firstReactRender | 23 | 20 | 50 | 4 | 23 | 28 | |||
| getState | 11 | 4 | 203 | 26 | 8 | 13 | |||
| initialActions | 0 | 0 | 5 | 1 | 0 | 1 | |||
| loadScripts | 1144 | 979 | 1554 | 117 | 1185 | 1420 | |||
| setupStore | 9 | 4 | 339 | 33 | 6 | 11 | |||
| Webpack | Home | uiStartup | 1588 | 1372 | 2344 | 165 | 1664 | 1905 | |
| load | 1368 | 1186 | 1934 | 143 | 1441 | 1676 | |||
| domContentLoaded | 1368 | 1186 | 1934 | 143 | 1441 | 1676 | |||
| domInteractive | 80 | 56 | 256 | 23 | 86 | 124 | |||
| firstPaint | NaN | NaN | NaN | NaN | NaN | NaN | |||
| backgroundConnect | 24 | 15 | 71 | 10 | 24 | 45 | |||
| firstReactRender | 39 | 26 | 54 | 5 | 42 | 48 | |||
| getState | 14 | 5 | 237 | 32 | 10 | 30 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 1 | |||
| loadScripts | 1348 | 1172 | 1911 | 143 | 1421 | 1657 | |||
| setupStore | 9 | 5 | 93 | 10 | 8 | 22 |
Benchmark value 39 exceeds gate value 32 for chrome webpack home mean setupStore
Benchmark value 2508 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 279 exceeds gate value 65 for chrome webpack home p95 setupStore
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 39 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 1676 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1676 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 1657 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Sum of mean exceeds: 9ms | Sum of p95 exceeds: 334ms
Sum of all benchmark exceeds: 343ms
@metamaskbot update-policies
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
Builds ready [93b1c7a]
- builds: chrome, firefox
- builds (beta): chrome
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- build viz: Build System
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all CircleCI artifacts
UI Startup Metrics (1189 ± 59 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Home | uiStartup | 1189 | 1075 | 1409 | 59 | 1229 | 1284 |
| load | 1026 | 919 | 1186 | 55 | 1072 | 1107 | |||
| domContentLoaded | 1019 | 915 | 1182 | 56 | 1064 | 1100 | |||
| domInteractive | 16 | 13 | 55 | 5 | 15 | 24 | |||
| firstPaint | 774 | 91 | 1188 | 387 | 1045 | 1105 | |||
| backgroundConnect | 8 | 4 | 35 | 6 | 8 | 26 | |||
| firstReactRender | 21 | 15 | 54 | 7 | 21 | 39 | |||
| getState | 12 | 5 | 27 | 7 | 18 | 26 | |||
| initialActions | 0 | 0 | 1 | 0 | 0 | 1 | |||
| loadScripts | 782 | 681 | 930 | 55 | 832 | 859 | |||
| setupStore | 8 | 4 | 31 | 4 | 8 | 13 | |||
| Webpack | Home | uiStartup | 2287 | 1712 | 2716 | 197 | 2413 | 2611 | |
| load | 1773 | 1351 | 2206 | 168 | 1889 | 2046 | |||
| domContentLoaded | 1763 | 1347 | 2200 | 164 | 1884 | 2012 | |||
| domInteractive | 16 | 12 | 54 | 8 | 14 | 41 | |||
| firstPaint | 170 | 68 | 687 | 77 | 181 | 314 | |||
| backgroundConnect | 36 | 11 | 351 | 48 | 37 | 61 | |||
| firstReactRender | 181 | 44 | 365 | 119 | 313 | 352 | |||
| getState | 18 | 5 | 276 | 27 | 20 | 36 | |||
| initialActions | 3 | 1 | 8 | 1 | 4 | 7 | |||
| loadScripts | 1759 | 1345 | 2198 | 163 | 1881 | 2009 | |||
| setupStore | 40 | 7 | 310 | 70 | 28 | 282 | |||
| Firefox | Browserify | Home | uiStartup | 1303 | 1132 | 1820 | 138 | 1337 | 1577 |
| load | 1159 | 987 | 1675 | 134 | 1216 | 1439 | |||
| domContentLoaded | 1159 | 986 | 1675 | 134 | 1216 | 1438 | |||
| domInteractive | 93 | 38 | 177 | 25 | 101 | 156 | |||
| firstPaint | NaN | NaN | NaN | NaN | NaN | NaN | |||
| backgroundConnect | 19 | 13 | 58 | 7 | 20 | 31 | |||
| firstReactRender | 24 | 20 | 56 | 6 | 23 | 33 | |||
| getState | 8 | 4 | 62 | 7 | 8 | 10 | |||
| initialActions | 0 | 0 | 1 | 0 | 0 | 1 | |||
| loadScripts | 1142 | 972 | 1660 | 132 | 1179 | 1414 | |||
| setupStore | 7 | 4 | 71 | 8 | 6 | 11 | |||
| Webpack | Home | uiStartup | 1576 | 1340 | 2108 | 142 | 1683 | 1803 | |
| load | 1370 | 1157 | 1895 | 135 | 1485 | 1607 | |||
| domContentLoaded | 1370 | 1157 | 1894 | 135 | 1484 | 1607 | |||
| domInteractive | 79 | 42 | 146 | 19 | 85 | 127 | |||
| firstPaint | NaN | NaN | NaN | NaN | NaN | NaN | |||
| backgroundConnect | 22 | 15 | 52 | 6 | 23 | 35 | |||
| firstReactRender | 38 | 28 | 51 | 5 | 41 | 45 | |||
| getState | 11 | 5 | 240 | 23 | 9 | 28 | |||
| initialActions | 1 | 0 | 2 | 1 | 1 | 1 | |||
| loadScripts | 1351 | 1141 | 1879 | 136 | 1465 | 1578 | |||
| setupStore | 8 | 5 | 28 | 4 | 8 | 12 |
Benchmark value 26 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 2288 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 1773 exceeds gate value 1711 for chrome webpack home mean load
Benchmark value 1763 exceeds gate value 1704 for chrome webpack home mean domContentLoaded
Benchmark value 1759 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 40 exceeds gate value 32 for chrome webpack home mean setupStore
Benchmark value 2611 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2046 exceeds gate value 2030 for chrome webpack home p95 load
Benchmark value 2012 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 2009 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 282 exceeds gate value 65 for chrome webpack home p95 setupStore
Sum of mean exceeds: 285ms | Sum of p95 exceeds: 444ms
Sum of all benchmark exceeds: 729ms
@metamaskbot update-policies
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
@metamaskbot update-policies
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
Builds ready [e392d53]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- build viz: Build System
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1212 ± 63 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Home | uiStartup | 1212 | 1096 | 1451 | 63 | 1240 | 1351 |
| load | 1054 | 948 | 1266 | 58 | 1075 | 1185 | |||
| domContentLoaded | 1047 | 945 | 1264 | 59 | 1070 | 1179 | |||
| domInteractive | 17 | 14 | 42 | 5 | 16 | 31 | |||
| firstPaint | 809 | 156 | 1216 | 386 | 1072 | 1123 | |||
| backgroundConnect | 8 | 4 | 34 | 5 | 7 | 24 | |||
| firstReactRender | 20 | 17 | 45 | 3 | 20 | 24 | |||
| getState | 13 | 6 | 35 | 7 | 18 | 25 | |||
| initialActions | 0 | 0 | 1 | 0 | 0 | 1 | |||
| loadScripts | 800 | 702 | 1022 | 58 | 823 | 922 | |||
| setupStore | 8 | 5 | 18 | 2 | 8 | 13 | |||
| Webpack | Home | uiStartup | 2060 | 1527 | 2552 | 238 | 2220 | 2419 | |
| load | 1604 | 1174 | 1964 | 192 | 1751 | 1884 | |||
| domContentLoaded | 1598 | 1169 | 1954 | 191 | 1745 | 1881 | |||
| domInteractive | 16 | 11 | 53 | 11 | 13 | 48 | |||
| firstPaint | 158 | 59 | 308 | 53 | 204 | 281 | |||
| backgroundConnect | 20 | 10 | 60 | 7 | 23 | 33 | |||
| firstReactRender | 128 | 46 | 374 | 101 | 109 | 351 | |||
| getState | 13 | 5 | 311 | 30 | 11 | 21 | |||
| initialActions | 9 | 1 | 304 | 42 | 3 | 4 | |||
| loadScripts | 1595 | 1168 | 1942 | 190 | 1742 | 1879 | |||
| setupStore | 43 | 7 | 315 | 87 | 17 | 308 | |||
| Firefox | Browserify | Home | uiStartup | 1298 | 1183 | 1553 | 71 | 1331 | 1445 |
| load | 1158 | 1033 | 1418 | 75 | 1193 | 1305 | |||
| domContentLoaded | 1157 | 1032 | 1417 | 75 | 1192 | 1305 | |||
| domInteractive | 96 | 34 | 185 | 25 | 109 | 133 | |||
| firstPaint | NaN | NaN | NaN | NaN | NaN | NaN | |||
| backgroundConnect | 18 | 12 | 62 | 6 | 19 | 28 | |||
| firstReactRender | 23 | 20 | 50 | 3 | 23 | 28 | |||
| getState | 7 | 4 | 9 | 1 | 7 | 9 | |||
| initialActions | 0 | 0 | 1 | 0 | 0 | 1 | |||
| loadScripts | 1141 | 1020 | 1393 | 73 | 1172 | 1291 | |||
| setupStore | 6 | 4 | 31 | 3 | 6 | 10 | |||
| Webpack | Home | uiStartup | 1530 | 1369 | 1826 | 110 | 1610 | 1756 | |
| load | 1337 | 1181 | 1631 | 114 | 1416 | 1571 | |||
| domContentLoaded | 1337 | 1181 | 1631 | 114 | 1416 | 1570 | |||
| domInteractive | 79 | 53 | 188 | 17 | 85 | 100 | |||
| firstPaint | NaN | NaN | NaN | NaN | NaN | NaN | |||
| backgroundConnect | 21 | 16 | 45 | 5 | 21 | 32 | |||
| firstReactRender | 40 | 34 | 46 | 3 | 43 | 45 | |||
| getState | 8 | 5 | 29 | 4 | 9 | 15 | |||
| initialActions | 0 | 0 | 2 | 1 | 1 | 1 | |||
| loadScripts | 1319 | 1162 | 1614 | 115 | 1399 | 1552 | |||
| setupStore | 7 | 5 | 23 | 2 | 8 | 9 |
Benchmark value 24 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 9 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 43 exceeds gate value 32 for chrome webpack home mean setupStore
Benchmark value 308 exceeds gate value 65 for chrome webpack home p95 setupStore
Benchmark value 41 exceeds gate value 38 for firefox webpack home mean firstReactRender
Sum of mean exceeds: 25ms | Sum of p95 exceeds: 249ms
Sum of all benchmark exceeds: 274ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
- background: -2.41 KiB (-0.05%)
- ui: 2 Bytes (0%)
- common: 4.37 KiB (0.05%)
Builds ready [182eb63]
- builds: chrome, firefox
- builds (beta): chrome, firefox
- builds (flask): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- build viz: Build System
- bundle size: Bundle Size Stats
- user-actions-benchmark: User Actions Stats
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
UI Startup Metrics (1227 ± 68 ms)
| Platform | BuildType | Page | Metric | Mean (ms) | Min (ms) | Max (ms) | Std Dev (ms) | P 75 (ms) | P 95 (ms) |
|---|---|---|---|---|---|---|---|---|---|
| Chrome | Browserify | Home | uiStartup | 1227 | 1119 | 1619 | 68 | 1260 | 1326 |
| load | 1066 | 970 | 1355 | 61 | 1099 | 1168 | |||
| domContentLoaded | 1059 | 953 | 1342 | 62 | 1095 | 1161 | |||
| domInteractive | 17 | 14 | 34 | 4 | 17 | 26 | |||
| firstPaint | 830 | 73 | 1211 | 383 | 1092 | 1148 | |||
| backgroundConnect | 8 | 4 | 28 | 5 | 8 | 23 | |||
| firstReactRender | 20 | 16 | 42 | 4 | 20 | 31 | |||
| getState | 13 | 5 | 32 | 7 | 19 | 26 | |||
| initialActions | 0 | 0 | 1 | 0 | 0 | 1 | |||
| loadScripts | 810 | 711 | 1084 | 62 | 841 | 922 | |||
| setupStore | 8 | 5 | 14 | 2 | 8 | 13 | |||
| Webpack | Home | uiStartup | 2034 | 1592 | 2476 | 213 | 2174 | 2416 | |
| load | 1572 | 1262 | 1889 | 168 | 1701 | 1840 | |||
| domContentLoaded | 1567 | 1257 | 1878 | 167 | 1697 | 1835 | |||
| domInteractive | 15 | 11 | 60 | 10 | 13 | 43 | |||
| firstPaint | 163 | 63 | 643 | 77 | 189 | 301 | |||
| backgroundConnect | 20 | 12 | 48 | 6 | 22 | 31 | |||
| firstReactRender | 125 | 45 | 365 | 98 | 115 | 335 | |||
| getState | 14 | 4 | 368 | 36 | 11 | 22 | |||
| initialActions | 2 | 1 | 5 | 1 | 3 | 4 | |||
| loadScripts | 1564 | 1256 | 1867 | 166 | 1695 | 1826 | |||
| setupStore | 63 | 7 | 318 | 110 | 20 | 311 | |||
| Firefox | Browserify | Home | uiStartup | 1306 | 1150 | 1666 | 77 | 1339 | 1448 |
| load | 1161 | 1026 | 1509 | 76 | 1199 | 1298 | |||
| domContentLoaded | 1161 | 1026 | 1508 | 76 | 1199 | 1298 | |||
| domInteractive | 93 | 35 | 192 | 23 | 102 | 136 | |||
| firstPaint | NaN | NaN | NaN | NaN | NaN | NaN | |||
| backgroundConnect | 20 | 13 | 49 | 7 | 20 | 41 | |||
| firstReactRender | 23 | 20 | 56 | 4 | 23 | 27 | |||
| getState | 8 | 4 | 37 | 5 | 8 | 11 | |||
| initialActions | 0 | 0 | 1 | 0 | 0 | 1 | |||
| loadScripts | 1143 | 1012 | 1485 | 75 | 1182 | 1281 | |||
| setupStore | 7 | 4 | 36 | 4 | 6 | 11 | |||
| Webpack | Home | uiStartup | 1510 | 1345 | 1770 | 101 | 1612 | 1696 | |
| load | 1315 | 1167 | 1586 | 103 | 1416 | 1510 | |||
| domContentLoaded | 1314 | 1167 | 1585 | 103 | 1416 | 1510 | |||
| domInteractive | 83 | 51 | 161 | 20 | 88 | 129 | |||
| firstPaint | NaN | NaN | NaN | NaN | NaN | NaN | |||
| backgroundConnect | 21 | 15 | 42 | 4 | 22 | 26 | |||
| firstReactRender | 40 | 29 | 57 | 4 | 42 | 45 | |||
| getState | 10 | 5 | 50 | 7 | 9 | 29 | |||
| initialActions | 0 | 0 | 1 | 0 | 1 | 1 | |||
| loadScripts | 1296 | 1150 | 1568 | 104 | 1398 | 1493 | |||
| setupStore | 8 | 5 | 48 | 5 | 8 | 9 |
Benchmark value 24 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 64 exceeds gate value 32 for chrome webpack home mean setupStore
Benchmark value 311 exceeds gate value 65 for chrome webpack home p95 setupStore
Benchmark value 41 exceeds gate value 38 for firefox webpack home mean firstReactRender
Sum of mean exceeds: 66ms | Sum of p95 exceeds: 252ms
Sum of all benchmark exceeds: 318ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
- background: -2.4 KiB (-0.05%)
- ui: 3.28 KiB (0.05%)
- common: 5.04 KiB (0.06%)