Skip to content

refactor: remove always-on code fences#40318

Merged
davidmurdoch merged 13 commits intomainfrom
refactor-always-on-fences
Feb 25, 2026
Merged

refactor: remove always-on code fences#40318
davidmurdoch merged 13 commits intomainfrom
refactor-always-on-fences

Conversation

@HowardBraham
Copy link
Contributor

@HowardBraham HowardBraham commented Feb 23, 2026

Description

Q: Why is this a single PR and not 6 PRs?
A: It might be easier to review, but they all touch overlapping files in overlapping areas, and if this were 6 PRs you would get a whole bunch of merge conflicts. I did separate it into 6 commits though, if you want to review it per commit.

Removed the following 6 code fence classes:

  • bitcoin: it was always turned on
  • bitcoin-swaps: it was turned on in everything except Flask, but I think that was a mistake (if not please correct me)
  • keyring-snaps: it was always turned on
  • multichain: it was always turned on
  • petnames: it only existed in a unit test file, and it was never configured as a feature anyway
  • tron: it was always turned on

Changelog

CHANGELOG entry: null


Note

Medium Risk
Broad, cross-cutting removal of build-time guards can change what code ships/executes per build flavor and may surface previously-uncompiled paths or missing dependencies, especially around multichain/Snap-keyring flows.

Overview
Removes the ONLY_INCLUDE_IF code-fence gating for features that were effectively always enabled (keyring-snaps, multichain, bitcoin, tron, plus bitcoin-swaps and a petnames test-only fence), making the previously conditional code paths compile and run consistently across standard builds.

This simplifies build configuration (builds.yml drops multichain/bitcoin-swaps feature entries and converts bitcoin/tron/keyring-snaps into plain asset sections) and updates both background + UI code to treat Snap-keyring account management, multichain account providers, and non-EVM transaction/activity UI as always present (while still respecting runtime remote feature flags for enabling/disabling providers).

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

@HowardBraham HowardBraham self-assigned this Feb 23, 2026
@HowardBraham HowardBraham requested review from a team as code owners February 23, 2026 06:18
@github-actions
Copy link
Contributor

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

@metamaskbot metamaskbot added the team-extension-platform Extension Platform team label Feb 23, 2026
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 23, 2026

✨ Files requiring CODEOWNER review ✨

🔑 @MetaMask/accounts-engineers (1 files, +22 -38)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 multichain-accounts/
          • 📁 wallet-details-account-type-selection/
            • 📄 wallet-details-account-type-selection.tsx +22 -38

@MetaMask/confirmations (1 files, +0 -4)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 metamask-template-renderer/
          • 📄 safe-component-list.js +0 -4

👨‍🔧 @MetaMask/core-extension-ux (5 files, +115 -243)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 transaction-list/
          • 📄 transaction-list.component.js +0 -30
          • 📄 unified-transaction-list.component.js +0 -27
      • 📁 multichain/
        • 📁 account-menu/
          • 📄 account-menu.tsx +91 -138
        • 📁 multichain-accounts/
          • 📁 wallet-details-account-type-selection/
            • 📄 wallet-details-account-type-selection.tsx +22 -38
        • 📁 network-manager/
          • 📁 components/
            • 📁 default-networks/
              • 📄 default-networks.tsx +2 -10

🫰 @MetaMask/core-platform (6 files, +0 -16)
  • 📁 app/
    • 📁 scripts/
      • 📁 constants/
        • 📄 snaps.ts +0 -4
      • 📁 controllers/
        • 📁 permissions/
          • 📁 snaps/
            • 📄 specifications.ts +0 -2
  • 📁 shared/
    • 📁 constants/
      • 📁 snaps/
        • 📄 permissions.ts +0 -2
        • 📄 permissions.ts +0 -2
    • 📁 lib/
      • 📁 snaps/
        • 📄 snaps.ts +0 -2
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 metamask-template-renderer/
          • 📄 safe-component-list.js +0 -4

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 23, 2026

Builds ready [cb38216]
⚡ Performance Benchmarks (1331 ± 92 ms)
👆 Interaction Benchmarks
ActionMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account30415311327
total30415311327
Confirm Txconfirm_tx60622460736095
total60622460736095
Bridge User Actionsbridge_load_page26132289307
bridge_load_asset_picker22537253283
bridge_search_token7307734738
total12115712401295
🔌 Startup Benchmarks
BuildMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
Chrome Browserify Startup Standard HomeuiStartup1331113716179213641540
load112492513798511541301
domContentLoaded111792013318211501279
domInteractive251592182274
firstPaint196601350207213341
backgroundConnect19918025612203226
firstReactRender18124351929
initialActions106112
loadScripts9357401146819661096
setupStore1263041421
numNetworkReqs312298212290
Chrome Browserify Startup Power User HomeuiStartup16861348210213017291923
load11131005163113011011451
domContentLoaded1099997162612910901427
domInteractive3419182233280
firstPaint1696741878229301
backgroundConnect28124540124288315
firstReactRender24155172738
initialActions106111
loadScripts89680014141238831202
setupStore1685991732
numNetworkReqs57331502459123
Chrome Webpack Startup Standard HomeuiStartup85968611381049311066
load73561291792815886
domContentLoaded72960890791809876
domInteractive2615121192376
firstPaint1155940262140210
backgroundConnect27185992946
firstReactRender17123861829
initialActions105112
loadScripts72760690590807869
setupStore1163041217
numNetworkReqs3122100212592
Chrome Webpack Startup Power User HomeuiStartup1231908206717013091507
load7286351358111722982
domContentLoaded7186301328109710957
domInteractive36181593032122
firstPaint1356843273162278
backgroundConnect17513044556167311
firstReactRender22163132428
initialActions102111
loadScripts7156281318107708950
setupStore1354761519
numNetworkReqs1043125550135194
Firefox Browserify Startup Standard HomeuiStartup16101385246118116401977
load13571165214315114031616
domContentLoaded13551165214315114031615
domInteractive68322443986134
firstPaint------
backgroundConnect5726222245984
firstReactRender13111811415
initialActions102012
loadScripts13301142210114513781573
setupStore187174271532
numNetworkReqs311996212591
Firefox Browserify Startup Power User HomeuiStartup27322120397337328093467
load15981321233723916742145
domContentLoaded15971321233723916732145
domInteractive13038775130120397
firstPaint------
backgroundConnect18499799102191314
firstReactRender19145961922
initialActions203122
loadScripts15621297231222716282104
setupStore1378712174151533
numNetworkReqs60251703978140
Firefox Webpack Startup Standard HomeuiStartup17401440332434817332152
load14541207280625414731631
domContentLoaded14531207280625414721631
domInteractive972928250131181
firstPaint------
backgroundConnect7725154715266157
firstReactRender15122731523
initialActions102012
loadScripts14271185278025114441592
setupStore197180271363
numNetworkReqs312096182774
Firefox Webpack Startup Power User HomeuiStartup27621870769764228813676
load16551347632754717852258
domContentLoaded16551346632754817852258
domInteractive12031828150105440
firstPaint------
backgroundConnect26757971219235874
firstReactRender21156662331
initialActions2019223
loadScripts16141324629453617362099
setupStore1757819222235722
numNetworkReqs57261963683129
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2180218218
srpButtonToSrpForm9019191
confirmSrpToPwForm2102122
pwFormToMetricsScreen1501515
metricsToWalletReadyScreen1511616
doneButtonToHomeScreen94429912541329
openAccountMenuToAccountListLoaded70599070107214
total847639288278857
Onboarding New WalletcreateWalletToSocialScreen2201220221
srpButtonToPwForm1166120125
createPwToRecoveryScreen9099
skipBackupToMetricsScreen3903939
agreeButtonToOnboardingSuccess1701718
doneButtonToAssetList103640113451423
total143540317501815
Asset DetailsassetClickToPriceChart3933943
total3933943
Solana Asset DetailsassetClickToPriceChart4614747
total4614747
Import Srp HomeloginToHomeScreen19324819322006
openAccountMenuAfterLogin4524747
homeAfterImportWithNewWallet253221526402897
total455024948254872
Send TransactionsopenSendPageFromHome1922121
selectTokenToSendFormLoaded1911920
reviewTransactionToConfirmationPage85913870873
total9103914914
SwapopenSwapPageFromHome1207124130
fetchAndDisplaySwapQuotes531088863846411
total542988864926541
🌐 Dapp Page Load Benchmarks

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

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.07s (±47ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 723ms (±42ms) 🟢 | historical mean value: 726ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 82ms (±13ms) 🟢 | historical mean value: 80ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.07s 47ms 1.03s 1.41s 1.12s 1.41s
domContentLoaded 723ms 42ms 694ms 1.03s 755ms 1.03s
firstPaint 82ms 13ms 72ms 196ms 96ms 196ms
firstContentfulPaint 82ms 13ms 72ms 196ms 96ms 196ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: -44 Bytes (0%)
  • common: 20 Bytes (0%)

let enabled = false;
///: BEGIN:ONLY_INCLUDE_IF(bitcoin)
enabled = isMultichainFeatureEnabled(bitcoinAccounts);
///: END:ONLY_INCLUDE_IF
Copy link

Choose a reason for hiding this comment

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

Dead code pattern left from fence removal

Low Severity

After removing the bitcoin and tron code fences, getIsBitcoinSupportEnabled and getIsTronSupportEnabled retain a let enabled = false; enabled = ... pattern with a now-stale comment "When bitcoin is not enabled, always return false." The initial false assignment is dead code since the next line always overwrites it. Compare with getIsSolanaSupportEnabled which cleanly returns the result directly. These selectors can be simplified to match that pattern.

Additional Locations (1)

Fix in Cursor Fix in Web

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is a much larger issue to be resolved later, I put it in a TODO

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 23, 2026

Builds ready [5d4bac7]
⚡ Performance Benchmarks (1405 ± 106 ms)
👆 Interaction Benchmarks
ActionMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account28016293304
total28016293304
Confirm Txconfirm_tx60802760956110
total60802760956110
Bridge User Actionsbridge_load_page2826291291
bridge_load_asset_picker20039216257
bridge_search_token72015732738
total11885012361239
🔌 Startup Benchmarks
BuildMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
Chrome Browserify Startup Standard HomeuiStartup14051181182910614531589
load1191993160110412301377
domContentLoaded1183989154410012231348
domInteractive2917118212485
firstPaint178651550191219349
backgroundConnect20819125814212240
firstReactRender20124352229
initialActions106113
loadScripts992802134210010301158
setupStore1373561525
numNetworkReqs312290192280
Chrome Browserify Startup Power User HomeuiStartup2770146710826186536776220
load12151015168614512821515
domContentLoaded11971007165214312591510
domInteractive3520187243488
firstPaint214741615196261362
backgroundConnect975253945415816402819
firstReactRender25176882838
initialActions104112
loadScripts989813144213910411303
setupStore1564471727
numNetworkReqs77401442493117
Chrome Webpack Startup Standard HomeuiStartup83368411411038731072
load70860991984752873
domContentLoaded70360591183747868
domInteractive2715108202377
firstPaint1105841454145195
backgroundConnect27195273141
firstReactRender18115072031
initialActions105112
loadScripts70060390482745859
setupStore1164051118
numNetworkReqs322296212589
Chrome Webpack Startup Power User HomeuiStartup1253864232323213291591
load75163613281187451036
domContentLoaded74163013221187331029
domInteractive41182303438126
firstPaint16168977113184309
backgroundConnect16913246445167237
firstReactRender22173432429
initialActions101011
loadScripts73862813141167311019
setupStore1357081519
numNetworkReqs1243526146148205
Firefox Browserify Startup Standard HomeuiStartup17871521273127317802553
load15081279242323715152186
domContentLoaded15071275242323715092186
domInteractive843423942111141
firstPaint------
backgroundConnect63302813165111
firstReactRender14122121517
initialActions102122
loadScripts14791257238923414912155
setupStore218182241857
numNetworkReqs322097192779
Firefox Browserify Startup Power User HomeuiStartup29862216880395830643669
load17091328694982616142150
domContentLoaded17091324694882616132150
domInteractive14334728122135417
firstPaint------
backgroundConnect42311214443126271000
firstReactRender201481102027
initialActions2155523
loadScripts16671312682481515802081
setupStore17110791207217673
numNetworkReqs78261713693157
Firefox Webpack Startup Standard HomeuiStartup18091452339532817962126
load15171292294326115271743
domContentLoaded15161292294326115271743
domInteractive115311521148134186
firstPaint------
backgroundConnect66272263674125
firstReactRender16133031724
initialActions103122
loadScripts14911277286725615051717
setupStore237187271962
numNetworkReqs301981152770
Firefox Webpack Startup Power User HomeuiStartup27762071868173528773620
load16181274679359915532186
domContentLoaded16171274679259815522186
domInteractive172351100202148702
firstPaint------
backgroundConnect36111212482875251048
firstReactRender21157282329
initialActions207123
loadScripts15821248675659415202167
setupStore15112743171159582
numNetworkReqs76282264580197
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2181219221
srpButtonToSrpForm8908989
confirmSrpToPwForm2102121
pwFormToMetricsScreen1401515
metricsToWalletReadyScreen1501616
doneButtonToHomeScreen747125815909
openAccountMenuToAccountListLoaded750352278258051
total895012890049092
Onboarding New WalletcreateWalletToSocialScreen2182219220
srpButtonToPwForm1075111114
createPwToRecoveryScreen8088
skipBackupToMetricsScreen3413535
agreeButtonToOnboardingSuccess1511616
doneButtonToAssetList92926511411182
total131226515141564
Asset DetailsassetClickToPriceChart622684102
total622684102
Solana Asset DetailsassetClickToPriceChart5065560
total5065560
Import Srp HomeloginToHomeScreen210015222432273
openAccountMenuAfterLogin4845153
homeAfterImportWithNewWallet258716526502865
total48397848874938
Send TransactionsopenSendPageFromHome25103637
selectTokenToSendFormLoaded1901919
reviewTransactionToConfirmationPage8535855859
total89713910915
SwapopenSwapPageFromHome12113129138
fetchAndDisplaySwapQuotes46597247314759
total47807548454888
🌐 Dapp Page Load Benchmarks

Current Commit: 5d4bac7 | Date: 2/23/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±38ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 714ms (±35ms) 🟢 | historical mean value: 735ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±12ms) 🟢 | historical mean value: 80ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 38ms 1.00s 1.31s 1.04s 1.31s
domContentLoaded 714ms 35ms 693ms 982ms 731ms 982ms
firstPaint 75ms 12ms 60ms 176ms 84ms 176ms
firstContentfulPaint 75ms 12ms 60ms 176ms 84ms 176ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: -44 Bytes (0%)
  • common: 20 Bytes (0%)

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 23, 2026

Builds ready [5359478]
⚡ Performance Benchmarks (1433 ± 107 ms)
👆 Interaction Benchmarks
ActionMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account28215298301
total28215298301
Confirm Txconfirm_tx60813660926135
total60813660926135
Bridge User Actionsbridge_load_page25423271289
bridge_load_asset_picker1692171171
bridge_search_token7022703704
total1108611111115
🔌 Startup Benchmarks
BuildMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
Chrome Browserify Startup Standard HomeuiStartup14331211190710714761638
load12051020163910112531370
domContentLoaded11981011163210012471360
domInteractive2817119192579
firstPaint183681377178215342
backgroundConnect20919425313210237
firstReactRender19134552026
initialActions105113
loadScripts1006816143310010541171
setupStore1364561720
numNetworkReqs312287192284
Chrome Browserify Startup Power User HomeuiStartup20241346824697518754064
load11461016169414511361534
domContentLoaded11321007165614311311523
domInteractive36201742933114
firstPaint1857443181257313
backgroundConnect46725536285373081610
firstReactRender23155672635
initialActions104112
loadScripts93181513621359331298
setupStore1664881830
numNetworkReqs66341622675115
Chrome Webpack Startup Standard HomeuiStartup84568311991068991071
load72360495590794867
domContentLoaded71860095089789861
domInteractive2615122202377
firstPaint1116129053144204
backgroundConnect26195072938
firstReactRender18123662030
initialActions103112
loadScripts71559894388787854
setupStore1163541219
numNetworkReqs312296202590
Chrome Webpack Startup Power User HomeuiStartup1233882182417913301581
load73263911861127181050
domContentLoaded72263211771137061045
domInteractive40192093537127
firstPaint1436258282179289
backgroundConnect16613332935165246
firstReactRender22173442428
initialActions103111
loadScripts71963011701107041038
setupStore1344871418
numNetworkReqs1234226448146234
Firefox Browserify Startup Standard HomeuiStartup16381430226715516731969
load13781190178811914191610
domContentLoaded13771190178811914191609
domInteractive71332564487146
firstPaint------
backgroundConnect6029391376290
firstReactRender13121921417
initialActions102022
loadScripts13491164176411113901559
setupStore187152251551
numNetworkReqs3120101212592
Firefox Browserify Startup Power User HomeuiStartup26711979370735528393338
load15211270225220316021934
domContentLoaded15211270225220316021934
domInteractive1243546095115349
firstPaint------
backgroundConnect3211061047264389899
firstReactRender201473101826
initialActions203122
loadScripts14841248221019415251887
setupStore1327770183137628
numNetworkReqs67281713782145
Firefox Webpack Startup Standard HomeuiStartup16871414320928517162006
load14361204294927014451605
domContentLoaded14351199294327014451605
domInteractive111291694168131186
firstPaint------
backgroundConnect53211862955105
firstReactRender15116551519
initialActions102122
loadScripts14131185293426914261580
setupStore206159261550
numNetworkReqs301993162774
Firefox Webpack Startup Power User HomeuiStartup26641898751660528293393
load15591267581648316352069
domContentLoaded15581267581648316352068
domInteractive14233858167106583
firstPaint------
backgroundConnect256961018200276740
firstReactRender21169292228
initialActions103122
loadScripts15181242577847315911935
setupStore17481089214244605
numNetworkReqs66291913788137
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2205227227
srpButtonToSrpForm9019192
confirmSrpToPwForm2102121
pwFormToMetricsScreen1401515
metricsToWalletReadyScreen1501516
doneButtonToHomeScreen60057584696
openAccountMenuToAccountListLoaded696312470617111
total821431383728752
Onboarding New WalletcreateWalletToSocialScreen2161216217
srpButtonToPwForm1011102103
createPwToRecoveryScreen8088
skipBackupToMetricsScreen3403434
agreeButtonToOnboardingSuccess1501515
doneButtonToAssetList711196888994
total108619512611370
Asset DetailsassetClickToPriceChart3513637
total3513637
Solana Asset DetailsassetClickToPriceChart5715858
total5715858
Import Srp HomeloginToHomeScreen200113921462187
openAccountMenuAfterLogin4374753
homeAfterImportWithNewWallet24383924712481
total454924747114959
Send TransactionsopenSendPageFromHome2021923
selectTokenToSendFormLoaded1902020
reviewTransactionToConfirmationPage8472848850
total8929901904
SwapopenSwapPageFromHome13315134156
fetchAndDisplaySwapQuotes46674747224723
total48052348114840
🌐 Dapp Page Load Benchmarks

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

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.02s (±39ms) 🟡 | historical mean value: 1.06s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 714ms (±36ms) 🟢 | historical mean value: 738ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±11ms) 🟢 | historical mean value: 81ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.02s 39ms 998ms 1.31s 1.06s 1.31s
domContentLoaded 714ms 36ms 689ms 978ms 753ms 978ms
firstPaint 75ms 11ms 56ms 164ms 88ms 164ms
firstContentfulPaint 75ms 11ms 56ms 164ms 88ms 164ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: -45.05 KiB (-1.03%)
  • ui: -178 Bytes (0%)
  • common: -46.28 KiB (-0.41%)

n3ps
n3ps previously approved these changes Feb 24, 2026

///: END:ONLY_INCLUDE_IF

UnifiedTransactionList.propTypes = {
Copy link
Contributor

Choose a reason for hiding this comment

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

This file will be retired soon-ish but no harm cleaning it up now

Other changes for extension UX LGTM

@MajorLift
Copy link
Contributor

Looks like these instances are missing from the diff:

@HowardBraham
Copy link
Contributor Author

Looks like these instances are missing from the diff:

@MajorLift Oy, these aren't a hard merge conflict but basically a soft merge conflict.  Someone added these new ones.  How do we deal with this?

@MajorLift
Copy link
Contributor

MajorLift commented Feb 25, 2026

We should aim to have the codebase free of all targeted code fences at the time this merges, no? If so, incoming regressions from the main branch will need to be resolved here. This unfortunately makes gathering CO approvals really tedious since they can be dismissed at any time.

That said I'm not opposed to cleaning these up in a follow-up PR. I think the only thing to keep in mind would be that if keyring-snaps is removed from builds.yml, codeFenceLoader will strip any remaining fenced code, which will break things in production, so we'll just need to make sure there are no remaining fences before crossing that bridge.

@HowardBraham
Copy link
Contributor Author

@MajorLift even once this merges, it doesn't contain a mechanism to stop people from putting new code fences in.

I also don't know the alternative to this block in builds.yml

  keyring-snaps:
    assets:
      - src: ./node_modules/@metamask/message-signing-snap/dist/preinstalled-snap.json
        dest: snaps/message-signing-snap.json
      - src: ./node_modules/@metamask/ens-resolver-snap/dist/preinstalled-snap.json
        dest: snaps/ens-resolver-snap.json
      - src: ./node_modules/@metamask/institutional-wallet-snap/dist/preinstalled-snap.json
        dest: snaps/institutional-wallet-snap.json
      - src: ./node_modules/@metamask/solana-wallet-snap/dist/preinstalled-snap.json
        dest: snaps/solana-wallet-snap.json
      - src: ./node_modules/@metamask/permissions-kernel-snap/dist/preinstalled-snap.json
        dest: snaps/permissions-kernel-snap.json
      - src: ./node_modules/@metamask/gator-permissions-snap/dist/preinstalled-snap.json
        dest: snaps/gator-permissions-snap.json
      - ./{app,shared,ui}/**/keyring-snaps/**

davidmurdoch
davidmurdoch 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 2 potential issues.

@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
65.4% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 25, 2026

Builds ready [371c87f]
⚡ Performance Benchmarks (1409 ± 114 ms)
👆 Interaction Benchmarks
ActionMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account27612273296
total27612273296
Confirm Txconfirm_tx60441860506076
total60441860506076
Bridge User Actionsbridge_load_page2572259259
bridge_load_asset_picker24320251270
bridge_search_token73310743743
total12341312411245
🔌 Startup Benchmarks
BuildMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
Chrome Browserify Startup Standard HomeuiStartup14091178185911414431642
load11861003158410312111398
domContentLoaded1178997155410012061363
domInteractive2817120202482
firstPaint163701217130216281
backgroundConnect21419542931211242
firstReactRender20134052128
initialActions107124
loadScripts98280113349410071172
setupStore1363751622
numNetworkReqs312290202285
Chrome Browserify Startup Power User HomeuiStartup17871456246215218272108
load11901076189514111861528
domContentLoaded11781071188414011771480
domInteractive3719273353767
firstPaint216731912194269356
backgroundConnect29925938922306337
firstReactRender23155572535
initialActions104113
loadScripts95786216651409471264
setupStore1695081830
numNetworkReqs57281472364123
Chrome Webpack Startup Standard HomeuiStartup88572113731039171107
load758632113492807914
domContentLoaded752627112891802907
domInteractive2917134222480
firstPaint1226730955147247
backgroundConnect28205573242
firstReactRender18123762031
initialActions103112
loadScripts749625112090799900
setupStore1354161323
numNetworkReqs3122100212588
Chrome Webpack Startup Power User HomeuiStartup1288949189817313651590
load74064111201197311081
domContentLoaded73063611141197181076
domInteractive37191483035122
firstPaint1386853580161286
backgroundConnect18313238851186295
firstReactRender24173532530
initialActions103112
loadScripts72763411061177161067
setupStore1454661522
numNetworkReqs1093925552136242
Firefox Browserify Startup Standard HomeuiStartup16591370338629116792191
load13991163294724214251774
domContentLoaded13971162294124214231774
domInteractive79348729291180
firstPaint------
backgroundConnect65273364664165
firstReactRender13111911415
initialActions102112
loadScripts13681139291723414001667
setupStore206204331447
numNetworkReqs311998212592
Firefox Browserify Startup Power User HomeuiStartup28112089906975729363703
load16331341701760316492285
domContentLoaded16321341701660316482285
domInteractive12636697116112387
firstPaint------
backgroundConnect3221131496304286928
firstReactRender19147171822
initialActions103122
loadScripts15961320697959816102242
setupStore1349738183130580
numNetworkReqs63321613186116
Firefox Webpack Startup Standard HomeuiStartup16941472312219817281976
load14251219282217014621629
domContentLoaded14241217282117014621629
domInteractive963037057131183
firstPaint------
backgroundConnect61271923068105
firstReactRender15122921519
initialActions102012
loadScripts13991204278816814321610
setupStore217165281581
numNetworkReqs311992172777
Firefox Webpack Startup Power User HomeuiStartup27331970412943629343730
load15851247261632417722227
domContentLoaded15851242261632517712227
domInteractive13832790167107645
firstPaint------
backgroundConnect3071191564291256893
firstReactRender22166892333
initialActions103122
loadScripts15501234259231317422070
setupStore1877829247209747
numNetworkReqs62302133882139
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2192220222
srpButtonToSrpForm9529699
confirmSrpToPwForm2202222
pwFormToMetricsScreen1601516
metricsToWalletReadyScreen1711718
doneButtonToHomeScreen719157724974
openAccountMenuToAccountListLoaded748430776827850
total893013989859131
Onboarding New WalletcreateWalletToSocialScreen2202222222
srpButtonToPwForm1137119122
createPwToRecoveryScreen9099
skipBackupToMetricsScreen3824042
agreeButtonToOnboardingSuccess1701717
doneButtonToAssetList615115666779
total101512610721193
Asset DetailsassetClickToPriceChart65177980
total65177980
Solana Asset DetailsassetClickToPriceChart5225454
total5225454
Import Srp HomeloginToHomeScreen213622523392463
openAccountMenuAfterLogin4624848
homeAfterImportWithNewWallet23147023922394
total449529547744905
Send TransactionsopenSendPageFromHome1811820
selectTokenToSendFormLoaded2012021
reviewTransactionToConfirmationPage8637867875
total9057912915
SwapopenSwapPageFromHome1373141141
fetchAndDisplaySwapQuotes529886462516453
total543287264076588
🌐 Dapp Page Load Benchmarks

Current Commit: 371c87f | Date: 2/25/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 988ms (±44ms) 🟢 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 696ms (±61ms) 🟢 | historical mean value: 736ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 90ms (±123ms) 🟢 | historical mean value: 84ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 988ms 44ms 958ms 1.32s 1.02s 1.32s
domContentLoaded 696ms 61ms 665ms 1.25s 723ms 1.25s
firstPaint 90ms 123ms 64ms 1.32s 88ms 1.32s
firstContentfulPaint 90ms 123ms 64ms 1.32s 88ms 1.32s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: -188 Bytes (0%)
  • common: 20 Bytes (0%)

@davidmurdoch davidmurdoch merged commit c684162 into main Feb 25, 2026
178 of 179 checks passed
@davidmurdoch davidmurdoch deleted the refactor-always-on-fences branch February 25, 2026 21:15
@github-actions github-actions bot locked and limited conversation to collaborators Feb 25, 2026
@metamaskbot metamaskbot added the release-13.21.0 Issue or pull request that will be included in release 13.21.0 label Feb 25, 2026
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-L team-extension-platform Extension Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants