Skip to content

chore: bump RemoteFeatureFlagController#40480

Open
Prithpal-Sooriya wants to merge 9 commits intomainfrom
chore/bump-remote-feature-flag-controller
Open

chore: bump RemoteFeatureFlagController#40480
Prithpal-Sooriya wants to merge 9 commits intomainfrom
chore/bump-remote-feature-flag-controller

Conversation

@Prithpal-Sooriya
Copy link
Contributor

@Prithpal-Sooriya Prithpal-Sooriya commented Feb 27, 2026

Description

Bump @metamask/remote-feature-flag-controller from ^3.0.0 to ^4.1.0

Open in GitHub Codespaces

Changelog

CHANGELOG entry: chore: bump RemoteFeatureFlagController

Related issues

Fixes: https://consensyssoftware.atlassian.net/browse/ASSETS-2804

Manual testing steps

  1. Go to this page...

Screenshots/Recordings

Before

After

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
Upgrades the remote feature flag dependency and updates initialization/state shape, which can affect feature gating behavior and persisted state compatibility. Risk is moderated by mostly test/fixture/policy updates but touches runtime flag fetching and controller config.

Overview
Bumps @metamask/remote-feature-flag-controller from ^3.0.0 to ^4.1.0, including a yarn.lock update and LavaMoat policy changes to allow the TextEncoder global.

Updates RemoteFeatureFlagController initialization to pass through prevClientVersion from persisted AppMetadataController state, and refreshes unit/E2E tests + fixtures for the controller’s expanded state shape (e.g. localOverrides, rawRemoteFeatureFlags, thresholdCache) and updated mock flag payloads.

Improves E2E state-log validation by adding wildcard key support (e.g. metamask.thresholdCache.*) and adjusts a metrics E2E assertion to match the fixture identity count.

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

@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.

getMetaMetricsId: () =>
initMessenger.call('MetaMetricsController:getMetaMetricsId'),
clientVersion: getBaseSemVerVersion(),
prevClientVersion,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

New change from 4.1.0. See preview extension PR

@socket-security
Copy link

socket-security bot commented Feb 27, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​metamask/​remote-feature-flag-controller@​3.0.0 ⏵ 4.1.09910076 +193 -2100

View full report

Comment on lines +1977 to +1979
"globals": {
"TextEncoder": true
},
Copy link
Contributor Author

Choose a reason for hiding this comment

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

TextEncoded is now being used in this package version (code)

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 27, 2026

✨ Files requiring CODEOWNER review ✨

👨‍🔧 @MetaMask/extension-platform (2 files, +7 -3)
  • 📁 test/
    • 📁 e2e/
      • 📁 fixtures/
        • 📄 fixture-validation.ts +2 -0
        • 📄 onboarding-fixture.json +5 -3

🕵️ @MetaMask/extension-privacy-reviewers (1 files, +18 -0)
  • 📁 test/
    • 📁 e2e/
      • 📁 tests/
        • 📁 settings/
          • 📄 state-logs.json +18 -0

📜 @MetaMask/policy-reviewers (8 files, +24 -0)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +3 -0
      • 📁 experimental/
        • 📄 policy.json +3 -0
      • 📁 flask/
        • 📄 policy.json +3 -0
      • 📁 main/
        • 📄 policy.json +3 -0
    • 📁 webpack/
      • 📁 mv2/
        • 📁 beta/
          • 📄 policy.json +3 -0
        • 📁 experimental/
          • 📄 policy.json +3 -0
        • 📁 flask/
          • 📄 policy.json +3 -0
        • 📁 main/
          • 📄 policy.json +3 -0

Tip

Follow the policy review process outlined in the LavaMoat Policy Review Process doc before expecting an approval from Policy Reviewers.


🧪 @MetaMask/qa (4 files, +79 -6)
  • 📁 test/
    • 📁 e2e/
      • 📁 fixtures/
        • 📄 fixture-validation.ts +2 -0
        • 📄 onboarding-fixture.json +5 -3
      • 📁 tests/
        • 📁 settings/
          • 📄 state-logs-helpers.ts +54 -3
          • 📄 state-logs.json +18 -0

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 27, 2026

Builds ready [9973c22]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2792682929279292
total2792682929279292
Confirm Txconfirm_tx605660476064660596064
total605660476064660596064
Bridge User Actionsbridge_load_page23619527533271275
bridge_load_asset_picker21218025526223255
bridge_search_token72770077432758774
total1175109213008612561300
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14551173188112015201674
load12211002157510412691397
domContentLoaded1214988156910312631390
domInteractive2916100192585
firstPaint167681366143213299
backgroundConnect21519530515217242
firstReactRender20135162136
initialActions107124
loadScripts1016802135510310651185
setupStore1474671727
numNetworkReqs312291202285
Power User HomeuiStartup226214299259132521384372
load11831045167713212251472
domContentLoaded11681033166812912051456
domInteractive3520132203566
firstPaint1777540783243329
backgroundConnect58926336237523352372
firstReactRender23164462535
initialActions105112
loadScripts95682514091259971253
setupStore1666191832
numNetworkReqs69381512580117
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2182172191218219
srpButtonToSrpForm93919519495
confirmSrpToPwForm21212202122
pwFormToMetricsScreen15151601616
metricsToWalletReadyScreen16161601616
doneButtonToHomeScreen1068690141724312021417
openAccountMenuToAccountListLoaded74847208782826776627828
total88868650902114689929021
Onboarding New WalletcreateWalletToSocialScreen2192162211219221
srpButtonToPwForm1071041112109111
createPwToRecoveryScreen889099
skipBackupToMetricsScreen35343613536
agreeButtonToOnboardingSuccess16161601616
doneButtonToAssetList579470739102653739
total965857112810310341128
Asset DetailsassetClickToPriceChart38354223942
total38354223942
Solana Asset DetailsassetClickToPriceChart48465225052
total48465225052
Import Srp HomeloginToHomeScreen1930188219974219571997
openAccountMenuAfterLogin41354744347
homeAfterImportWithNewWallet2197213122475122462247
total42204053446214242834462
Send TransactionsopenSendPageFromHome35303733737
selectTokenToSendFormLoaded19172011920
reviewTransactionToConfirmationPage8538498584858858
total9069029093909909
SwapopenSwapPageFromHome976712922106129
fetchAndDisplaySwapQuotes4660456747599347444759
total47614634488810948504888
🌐 Dapp Page Load Benchmarks

Current Commit: 9973c22 | Date: 2/27/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±74ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 751ms (±71ms) 🟢 | historical mean value: 733ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 82ms (±12ms) 🟢 | historical mean value: 84ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 74ms 1.01s 1.37s 1.31s 1.37s
domContentLoaded 751ms 71ms 708ms 1.06s 984ms 1.06s
firstPaint 82ms 12ms 68ms 188ms 92ms 188ms
firstContentfulPaint 82ms 12ms 68ms 188ms 92ms 188ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.91 KiB (0.04%)
  • ui: 5 Bytes (0%)
  • common: 20 Bytes (0%)

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 27, 2026

Builds ready [d4613a2]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account27226129313268293
total27226129313268293
Confirm Txconfirm_tx603960356044360416044
total603960356044360416044
Bridge User Actionsbridge_load_page23019526725242267
bridge_load_asset_picker19915923527208235
bridge_search_token72770474616734746
total1190110512365212281236
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14241195191711714591616
load11971004163010212411372
domContentLoaded118999916009912331361
domInteractive3218257302590
firstPaint1637352392213367
backgroundConnect21119328217213244
firstReactRender19123942028
initialActions107123
loadScripts99781313919910431165
setupStore1376481529
numNetworkReqs312289192284
Power User HomeuiStartup221714899451114121164223
load12331031203816912461633
domContentLoaded12141027189015612341590
domInteractive39201582538100
firstPaint208871693174264343
backgroundConnect54325736266883442511
firstReactRender261761102752
initialActions107113
loadScripts992826164315210101361
setupStore1765371832
numNetworkReqs68371452474119
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2192192200220220
srpButtonToSrpForm9796100297100
confirmSrpToPwForm27223863138
pwFormToMetricsScreen16161601616
metricsToWalletReadyScreen17171801718
doneButtonToHomeScreen1153807137720212681377
openAccountMenuToAccountListLoaded72817019763823874647638
total88238640913217688589132
Onboarding New WalletcreateWalletToSocialScreen2182182191218219
srpButtonToPwForm1071031103109110
createPwToRecoveryScreen889089
skipBackupToMetricsScreen36353713737
agreeButtonToOnboardingSuccess17161911719
doneButtonToAssetList57648563958611639
total9678721047649951047
Asset DetailsassetClickToPriceChart50475535355
total50475535355
Solana Asset DetailsassetClickToPriceChart54486255662
total54486255662
Import Srp HomeloginToHomeScreen1976188920517220422051
openAccountMenuAfterLogin49405765257
homeAfterImportWithNewWallet23262047265126426352651
total44314020474728246364747
Send TransactionsopenSendPageFromHome281240113740
selectTokenToSendFormLoaded19172112021
reviewTransactionToConfirmationPage8638558715865871
total9229199242923924
SwapopenSwapPageFromHome1079212311114123
fetchAndDisplaySwapQuotes4626457247336546234733
total4729467648255947294825
🌐 Dapp Page Load Benchmarks

Current Commit: d4613a2 | Date: 2/27/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±40ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 736ms (±38ms) 🟢 | historical mean value: 728ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 81ms (±13ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 40ms 1.02s 1.33s 1.08s 1.33s
domContentLoaded 736ms 38ms 714ms 1.00s 767ms 1.00s
firstPaint 81ms 13ms 64ms 200ms 88ms 200ms
firstContentfulPaint 81ms 13ms 64ms 200ms 88ms 200ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.72 KiB (0.03%)
  • ui: 5 Bytes (0%)
  • common: 20 Bytes (0%)

bergarces
bergarces previously approved these changes Feb 27, 2026
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 27, 2026

Builds ready [69a9694]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2712642754273275
total2712642754273275
Confirm Txconfirm_tx607060666075460756075
total607060666075460756075
Bridge User Actionsbridge_load_page25624027312257273
bridge_load_asset_picker1631621651165165
bridge_search_token7057007114706711
total1117110011321311301132
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14011186181210414321597
load117798715089312091352
domContentLoaded116998115039212051340
domInteractive281790182480
firstPaint1436939674201283
backgroundConnect20618925712208230
firstReactRender19134661930
initialActions106114
loadScripts98079513049110141148
setupStore1365361520
numNetworkReqs312290192383
Power User HomeuiStartup17381376247517517782060
load11471029172813811481515
domContentLoaded11341022171813611381497
domInteractive3619159243495
firstPaint1837750292252321
backgroundConnect29425349731305339
firstReactRender24155782543
initialActions104114
loadScripts92381315181329191263
setupStore1584451621
numNetworkReqs59381532557127
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2192162212220221
srpButtonToSrpForm100921149108114
confirmSrpToPwForm21212212222
pwFormToMetricsScreen15151501515
metricsToWalletReadyScreen16151701617
doneButtonToHomeScreen1071603144130312521441
openAccountMenuToAccountListLoaded74417215766719976667667
total8950886990176890179017
Onboarding New WalletcreateWalletToSocialScreen2182162191218219
srpButtonToPwForm1081041112109111
createPwToRecoveryScreen888088
skipBackupToMetricsScreen36353813738
agreeButtonToOnboardingSuccess16161601616
doneButtonToAssetList562480716100647716
total948862110710210311107
Asset DetailsassetClickToPriceChart43384944749
total43384944749
Solana Asset DetailsassetClickToPriceChart59586015960
total59586015960
Import Srp HomeloginToHomeScreen2135205522337021702233
openAccountMenuAfterLogin42404424244
homeAfterImportWithNewWallet2308227923472923472347
total45614335488922647764889
Send TransactionsopenSendPageFromHome281755153555
selectTokenToSendFormLoaded22212312223
reviewTransactionToConfirmationPage8508458586855858
total90188393520912935
SwapopenSwapPageFromHome987712619106126
fetchAndDisplaySwapQuotes460646054607146074607
total471947124732947324732
🌐 Dapp Page Load Benchmarks

Current Commit: 69a9694 | Date: 2/27/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±46ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 738ms (±43ms) 🟢 | historical mean value: 732ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±10ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 46ms 1.02s 1.37s 1.07s 1.37s
domContentLoaded 738ms 43ms 716ms 1.04s 757ms 1.04s
firstPaint 80ms 10ms 60ms 156ms 92ms 156ms
firstContentfulPaint 80ms 10ms 60ms 156ms 92ms 156ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.91 KiB (0.04%)
  • ui: 5 Bytes (0%)
  • common: 20 Bytes (0%)

@Prithpal-Sooriya
Copy link
Contributor Author

@metamaskbot update-e2e-fixture

@github-actions github-actions bot added size-L and removed size-S labels Feb 27, 2026
Comment on lines +3513 to +3514
localOverrides: {},
rawRemoteFeatureFlags: {},
Copy link
Contributor Author

Choose a reason for hiding this comment

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

RemoteFeatureFlagController 4.0.0 has added these additional state properties.

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 was modified by @metamaskbot to update fixtures.

"feature2": false,
"feature3": { "name": "groupC", "value": "valueC" }
}
"feature3": { "name": "groupA", "value": "valueA" }
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Need some confirmation here.
RemoteFeatureFlagController 4.0.0 changes the threshold implementation/logic, hence the changes to the state snapshots.

"feature1": true,
"feature2": false,
"feature3": { "name": "groupC", "value": "valueC" }
"feature3": { "name": "groupA", "value": "valueA" }
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Need some confirmation here.
RemoteFeatureFlagController 4.0.0 changes the threshold implementation/logic, hence the changes to the state snapshots.

"feature2": false,
"feature3": { "name": "groupC", "value": "valueC" }
}
"feature3": { "name": "groupA", "value": "valueA" }
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Need some confirmation here.
RemoteFeatureFlagController 4.0.0 changes the threshold implementation/logic, hence the changes to the state snapshots.

Comment on lines +13 to +14
// E2E Fixtures setup has 4 identities (1 EVM, 1 Solana, 1 Bitcoin, 1 Tron)
const METAMASK_IDENTITIES = 4;
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 baffled me.... Looking at the underlying logic and the fixtures, the test points to the number of identities, not accounts.

I'm not entirely sure why now this e2e test is failing though.

name: 'groupC',
value: 'valueC',
name: 'groupA',
value: 'valueA',
Copy link

Choose a reason for hiding this comment

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

Override test ineffective due to identical mock values

Low Severity

MOCK_REMOTE_FEATURE_FLAGS_RESPONSE.feature3 changed from groupC/valueC to groupA/valueA, which is now identical to MOCK_CUSTOMIZED_REMOTE_FEATURE_FLAGS.feature3. The E2E override test in remote-feature-flag.spec.ts validates {...MOCK_REMOTE_FEATURE_FLAGS_RESPONSE, ...MOCK_CUSTOMIZED_REMOTE_FEATURE_FLAGS}, which now produces the same result as the response alone. This makes the manifest-override test a no-op — it passes regardless of whether the override mechanism actually works. The customized mock needs a distinct value (e.g., groupB/valueB) to meaningfully test override behavior.

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.

Deleted this file as it has exports that are not used anywhere.

Comment on lines +171 to +172
name: 'groupA',
value: 'valueA',
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Need some confirmation here.
RemoteFeatureFlagController 4.0.0 changes the threshold implementation/logic, hence the changes were needed to this response constant.

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 27, 2026

Builds ready [7dc9f96]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account28326031422304314
total28326031422304314
Confirm Txconfirm_tx6061603660892360866089
total6061603660892360866089
Bridge User Actionsbridge_load_page21720122910220229
bridge_load_asset_picker1991982001200200
bridge_search_token71870173012729730
total1142111811611811581161
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14161176191311014461629
load1191100715929612221368
domContentLoaded1185100315679412181358
domInteractive2916112202682
firstPaint160721132126205307
backgroundConnect21019129016212238
firstReactRender20124462034
initialActions109124
loadScripts99281013579410271164
setupStore1364571625
numNetworkReqs312288192282
Power User HomeuiStartup2961150710413209237589078
load12401045172315413131591
domContentLoaded12231040169615112911575
domInteractive38181542735107
firstPaint203831205133258365
backgroundConnect9652677909127513193645
firstReactRender25175562735
initialActions105113
loadScripts1010818149014710651360
setupStore1654671730
numNetworkReqs77381412494125
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2232182315225231
srpButtonToSrpForm96959719697
confirmSrpToPwForm23222312323
pwFormToMetricsScreen16161701617
metricsToWalletReadyScreen17161911819
doneButtonToHomeScreen987686137130113331371
openAccountMenuToAccountListLoaded75627226786228078467862
total8949892189782189568978
Onboarding New WalletcreateWalletToSocialScreen2192172211220221
srpButtonToPwForm1061041102106110
createPwToRecoveryScreen888088
skipBackupToMetricsScreen35353503535
agreeButtonToOnboardingSuccess16161601616
doneButtonToAssetList59248773992583739
total9778671127949661127
Asset DetailsassetClickToPriceChart45415354353
total45415354353
Solana Asset DetailsassetClickToPriceChart51455755757
total51455755757
Import Srp HomeloginToHomeScreen1996193421338119822133
openAccountMenuAfterLogin504068115868
homeAfterImportWithNewWallet24332022277228027062772
total46084213495925847484959
Send TransactionsopenSendPageFromHome29173893738
selectTokenToSendFormLoaded19172011920
reviewTransactionToConfirmationPage8568498667857866
total90288892012906920
SwapopenSwapPageFromHome1251241271127127
fetchAndDisplaySwapQuotes52454554623580262206235
total53774658635979863476359
🌐 Dapp Page Load Benchmarks

Current Commit: 7dc9f96 | Date: 2/27/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±44ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 742ms (±41ms) 🟢 | historical mean value: 734ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 81ms (±12ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 44ms 1.02s 1.37s 1.11s 1.37s
domContentLoaded 742ms 41ms 715ms 1.03s 794ms 1.03s
firstPaint 81ms 12ms 64ms 180ms 96ms 180ms
firstContentfulPaint 81ms 12ms 64ms 180ms 96ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.91 KiB (0.04%)
  • ui: -15.35 KiB (-0.18%)
  • common: -770 Bytes (-0.01%)

Comment on lines +72 to +73
'data.RemoteFeatureFlagController.thresholdCache',
'data.RemoteFeatureFlagController.rawRemoteFeatureFlags',
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Excluding:

  1. thresholdCache uses the randomly generated address per run.
  2. rawRemoteFeatureFlags seems to be the actual raw feature flag results from our server, any changes in LD would invalidate this.

@github-actions github-actions bot added size-S and removed size-L labels Feb 27, 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.

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

getMetaMetricsId: () =>
initMessenger.call('MetaMetricsController:getMetaMetricsId'),
clientVersion: getBaseSemVerVersion(),
prevClientVersion,
Copy link

Choose a reason for hiding this comment

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

Unit test missing assertion for new prevClientVersion parameter

Medium Severity

The init function now extracts prevClientVersion from persistedState?.AppMetadataController?.currentAppVersion and passes it to the RemoteFeatureFlagController constructor, but the test named "passes the proper arguments to the controller" was not updated to assert prevClientVersion. Since the mock's persistedState is {}, prevClientVersion is undefined, and toHaveBeenCalledWith silently ignores undefined properties — so the test passes without verifying the new parameter. A regression removing prevClientVersion would go undetected.

Fix in Cursor Fix in Web

Triggered by project rule: MetaMask Extension - Cursor Rules

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 27, 2026

Builds ready [b4c42b3]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account29726832623313326
total29726832623313326
Confirm Txconfirm_tx604360366052660456052
total604360366052660456052
Bridge User Actionsbridge_load_page23021424111237241
bridge_load_asset_picker18715623129211231
bridge_search_token71169972511724725
total1137110311923411571192
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup13901161184911414141628
load1171985155810311961414
domContentLoaded1165982155210111881390
domInteractive2716110182479
firstPaint160681394140208259
backgroundConnect20619024511208232
firstReactRender19134852025
initialActions106124
loadScripts97479613581009971191
setupStore1374351619
numNetworkReqs312294202285
Power User HomeuiStartup3200143310558193340215848
load12641046176013412991528
domContentLoaded12441034169712812791512
domInteractive3720161263498
firstPaint1898651492268364
backgroundConnect12642638042173615643816
firstReactRender26175972840
initialActions107114
loadScripts1027844146612410481309
setupStore1765281932
numNetworkReqs86491412197128
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2202172243223224
srpButtonToSrpForm91909329393
confirmSrpToPwForm21212202222
pwFormToMetricsScreen15151601516
metricsToWalletReadyScreen16161601616
doneButtonToHomeScreen87559214113009511411
openAccountMenuToAccountListLoaded75957020802735078518027
total88388599905016589949050
Onboarding New WalletcreateWalletToSocialScreen2212182232222223
srpButtonToPwForm1101051144112114
createPwToRecoveryScreen989099
skipBackupToMetricsScreen37343923839
agreeButtonToOnboardingSuccess17161911819
doneButtonToAssetList989527144638413281446
total1383925183038217261830
Asset DetailsassetClickToPriceChart635177107377
total635177107377
Solana Asset DetailsassetClickToPriceChart50495325053
total50495325053
Import Srp HomeloginToHomeScreen19921851218811620482188
openAccountMenuAfterLogin463171145271
homeAfterImportWithNewWallet215821492167821672167
total42094002438313042754383
Send TransactionsopenSendPageFromHome19172012020
selectTokenToSendFormLoaded22192832128
reviewTransactionToConfirmationPage8568488625859862
total8958918983896898
SwapopenSwapPageFromHome12910914715145147
fetchAndDisplaySwapQuotes4591457346382745804638
total4715468947612947204761
🌐 Dapp Page Load Benchmarks

Current Commit: b4c42b3 | Date: 2/27/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±39ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 736ms (±37ms) 🟢 | historical mean value: 728ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 82ms (±11ms) 🟢 | historical mean value: 83ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 39ms 1.02s 1.33s 1.08s 1.33s
domContentLoaded 736ms 37ms 712ms 1.01s 759ms 1.01s
firstPaint 82ms 11ms 64ms 180ms 92ms 180ms
firstContentfulPaint 82ms 11ms 64ms 180ms 92ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.91 KiB (0.04%)
  • ui: 5 Bytes (0%)
  • common: 32 Bytes (0%)

add support for wildcard keys so we can still match statelogs as as much as possible.
@sonarqubecloud
Copy link

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Feb 27, 2026

Builds ready [cffeec7]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account28926631918298319
total28926631918298319
Confirm Txconfirm_tx604360346052760466052
total604360346052760466052
Bridge User Actionsbridge_load_page2792702845282284
bridge_load_asset_picker1291271332129133
bridge_search_token6996977002700700
total111011081111111111111
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14731217187512315221686
load12401024155310712851437
domContentLoaded12341021153910612811429
domInteractive301898192681
firstPaint1526943679195276
backgroundConnect21819633117224245
firstReactRender20126572232
initialActions107113
loadScripts1033822133010410741227
setupStore1565781726
numNetworkReqs312293202285
Power User HomeuiStartup19041394995190318622622
load1150990192317711521599
domContentLoaded1136982191517511421589
domInteractive36191842933103
firstPaint222661686195254350
backgroundConnect4172627619745323658
firstReactRender24155472536
initialActions105112
loadScripts92578715961669161359
setupStore1565271631
numNetworkReqs65381683072145
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2222212252222225
srpButtonToSrpForm95949719697
confirmSrpToPwForm23222302323
pwFormToMetricsScreen16151601616
metricsToWalletReadyScreen17161701717
doneButtonToHomeScreen945603129830212741298
openAccountMenuToAccountListLoaded76567238806236480608062
total8987888290897990639089
Onboarding New WalletcreateWalletToSocialScreen2202202200220220
srpButtonToPwForm1131101162114116
createPwToRecoveryScreen991001010
skipBackupToMetricsScreen40394004040
agreeButtonToOnboardingSuccess18171801818
doneButtonToAssetList71151510141868351014
total1110914141418512291414
Asset DetailsassetClickToPriceChart603685197285
total603685197285
Solana Asset DetailsassetClickToPriceChart49475114951
total49475114951
Import Srp HomeloginToHomeScreen20061891215210421092152
openAccountMenuAfterLogin40384324143
homeAfterImportWithNewWallet23792238253213524942532
total44034212448111244794481
Send TransactionsopenSendPageFromHome18172121921
selectTokenToSendFormLoaded20202102021
reviewTransactionToConfirmationPage8628598663866866
total90289191710903917
SwapopenSwapPageFromHome12511314512130145
fetchAndDisplaySwapQuotes4590456246232446024623
total4711467847533047254753
🌐 Dapp Page Load Benchmarks

Current Commit: cffeec7 | Date: 2/27/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.07s (±79ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 760ms (±77ms) 🟢 | historical mean value: 740ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 83ms (±15ms) 🟢 | historical mean value: 83ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.07s 79ms 1.03s 1.41s 1.31s 1.41s
domContentLoaded 760ms 77ms 716ms 1.09s 975ms 1.09s
firstPaint 83ms 15ms 72ms 212ms 96ms 212ms
firstContentfulPaint 83ms 15ms 72ms 212ms 96ms 212ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 2.27 KiB (0.04%)
  • ui: 679 Bytes (0.01%)
  • common: 3.64 KiB (0.03%)

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants