Skip to content

fix: Add route protection when basic functionality toggle is off#39975

Merged
gauthierpetetin merged 53 commits intomainfrom
fix/39866-route-protection-basic-functionality-off
Feb 26, 2026
Merged

fix: Add route protection when basic functionality toggle is off#39975
gauthierpetetin merged 53 commits intomainfrom
fix/39866-route-protection-basic-functionality-off

Conversation

@gauthierpetetin
Copy link
Contributor

@gauthierpetetin gauthierpetetin commented Feb 11, 2026

Description

When “Basic functionality” (use external services) is off, routes that depend on external services (e.g. swap, rewards, notifications, DeFi, perps) are now protected: the user is redirected to a dedicated “Basic functionality is off” page instead of the feature. That page offers an inline toggle to turn Basic functionality on and, when coming from a blocked route, a primary CTA to open the blocked feature (e.g. “Open the Swap page”) plus “Go to the home page.” This prevents users from landing on feature UIs that cannot work without external services and gives them a clear path to enable the setting or go home.

Open in GitHub Codespaces

Changelog

CHANGELOG entry: When Basic functionality is off, protected routes now redirect to a “Basic functionality is off” page with an inline toggle and optional “Open the [feature] page” action instead of showing the feature.

Related issues

Fixes: #39866

Manual testing steps

  1. Build and load the extension: yarn start.
  2. Turn off Basic Functionality: Settings → Security and privacy → turn off “Basic functionality”.
  3. From the home UI or address bar, open a gated route (e.g. Swap, Rewards, Notifications, DeFi, Shield plan, or a Perps route). Example:
    a. Direct route: chrome-extension://hebhblbkkdabgoldnojllkipeoacjioc/home.html#/cross-chain/swaps/prepare-bridge-page?swaps=true
    b. Deep link: https://link.metamask.io/swap?from=eip155%3A1%2Ferc20%3A0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48&to=eip155%3A1%2Ferc20%3A0xdAC17F958D2ee523a2206206994597C13D831ec7&value=0x38d7ea4c68000
  4. Confirm you are redirected to the “Basic functionality is off” page with description, inline toggle, and “Go to the home page.”
  5. From that page, confirm the inline toggle turns Basic functionality on and that “Open the Swap page” (or equivalent) appears and navigates to the blocked route when clicked.
  6. Confirm “Go to the home page” navigates to home.
  7. Turn Basic functionality back on and confirm protected routes load normally.

Screenshots/Recordings

Screenshot 2026-02-20 at 06 38 36

Or see Loom video

Additional information

Routes that require Basic Functionality

When Basic functionality is off, these routes redirect to /feature-unavailable:

  • /notifications/settings
  • /notifications/:uuid
  • /notifications
  • /cross-chain/tx-details/:srcTxMetaId
  • /cross-chain/*
  • /defi/:chainId/:protocolId
  • /nonevm-balance-check
  • /shield-plan
  • /rewards
  • /perps/home
  • /perps/market/:symbol
  • /perps/activity
  • /perps/market-list
  • /snaps
  • /snaps/view/*

Routes that do not require Basic Functionality

These routes remain available when Basic functionality is off:

  • / (Home)
  • /onboarding/*
  • /lock
  • /unlock
  • /link (deep link)
  • /feature-unavailable
  • /restore-vault
  • /smart-account-update
  • /seed/:keyringId?
  • /import-srp
  • /settings/*
  • /send/:page?
  • /confirm-transaction/* (all confirmation routes)
  • /confirm-add-suggested-token
  • /confirm-add-suggested-nft
  • /confirmation/:id?
  • /new-account/*
  • /connect/:id/*
  • /asset/* (all asset routes)
  • /permissions
  • /gator-permissions
  • /token-transfer/*
  • /review-gator-permissions/*
  • /review-permissions/:origin
  • /account-list
  • /multichain-account-address-list/:accountGroupId
  • /multichain-account-private-key-list/:accountGroupId
  • /add-wallet-page
  • /multichain-account-details/:id
  • /multichain-smart-account/:address
  • /multichain-wallet-details-page/:id

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 routing/guard logic and adds a new redirect screen; misconfiguration could block access to key routes or create redirect loops, but changes are localized and well-tested.

Overview
When useExternalServices ("Basic functionality") is off, routes that depend on external services now redirect to a dedicated BASIC_FUNCTIONALITY_OFF_ROUTE screen instead of rendering the feature.

Adds a BasicFunctionalityRequired route guard (wired into createRouteWithLayout by default) that passes the blocked URL + a per-feature i18n CTA key so the new page can show an inline toggle to re-enable basic functionality and optionally navigate back to the originally requested feature. Updates route config to opt out for allowed routes (e.g. home/settings/confirm flows) and to provide CTA keys for protected routes (swap/notifications/snaps/defi/rewards/perps/shield/etc.).

Includes new i18n strings, unit + e2e coverage for the redirect/toggle/CTA flow, plus small fixes (boolean disableUnderline, add useExternalServices to integration init state, minor settings container cleanup).

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

gauthierpetetin and others added 2 commits February 11, 2026 08:09
 #39866)

- Add BASIC_FUNCTIONALITY_REQUIRED_ROUTE and dedicated feature-unavailable page
- Add RequireBasicFunctionality HOC; wrap swap, rewards, notifications, DeFi, shield, perps, nonevm-balance-check routes
- Add BasicFunctionalityRequired page with i18n (en, en_GB), static style constants
- Register route in route-with-layout and routes.component; add unit tests

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions
Copy link
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 11, 2026

Builds ready [996b219]
UI Startup Metrics (1353 ± 98 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1353117917299813931519
load117399313638312091329
domContentLoaded116398913568011921310
domInteractive261697182381
firstPaint153671164153192240
backgroundConnect24421848739245270
firstReactRender16103141724
initialActions106113
loadScripts9407651139819701088
setupStore1262741321
numNetworkReqs231592211585
BrowserifyPower User HomeuiStartup16951352300519217361954
load1132998219318411011587
domContentLoaded1116992218717810871546
domInteractive34181352434107
firstPaint188661582158228294
backgroundConnect31127547928318358
firstReactRender23156082439
initialActions105112
loadScripts88376118151658571297
setupStore1564871724
numNetworkReqs1144426348138213
WebpackStandard HomeuiStartup84969412431059361020
load7406231151102805936
domContentLoaded7346161143101799931
domInteractive251691182271
firstPaint1206364675160210
backgroundConnect281892123049
firstReactRender14103351624
initialActions104112
loadScripts7316141138100797929
setupStore1164051221
numNetworkReqs231593211582
WebpackPower User HomeuiStartup1215896228719712711558
load70160612831276851026
domContentLoaded69260012781276731020
domInteractive34171412831100
firstPaint1266734663151275
backgroundConnect15612830335158236
firstReactRender22176252428
initialActions105111
loadScripts68959812691256711012
setupStore1153641216
numNetworkReqs1184328551145233
FirefoxBrowserifyStandard HomeuiStartup15701327203814816181882
load13561158174211914111573
domContentLoaded13551158174211914081573
domInteractive70322494289138
firstPaint------
backgroundConnect5630172196188
firstReactRender1292321214
initialActions102012
loadScripts13281136162711313791547
setupStore146178201144
numNetworkReqs241592211687
BrowserifyPower User HomeuiStartup27172044396736528503509
load15401216232623716072086
domContentLoaded15401216232623716062086
domInteractive12434629115111428
firstPaint------
backgroundConnect269119918215261850
firstReactRender201473101925
initialActions203123
loadScripts15061192229722815642034
setupStore1559772219149708
numNetworkReqs66351463187127
WebpackStandard HomeuiStartup15241321208114115791779
load1322114415859913871498
domContentLoaded1321114415859913861498
domInteractive742624340102131
firstPaint------
backgroundConnect54231683160131
firstReactRender14116581318
initialActions103012
loadScripts1292111515309313601441
setupStore155148231146
numNetworkReqs241387191781
WebpackPower User HomeuiStartup26731943368740728633520
load15241235210423216671953
domContentLoaded15231235210423216671953
domInteractive11432659108118322
firstPaint------
backgroundConnect3101111262250299877
firstReactRender221587102330
initialActions213122
loadScripts14891219206422716121926
setupStore1638809221200691
numNetworkReqs63331643493123
📊 Page Load Benchmark Results

Current Commit: 996b219 | Date: 2/11/2026

📄 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: 716ms (±35ms) 🟢 | historical mean value: 719ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±11ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 38ms 1.01s 1.30s 1.07s 1.30s
domContentLoaded 716ms 35ms 695ms 973ms 743ms 973ms
firstPaint 77ms 11ms 56ms 172ms 88ms 172ms
firstContentfulPaint 77ms 11ms 56ms 172ms 88ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 5.53 KiB (0.07%)
  • common: 694 Bytes (0.01%)

…ed test

Use I18N_KEYS constants for i18n key strings in mock to satisfy
dot-notation rule without triggering naming-convention.

Co-authored-by: Cursor <cursoragent@cursor.com>
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 11, 2026

Builds ready [a5730b2]
UI Startup Metrics (1374 ± 90 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1374118815989014331511
load118799313938312391336
domContentLoaded117998513838312171327
domInteractive271697192380
firstPaint177641193178205318
backgroundConnect24322143429246277
firstReactRender1794161828
initialActions109114
loadScripts9557671143819951108
setupStore1364051522
numNetworkReqs231589211584
BrowserifyPower User HomeuiStartup17631362624352817742058
load11431018170015211251562
domContentLoaded11271013163614611061530
domInteractive38182093634150
firstPaint1767141875239301
backgroundConnect3742844313433329379
firstReactRender23144872437
initialActions106113
loadScripts88977713511368761288
setupStore1574271732
numNetworkReqs1174725846140196
WebpackStandard HomeuiStartup83668511551029041020
load72360894388784888
domContentLoaded71760393687769883
domInteractive251686172273
firstPaint1086231453116223
backgroundConnect261760102951
firstReactRender14102941722
initialActions104112
loadScripts71460193486767881
setupStore1163251123
numNetworkReqs231595211586
WebpackPower User HomeuiStartup1185828185815912691459
load7056271149108693974
domContentLoaded6956191143109680967
domInteractive36172023631145
firstPaint14161656106146381
backgroundConnect16813233448177277
firstReactRender21163832226
initialActions104112
loadScripts6936171135107678958
setupStore1243951518
numNetworkReqs904626547116174
FirefoxBrowserifyStandard HomeuiStartup15811360224315915901921
load13661188172610913961617
domContentLoaded13651188172610913961617
domInteractive873723943121151
firstPaint------
backgroundConnect5529190235484
firstReactRender1291711214
initialActions102012
loadScripts13391167168510413731591
setupStore166168261246
numNetworkReqs251399231791
BrowserifyPower User HomeuiStartup27802107458041729623621
load16031341246927416202286
domContentLoaded16021341246427416152280
domInteractive13336706134121464
firstPaint------
backgroundConnect2921141232251298917
firstReactRender20157182129
initialActions203123
loadScripts15631315242126115752227
setupStore1349751179152577
numNetworkReqs67351503496131
WebpackStandard HomeuiStartup15511259307221115941913
load13501163284218414031519
domContentLoaded13491159284218414031519
domInteractive822730453127178
firstPaint------
backgroundConnect52222133153117
firstReactRender13102121318
initialActions102112
loadScripts13251125281518213791489
setupStore126130151132
numNetworkReqs241296201780
WebpackPower User HomeuiStartup27382055449646628463697
load15811289257629216392199
domContentLoaded15801282257229316392199
domInteractive15334896166130525
firstPaint------
backgroundConnect270124908187266817
firstReactRender24177572631
initialActions217123
loadScripts15471261254528715822163
setupStore157131185210167643
numNetworkReqs65342013982139
📊 Page Load Benchmark Results

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

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±122ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 736ms (±120ms) 🟢 | historical mean value: 719ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 86ms (±104ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 122ms 1.01s 2.24s 1.07s 2.24s
domContentLoaded 736ms 120ms 703ms 1.90s 756ms 1.90s
firstPaint 86ms 104ms 60ms 1.12s 84ms 1.12s
firstContentfulPaint 86ms 104ms 60ms 1.12s 84ms 1.12s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 5.53 KiB (0.07%)
  • common: 694 Bytes (0.01%)

gauthierpetetin and others added 2 commits February 11, 2026 11:18
Set useExternalServices: true in preloaded state so DeFi routes
(protected by RequireBasicFunctionality) are accessible in the test.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace deprecated component-library imports (Box, Text, Button,
ButtonLink) with @metamask/design-system-react to satisfy fitness
function 'Don't import deprecated UI components in new files'.

Co-authored-by: Cursor <cursoragent@cursor.com>
- Multiline design-system import and Text component props
  to satisfy prettier/prettier in CI.

Co-authored-by: Cursor <cursoragent@cursor.com>
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 11, 2026

Builds ready [a4d1126]
UI Startup Metrics (1361 ± 98 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1361115216219814181544
load116698113828912091326
domContentLoaded115897213758911991314
domInteractive251593182279
firstPaint2326013012582131140
backgroundConnect23420435620237255
firstReactRender1693041825
initialActions106113
loadScripts9407581150899881093
setupStore1273251325
numNetworkReqs2315100221589
BrowserifyPower User HomeuiStartup17241308232215717822015
load11491024177915711281587
domContentLoaded11331014176914911141528
domInteractive3519176303280
firstPaint174701507157221291
backgroundConnect32028637820329357
firstReactRender22156772233
initialActions105112
loadScripts89178815271448661257
setupStore1674361728
numNetworkReqs1134723042141214
WebpackStandard HomeuiStartup8106781283102852998
load7076041165102761872
domContentLoaded7026001155101756867
domInteractive2715224262275
firstPaint1006141052111194
backgroundConnect25185072839
firstReactRender14102841722
initialActions104112
loadScripts6995981146100754860
setupStore1163241118
numNetworkReqs231598211587
WebpackPower User HomeuiStartup1190868206318212791519
load7026161365122695995
domContentLoaded6936081353122682991
domInteractive37181893632136
firstPaint1316651583147302
backgroundConnect16813132846175289
firstReactRender21163132327
initialActions102011
loadScripts6906061335119680980
setupStore1244761317
numNetworkReqs1204628054144237
FirefoxBrowserifyStandard HomeuiStartup16121401285020916352073
load13901203260816914271632
domContentLoaded13881197260817014261631
domInteractive903724046130162
firstPaint------
backgroundConnect59292042757130
firstReactRender12101711315
initialActions103122
loadScripts13621180250816014011554
setupStore186191311344
numNetworkReqs2512100231790
BrowserifyPower User HomeuiStartup26732041405539727983450
load15591292229426016602076
domContentLoaded15581292229426116592075
domInteractive12833722127112441
firstPaint------
backgroundConnect265113935235220896
firstReactRender18146671721
initialActions107122
loadScripts15181270227224915692025
setupStore1149750168108504
numNetworkReqs66361553486139
WebpackStandard HomeuiStartup15781362211414216581846
load13581143170610514311530
domContentLoaded13571143170610614301530
domInteractive852718441128143
firstPaint------
backgroundConnect58261612967116
firstReactRender1510111101420
initialActions103122
loadScripts1327112815769814011494
setupStore206171281465
numNetworkReqs241288201879
WebpackPower User HomeuiStartup27371906805482327713577
load15711237669673116171874
domContentLoaded15711237669673116121873
domInteractive1003053885103250
firstPaint------
backgroundConnect2931091053239264890
firstReactRender22145462432
initialActions203122
loadScripts15321217666473015601849
setupStore19981225270311731
numNetworkReqs63351493091118
📊 Page Load Benchmark Results

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

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±37ms) 🟡 | historical mean value: 1.03s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 720ms (±36ms) 🟢 | historical mean value: 723ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±13ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 37ms 1.01s 1.31s 1.05s 1.31s
domContentLoaded 720ms 36ms 698ms 979ms 741ms 979ms
firstPaint 76ms 13ms 60ms 184ms 88ms 184ms
firstContentfulPaint 76ms 13ms 60ms 184ms 88ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 5.51 KiB (0.07%)
  • common: 694 Bytes (0.01%)

gauthierpetetin and others added 3 commits February 11, 2026 13:59
Use 'Go to the home page' (en, en_GB) to match deep link interstitial.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add useExternalServices: true to integration-init-state.json so
routes protected by RequireBasicFunctionality are reachable by default.
Remove redundant override from DeFi test.

Co-authored-by: Cursor <cursoragent@cursor.com>
- Card minHeight 592px, logo 160x160px to match deep-link
- Border radius 6px (BorderRadius.MD), description paddingBottom 12, button marginTop 48px

Co-authored-by: Cursor <cursoragent@cursor.com>
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 23, 2026

Builds ready [b504a5a]
⚡ Performance Benchmarks (1363 ± 101 ms)
👆 Interaction Benchmarks
ActionMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account28920307308
total28920307308
Confirm Txconfirm_tx60231660366040
total60231660366040
Bridge User Actionsbridge_load_page1914195195
bridge_load_asset_picker22130250263
bridge_search_token71819732738
total11395211801187
🔌 Startup Benchmarks
BuildMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
Chrome Browserify Startup Standard HomeuiStartup13631164165910113971569
load115697413999411941327
domContentLoaded114896413939311821308
domInteractive2816104212489
firstPaint157661173126211280
backgroundConnect19918223811200219
firstReactRender18133941924
initialActions106112
loadScripts96578112089310021126
setupStore1365161520
numNetworkReqs312293202283
Chrome Browserify Startup Power User HomeuiStartup301015289807166536866055
load11801015169312711971470
domContentLoaded11621002159511811761421
domInteractive3319174253276
firstPaint195801146130246354
backgroundConnect980242476811179043611
firstReactRender24164562537
initialActions105111
loadScripts96281814051169731209
setupStore1475171530
numNetworkReqs79391582491125
Chrome Webpack Startup Standard HomeuiStartup8646971155939171056
load73662194185778888
domContentLoaded73061693485774883
domInteractive281595202484
firstPaint1186138468132274
backgroundConnect28186493051
firstReactRender18124462133
initialActions103112
loadScripts72761593183772878
setupStore1162631217
numNetworkReqs312295192585
Chrome Webpack Startup Power User HomeuiStartup1283998292533113281739
load73562412211147301014
domContentLoaded72461712141157191006
domInteractive38191592836109
firstPaint1497041477185295
backgroundConnect187129941109166315
firstReactRender22163332328
initialActions102111
loadScripts72161512071127161002
setupStore1242141418
numNetworkReqs1264326845153201
Firefox Browserify Startup Standard HomeuiStartup17231431290425217092171
load14521202246422014521899
domContentLoaded14511202245622014521898
domInteractive863529447103150
firstPaint------
backgroundConnect6235230266288
firstReactRender14112021517
initialActions103122
loadScripts14241176242821514251772
setupStore178155181748
numNetworkReqs3220100192788
Firefox Browserify Startup Power User HomeuiStartup29172020483851130783708
load16651288324235917522542
domContentLoaded16651286324235917522542
domInteractive215591766271263421
firstPaint------
backgroundConnect46111113733356961142
firstReactRender20147191827
initialActions103122
loadScripts16171252321135017012458
setupStore118141123178103500
numNetworkReqs883622737103173
Firefox Webpack Startup Standard HomeuiStartup16861399322426017092072
load14131212289118614601591
domContentLoaded14121210289118714601591
domInteractive106291526152130185
firstPaint------
backgroundConnect7124146014461166
firstReactRender16126161625
initialActions2065612
loadScripts13921196287118514321557
setupStore207195281455
numNetworkReqs311991172775
Firefox Webpack Startup Power User HomeuiStartup27782183469342129373538
load16031318296530316712195
domContentLoaded16021317296530316712195
domInteractive164451198168170511
firstPaint------
backgroundConnect4231141197274626928
firstReactRender22157372330
initialActions213123
loadScripts15641294294429916112163
setupStore153131179198146586
numNetworkReqs84312274284197
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2171218218
srpButtonToSrpForm9209293
confirmSrpToPwForm2102222
pwFormToMetricsScreen1501515
metricsToWalletReadyScreen1601616
doneButtonToHomeScreen90932512151386
openAccountMenuToAccountListLoaded740160178528042
total884710388709004
Onboarding New WalletcreateWalletToSocialScreen2182219222
srpButtonToPwForm1031104104
createPwToRecoveryScreen8088
skipBackupToMetricsScreen3313435
agreeButtonToOnboardingSuccess1501515
doneButtonToAssetList83520710001140
total121420813781522
Asset DetailsassetClickToPriceChart4064448
total4064448
Solana Asset DetailsassetClickToPriceChart4414545
total4414545
Import Srp HomeloginToHomeScreen18852119011907
openAccountMenuAfterLogin4164548
homeAfterImportWithNewWallet246113725352653
total45196345444610
Send TransactionsopenSendPageFromHome32104142
selectTokenToSendFormLoaded2022023
reviewTransactionToConfirmationPage8612861864
total9211922923
SwapopenSwapPageFromHome1195123126
fetchAndDisplaySwapQuotes45842545754627
total47022246954738
🌐 Dapp Page Load Benchmarks

Current Commit: b504a5a | Date: 2/23/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±42ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 714ms (±39ms) 🟢 | historical mean value: 727ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±13ms) 🟢 | historical mean value: 80ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 42ms 1.00s 1.33s 1.04s 1.33s
domContentLoaded 714ms 39ms 692ms 990ms 722ms 990ms
firstPaint 76ms 13ms 60ms 196ms 88ms 196ms
firstContentfulPaint 76ms 13ms 60ms 196ms 88ms 196ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 9.91 KiB (0.12%)
  • common: 716 Bytes (0.01%)

… contract

Mock now calls onToggle(value) (current value) to match the real
library, which passes the current value on click rather than the next value.

Co-authored-by: Cursor <cursoragent@cursor.com>
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 23, 2026

Builds ready [32e4e6e]
⚡ Performance Benchmarks (1444 ± 115 ms)
👆 Interaction Benchmarks
ActionMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2654264271
total2654264271
Confirm Txconfirm_tx6066660676076
total6066660676076
Bridge User Actionsbridge_load_page23012242243
bridge_load_asset_picker20039241253
bridge_search_token71819734748
total11484712011210
🔌 Startup Benchmarks
BuildMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
Chrome Browserify Startup Standard HomeuiStartup14441160170211515181631
load1228988147810512951399
domContentLoaded1220984146810412871389
domInteractive2816100192482
firstPaint177691355182215276
backgroundConnect21319526813216237
firstReactRender19123952128
initialActions104123
loadScripts1024797127710310911193
setupStore1372951622
numNetworkReqs312293202284
Chrome Browserify Startup Power User HomeuiStartup2217129310133133720704420
load11821037172912812131460
domContentLoaded11661018163112211891406
domInteractive3517233353073
firstPaint207771653167263313
backgroundConnect60624683199753822175
firstReactRender23155872534
initialActions104111
loadScripts96782814321179941212
setupStore1566891734
numNetworkReqs71381362183105
Chrome Webpack Startup Standard HomeuiStartup8716951180919321019
load75561598290825899
domContentLoaded74961297590821892
domInteractive2916122242495
firstPaint12660896109131368
backgroundConnect26196073040
firstReactRender18114162034
initialActions103112
loadScripts74661097489819890
setupStore1172531216
numNetworkReqs312294202585
Chrome Webpack Startup Power User HomeuiStartup1279894244024613681713
load73863710651007381008
domContentLoaded7276281054100725998
domInteractive38181773035117
firstPaint1476945586152352
backgroundConnect18113475184164333
firstReactRender22183632326
initialActions101011
loadScripts724626104198723989
setupStore1355171420
numNetworkReqs1263823243145209
Firefox Browserify Startup Standard HomeuiStartup16021361232319016152054
load13521165204715113811619
domContentLoaded13501165204615113801619
domInteractive80322924997152
firstPaint------
backgroundConnect5727188246186
firstReactRender13112221315
initialActions103012
loadScripts13251145201914613561546
setupStore176159221549
numNetworkReqs311998212590
Firefox Browserify Startup Power User HomeuiStartup27602156418441129073735
load15651222263626316042263
domContentLoaded15641217263626316012263
domInteractive13235624105122384
firstPaint------
backgroundConnect3011151470222355884
firstReactRender18146651923
initialActions103122
loadScripts15281199260325415572222
setupStore14191036196141629
numNetworkReqs73281833694147
Firefox Webpack Startup Standard HomeuiStartup16911388301119617511961
load14101164168710814711633
domContentLoaded14091163168710814711632
domInteractive872941257128169
firstPaint------
backgroundConnect61262133362136
firstReactRender16123141624
initialActions103122
loadScripts13831151166610514341606
setupStore377136713916157
numNetworkReqs312094182779
Firefox Webpack Startup Power User HomeuiStartup27292086422937029143485
load15781333244023116432172
domContentLoaded15771333244023116422171
domInteractive14831783146142494
firstPaint------
backgroundConnect3441061103244413915
firstReactRender21153442329
initialActions207122
loadScripts15361314239622415762089
setupStore13681195180152474
numNetworkReqs75291683491145
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2171218218
srpButtonToSrpForm9109191
confirmSrpToPwForm2102121
pwFormToMetricsScreen1511616
metricsToWalletReadyScreen1601616
doneButtonToHomeScreen12293412411277
openAccountMenuToAccountListLoaded701461172308033
total849746188659090
Onboarding New WalletcreateWalletToSocialScreen2181219219
srpButtonToPwForm1064110111
createPwToRecoveryScreen8088
skipBackupToMetricsScreen3523537
agreeButtonToOnboardingSuccess1611617
doneButtonToAssetList55759603618
total94653993995
Asset DetailsassetClickToPriceChart4114343
total4114343
Solana Asset DetailsassetClickToPriceChart4704747
total4704747
Import Srp HomeloginToHomeScreen223120124512494
openAccountMenuAfterLogin4424546
homeAfterImportWithNewWallet245614025202621
total466526447655011
Send TransactionsopenSendPageFromHome3834141
selectTokenToSendFormLoaded2232126
reviewTransactionToConfirmationPage8502852852
total91615923943
SwapopenSwapPageFromHome1254129129
fetchAndDisplaySwapQuotes564174362496252
total576673263696377
🌐 Dapp Page Load Benchmarks

Current Commit: 32e4e6e | Date: 2/23/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±39ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 724ms (±37ms) 🟢 | historical mean value: 728ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±10ms) 🟢 | historical mean value: 80ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 39ms 1.01s 1.33s 1.06s 1.33s
domContentLoaded 724ms 37ms 701ms 1.00s 746ms 1.00s
firstPaint 77ms 10ms 60ms 156ms 88ms 156ms
firstContentfulPaint 77ms 10ms 60ms 156ms 88ms 156ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 9.91 KiB (0.12%)
  • common: 716 Bytes (0.01%)

gauthierpetetin and others added 3 commits February 24, 2026 11:25
…grammar)

Replace 'Open the $1 page' with one message key per destination
(basicFunctionalityRequired_openSwapsPage, etc.) so each locale
can translate the whole sentence with correct grammar (e.g. Russian
'Откройте страницу свопов'). Mirrors the deep link interstitial
pattern (deepLink_theSwapsPage, etc.).

Co-authored-by: Cursor <cursoragent@cursor.com>
Use discriminated union so CTA key is required when
basicFunctionalityRequired is true and forbidden when false.

Co-authored-by: Cursor <cursoragent@cursor.com>
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 24, 2026

Builds ready [7a69a54]
⚡ Performance Benchmarks (1381 ± 105 ms)
👆 Interaction Benchmarks
ActionMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2722274274
total2722274274
Confirm Txconfirm_tx60542560776079
total60542560776079
Bridge User Actionsbridge_load_page20912217227
bridge_load_asset_picker1999207209
bridge_search_token7007699711
total11032211241125
🔌 Startup Benchmarks
BuildMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
Chrome Browserify Startup Standard HomeuiStartup13811181169310514291590
load116399014199612051348
domContentLoaded115498514009411971322
domInteractive2716109182376
firstPaint177661239168212355
backgroundConnect20118526713203224
firstReactRender18143232024
initialActions105113
loadScripts96979812169410131137
setupStore1263751522
numNetworkReqs312299202283
Chrome Browserify Startup Power User HomeuiStartup2279141410601147520905173
load11571034160311412021423
domContentLoaded11431024157411211881416
domInteractive3418165233475
firstPaint1767741276242305
backgroundConnect53625648386903272147
firstReactRender25155082747
initialActions107114
loadScripts93782613691119721195
setupStore1764781737
numNetworkReqs68381452476118
Chrome Webpack Startup Standard HomeuiStartup90076012961009431114
load765632108695826925
domContentLoaded759626107694821918
domInteractive2915110222491
firstPaint1186435769126295
backgroundConnect29185883346
firstReactRender20134162331
initialActions104112
loadScripts756624106493819909
setupStore1373351322
numNetworkReqs312298212592
Chrome Webpack Startup Power User HomeuiStartup1227907221920313151497
load7256291194109715990
domContentLoaded7156231189109703985
domInteractive36191472634103
firstPaint1416441574172271
backgroundConnect1791351116106170278
firstReactRender22175042328
initialActions102011
loadScripts7126221180107701973
setupStore1355381420
numNetworkReqs1183825747136232
Firefox Browserify Startup Standard HomeuiStartup16341396252820816522072
load13761164227717014071636
domContentLoaded13751164227717014061635
domInteractive8532989102103143
firstPaint------
backgroundConnect60272233760156
firstReactRender14113631418
initialActions102012
loadScripts13491137225016713811576
setupStore207202321580
numNetworkReqs312097202590
Firefox Browserify Startup Power User HomeuiStartup28392077889884729453509
load16321265606164516541975
domContentLoaded16311264606064516531975
domInteractive14134684108154354
firstPaint------
backgroundConnect3431171119270413919
firstReactRender19146281926
initialActions2050522
loadScripts15931234602164315971959
setupStore1259670160123538
numNetworkReqs76271893993153
Firefox Webpack Startup Standard HomeuiStartup16891447214914117082010
load1424124217898214581575
domContentLoaded1424124217898214571575
domInteractive1032926243131158
firstPaint------
backgroundConnect60232283664152
firstReactRender16125251525
initialActions103122
loadScripts1401122917647914391545
setupStore237234391368
numNetworkReqs312095182779
Firefox Webpack Startup Power User HomeuiStartup28431933855183930003915
load16731275722879016522470
domContentLoaded16721275722779016522469
domInteractive14832952154145564
firstPaint------
backgroundConnect3201081206234384804
firstReactRender231665112458
initialActions103122
loadScripts16361257718178716142448
setupStore163131195220181618
numNetworkReqs74282374285163
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2172219219
srpButtonToSrpForm9129294
confirmSrpToPwForm2102121
pwFormToMetricsScreen1501515
metricsToWalletReadyScreen1601616
doneButtonToHomeScreen8982839781386
openAccountMenuToAccountListLoaded724248775038010
total850148389458968
Onboarding New WalletcreateWalletToSocialScreen2181219219
srpButtonToPwForm1081108109
createPwToRecoveryScreen8088
skipBackupToMetricsScreen3613738
agreeButtonToOnboardingSuccess1601616
doneButtonToAssetList6286636636
total1016710241024
Asset DetailsassetClickToPriceChart3733741
total3733741
Solana Asset DetailsassetClickToPriceChart6016062
total6016062
Import Srp HomeloginToHomeScreen201310520812167
openAccountMenuAfterLogin4234347
homeAfterImportWithNewWallet24302224372457
total45028845514603
Send TransactionsopenSendPageFromHome26103840
selectTokenToSendFormLoaded1902020
reviewTransactionToConfirmationPage86120857895
total91411914932
SwapopenSwapPageFromHome13216139159
fetchAndDisplaySwapQuotes46508647434764
total47828248664888
🌐 Dapp Page Load Benchmarks

Current Commit: 7a69a54 | Date: 2/24/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±39ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 724ms (±36ms) 🟢 | historical mean value: 726ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±12ms) 🟢 | historical mean value: 81ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 39ms 1.01s 1.33s 1.07s 1.33s
domContentLoaded 724ms 36ms 700ms 998ms 754ms 998ms
firstPaint 78ms 12ms 60ms 188ms 84ms 188ms
firstContentfulPaint 78ms 12ms 60ms 188ms 84ms 188ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 9.58 KiB (0.11%)
  • common: 1.2 KiB (0.01%)

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 24, 2026

Builds ready [d744e66]
⚡ Performance Benchmarks (1434 ± 99 ms)
👆 Interaction Benchmarks
ActionMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account29447311379
total29447311379
Confirm Txconfirm_tx60858261246229
total60858261246229
Bridge User Actionsbridge_load_page1929200201
bridge_load_asset_picker25239284307
bridge_search_token72014726736
total1189911991199
🔌 Startup Benchmarks
BuildMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
Chrome Browserify Startup Standard HomeuiStartup1434120516369914991607
load1209100414149212671351
domContentLoaded120299813909112631339
domInteractive2916131202685
firstPaint1447141371206258
backgroundConnect21419427014218243
firstReactRender19133942025
initialActions104113
loadScripts100481011979010581149
setupStore1263051521
numNetworkReqs312287192281
Chrome Browserify Startup Power User HomeuiStartup17621411226216518112062
load11711043176214611611532
domContentLoaded11561035172913611481503
domInteractive3318139193473
firstPaint210711626191264348
backgroundConnect28425738222295324
firstReactRender24155482641
initialActions104113
loadScripts95082715121349411298
setupStore19780132044
numNetworkReqs60381512465118
Chrome Webpack Startup Standard HomeuiStartup8536871102909151018
load73761393285800877
domContentLoaded73260992485794872
domInteractive2916136242392
firstPaint1195878185140226
backgroundConnect27185983040
firstReactRender18114472031
initialActions102112
loadScripts72960791684792870
setupStore1152941219
numNetworkReqs312296202587
Chrome Webpack Startup Power User HomeuiStartup1220916163513712971451
load723635108293716964
domContentLoaded713628107593705951
domInteractive37181513033121
firstPaint1436643775182263
backgroundConnect17813134552206301
firstReactRender23183542629
initialActions103111
loadScripts710625106791703943
setupStore1455091437
numNetworkReqs62391653357154
Firefox Browserify Startup Standard HomeuiStartup15611321258619215751991
load13041117229714413441545
domContentLoaded13031117229714413431545
domInteractive66221853586137
firstPaint------
backgroundConnect58282313356108
firstReactRender13114941317
initialActions103112
loadScripts12761095219413313211477
setupStore166132201437
numNetworkReqs3119101212590
Firefox Browserify Startup Power User HomeuiStartup25751893400839127293396
load15341263227523315852092
domContentLoaded15331263226923315852091
domInteractive1013829959109258
firstPaint------
backgroundConnect216106892163196553
firstReactRender18146161721
initialActions103122
loadScripts14921240224922215342047
setupStore1237727178121552
numNetworkReqs62311503486127
Firefox Webpack Startup Standard HomeuiStartup17781427354937217742660
load14641220308328214741659
domContentLoaded14631220308228314741659
domInteractive123301700224131187
firstPaint------
backgroundConnect71298828867139
firstReactRender15132731621
initialActions103122
loadScripts14381201305128014491584
setupStore227221321463
numNetworkReqs312093182777
Firefox Webpack Startup Power User HomeuiStartup26701915413147627293621
load15271220248329716802215
domContentLoaded15261220248229716802213
domInteractive12631831170100613
firstPaint------
backgroundConnect2391101400214196812
firstReactRender2315206212229
initialActions103122
loadScripts14971202242229116522190
setupStore22071266300274747
numNetworkReqs60301513581143
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2180219219
srpButtonToSrpForm9019092
confirmSrpToPwForm2102121
pwFormToMetricsScreen1501515
metricsToWalletReadyScreen1501515
doneButtonToHomeScreen61126623647
openAccountMenuToAccountListLoaded727738876357844
total828643388038825
Onboarding New WalletcreateWalletToSocialScreen2202221221
srpButtonToPwForm1101111112
createPwToRecoveryScreen9099
skipBackupToMetricsScreen3813839
agreeButtonToOnboardingSuccess1711819
doneButtonToAssetList101431812821395
total141332716721824
Asset DetailsassetClickToPriceChart3833843
total3833843
Solana Asset DetailsassetClickToPriceChart5035054
total5035054
Import Srp HomeloginToHomeScreen199416020542282
openAccountMenuAfterLogin4354351
homeAfterImportWithNewWallet21373821362195
total426719144574484
Send TransactionsopenSendPageFromHome31113746
selectTokenToSendFormLoaded2012121
reviewTransactionToConfirmationPage8555859861
total90311909916
SwapopenSwapPageFromHome13629152187
fetchAndDisplaySwapQuotes46436646264755
total47869147534942
🌐 Dapp Page Load Benchmarks

Current Commit: d744e66 | Date: 2/24/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±43ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 734ms (±39ms) 🟢 | historical mean value: 724ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±11ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 43ms 1.03s 1.36s 1.07s 1.36s
domContentLoaded 734ms 39ms 712ms 1.02s 749ms 1.02s
firstPaint 80ms 11ms 64ms 180ms 88ms 180ms
firstContentfulPaint 80ms 11ms 64ms 180ms 88ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -269.75 KiB (-6.21%)
  • ui: 16.21 KiB (0.19%)
  • common: 225.26 KiB (2.02%)

DDDDDanica
DDDDDanica previously approved these changes Feb 24, 2026
MajorLift
MajorLift previously approved these changes Feb 25, 2026
Copy link
Contributor

@MajorLift MajorLift left a comment

Choose a reason for hiding this comment

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

LGTM!

sleepytanya
sleepytanya previously approved these changes Feb 25, 2026
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 26, 2026

Builds ready [73f1e3a]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
🧭 User Journey Benchmarks
🌐 Dapp Page Load Benchmarks

Current Commit: 73f1e3a | Date: 2/26/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±40ms) 🟡 | historical mean value: 1.06s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 739ms (±61ms) 🟢 | historical mean value: 745ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 93ms (±128ms) 🟢 | historical mean value: 85ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 40ms 1.02s 1.36s 1.08s 1.36s
domContentLoaded 739ms 61ms 714ms 1.30s 762ms 1.30s
firstPaint 93ms 128ms 64ms 1.36s 92ms 1.36s
firstContentfulPaint 93ms 128ms 64ms 1.36s 92ms 1.36s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 9.59 KiB (0.11%)
  • common: 1.2 KiB (0.01%)

PERPS_ORDER_ENTRY_ROUTE (/perps/trade/:symbol) was missing
basicFunctionalityOpenPageCtaKey. With basicFunctionalityRequired
defaulting to true, createRouteWithLayout threw and broke route
rendering. Use same CTA key as other perps routes.

Made-with: Cursor
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.

Replace hardcoded query strings with messages.xxx.message to satisfy
locale-query-mismatch Rule 2 and keep tests in sync with translations.

Made-with: Cursor
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.

…-required test

Use basicFunctionalityRequired_toggleLabel (same key as component) instead
of basicConfigurationLabel. Rename mock variable to mockT to avoid
shadowing imported messages.

Made-with: Cursor
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 26, 2026

Builds ready [f37004c]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2662612745266274
total2662612745266274
Confirm Txconfirm_tx6032602160581460366058
total6032602160581460366058
Bridge User Actionsbridge_load_page23519826630266266
bridge_load_asset_picker26221233846284338
bridge_search_token7397367422742742
total1246122412812512811281
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup15171260192211215901703
load12761051170410613321444
domContentLoaded12681046169210513241436
domInteractive3018107192681
firstPaint177741333177220309
backgroundConnect22420433419230257
firstReactRender19123852131
initialActions107123
loadScripts1063839148210511191231
setupStore1674371926
numNetworkReqs312295192282
Power User HomeuiStartup19041536264418119352202
load12531137185113412501516
domContentLoaded12361118177313012351509
domInteractive3922151213985
firstPaint231731243141278349
backgroundConnect33829047831351385
firstReactRender25186672538
initialActions104112
loadScripts98689115021249861265
setupStore1774771834
numNetworkReqs5636135196483
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2212192221221222
srpButtonToSrpForm96959609696
confirmSrpToPwForm23222302323
pwFormToMetricsScreen17161911719
metricsToWalletReadyScreen17161701717
doneButtonToHomeScreen953597130623910801306
openAccountMenuToAccountListLoaded74947020785230676757852
total88248699900410988679004
Onboarding New WalletcreateWalletToSocialScreen2202192201220220
srpButtonToPwForm1051041071106107
createPwToRecoveryScreen888088
skipBackupToMetricsScreen36353603636
agreeButtonToOnboardingSuccess16161601616
doneButtonToAssetList905479129935111651299
total1291860168435215561684
Asset DetailsassetClickToPriceChart513673135873
total513673135873
Solana Asset DetailsassetClickToPriceChart48464914949
total48464914949
Import Srp HomeloginToHomeScreen1885186119162018841916
openAccountMenuAfterLogin42394424344
homeAfterImportWithNewWallet23402094261120824682611
total41993996438517343564385
Send TransactionsopenSendPageFromHome40344344343
selectTokenToSendFormLoaded21182422324
reviewTransactionToConfirmationPage86385088615874886
total9139089194913919
SwapopenSwapPageFromHome1071061092109109
fetchAndDisplaySwapQuotes4624457447366446554736
total4693468047231746884723
🌐 Dapp Page Load Benchmarks

Current Commit: f37004c | Date: 2/26/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±40ms) 🟡 | historical mean value: 1.06s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 725ms (±38ms) 🟢 | historical mean value: 743ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±13ms) 🟢 | historical mean value: 84ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 40ms 1.01s 1.33s 1.07s 1.33s
domContentLoaded 725ms 38ms 703ms 1.01s 754ms 1.01s
firstPaint 78ms 13ms 60ms 188ms 88ms 188ms
firstContentfulPaint 78ms 13ms 60ms 188ms 88ms 188ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 9.66 KiB (0.12%)
  • common: 1.2 KiB (0.01%)

@sonarqubecloud
Copy link

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

Labels

release-13.21.0 Issue or pull request that will be included in release 13.21.0 size-XL team-extension-platform Extension Platform team

Projects

Archived in project