Skip to content

refactor(analytics): migrate core UX metrics consumers#43432

Merged
gauthierpetetin merged 2 commits into
mainfrom
refactor/analytics-phase-b-core-ux
Jun 15, 2026
Merged

refactor(analytics): migrate core UX metrics consumers#43432
gauthierpetetin merged 2 commits into
mainfrom
refactor/analytics-phase-b-core-ux

Conversation

@gauthierpetetin

@gauthierpetetin gauthierpetetin commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Description

Part 4 of the Analytics Phase B split (supersedes monolithic #43406).

Owner: @MetaMask/core-extension-ux

Reason: Core UX surfaces still depend on legacy metrics selectors.

Solution: Migrate home, privacy settings, multichain discover, delete-metametrics, metametrics-toggle, and visit-support modal to canonical analytics selectors.

Tri-state rule: Where old code used getParticipateInMetaMetrics for "metrics enabled", use getCompletedMetaMetricsOnboarding(state) && getOptedIn(state).

Depends on: #43430

Changelog

CHANGELOG entry: null

Related issues

Part of https://github.com/MetaMask/MetaMask-planning/issues/7331

Manual testing steps

  1. Run yarn start and toggle metrics in Settings → Privacy
  2. Verify home and discover links respect metrics state
  3. Test delete MetaMetrics data flow from privacy settings

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.

@mm-token-exchange-service

mm-token-exchange-service Bot commented Jun 11, 2026

Copy link
Copy Markdown

✨ Files requiring CODEOWNER review ✨

👨‍🔧 @MetaMask/core-extension-ux (13 files, +114 -61)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 funding-method-modal/
          • 📄 funding-method-modal.tsx +11 -6
        • 📁 global-menu-drawer/
          • 📄 useGlobalMenuSections.tsx +11 -6
        • 📁 menu-items/
          • 📄 discover-menu-item.stories.tsx +3 -2
          • 📄 discover-menu-item.tsx +11 -6
        • 📁 token-list-item/
          • 📄 stakeable-link.tsx +10 -5
    • 📁 pages/
      • 📁 home/
        • 📄 home.component.stories.tsx +1 -1
        • 📄 home.component.test.tsx +1 -1
        • 📄 home.component.tsx +3 -4
        • 📄 home.container.tsx +7 -3
      • 📁 settings/
        • 📁 privacy-tab/
          • 📄 data-collection-item.tsx +8 -3
          • 📄 delete-metametrics-data-item.test.tsx +33 -14
          • 📄 delete-metametrics-data-item.tsx +10 -5
          • 📄 metametrics-item.tsx +5 -5

@github-actions

Copy link
Copy Markdown
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

metamaskbotv2 Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor
Builds ready [05a1960]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 16 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 1ab4918 | Date: 6/11/2026 | Pipeline: 27327234769 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -18%
  • loadNewAccount/total: -18%
  • loadNewAccount/inp: +25%
  • bridgeUserActions/bridge_load_page: -11%
  • bridgeUserActions/longTaskCount: -38%
  • bridgeUserActions/longTaskTotalDuration: -18%
  • bridgeUserActions/longTaskMaxDuration: +18%
  • bridgeUserActions/tbt: +38%
  • bridgeUserActions/inp: +55%
  • loadNewAccount/load_new_account: +26%
  • loadNewAccount/total: +26%
  • loadNewAccount/inp: +25%
  • loadNewAccount/fcp: -59%
  • loadNewAccount/lcp: +1131%
  • confirmTx/confirm_tx: +10%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +10%
  • confirmTx/fcp: +16%
  • confirmTx/lcp: +1281%
  • bridgeUserActions/bridge_load_page: +271%
  • bridgeUserActions/bridge_load_asset_picker: +102%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +55%
  • bridgeUserActions/inp: -14%
  • bridgeUserActions/fcp: +13%
  • bridgeUserActions/lcp: +1181%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 confirmTx/FCP: p75 1.9s
  • 🟡 bridgeUserActions/FCP: p75 1.8s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -32%
  • startupStandardHome/load: -33%
  • startupStandardHome/domContentLoaded: -33%
  • startupStandardHome/domInteractive: -34%
  • startupStandardHome/backgroundConnect: -28%
  • startupStandardHome/firstReactRender: -34%
  • startupStandardHome/initialActions: -50%
  • startupStandardHome/loadScripts: -33%
  • startupStandardHome/setupStore: -32%
  • startupStandardHome/inp: -38%
  • startupStandardHome/fcp: -34%
  • startupStandardHome/lcp: -32%
  • startupPowerUserHome/uiStartup: +24%
  • startupPowerUserHome/load: +19%
  • startupPowerUserHome/domContentLoaded: +19%
  • startupPowerUserHome/domInteractive: +43%
  • startupPowerUserHome/backgroundConnect: -12%
  • startupPowerUserHome/loadScripts: +17%
  • startupPowerUserHome/fcp: +37%
  • startupPowerUserHome/lcp: +23%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 startupPowerUserHome/INP: p75 208ms
  • 🟡 startupPowerUserHome/LCP: p75 3.5s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
🟡 total
assetDetails
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/doneButtonToHomeScreen: -91%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -98%
  • onboardingImportWallet/longTaskCount: -77%
  • onboardingImportWallet/longTaskTotalDuration: -94%
  • onboardingImportWallet/longTaskMaxDuration: -91%
  • onboardingImportWallet/tbt: -99%
  • onboardingImportWallet/total: -90%
  • onboardingNewWallet/createPwToRecoveryScreen: +14%
  • onboardingNewWallet/skipBackupToMetricsScreen: +20%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +22%
  • onboardingNewWallet/longTaskCount: -38%
  • onboardingNewWallet/longTaskTotalDuration: -49%
  • onboardingNewWallet/tbt: -39%
  • assetDetails/assetClickToPriceChart: -18%
  • assetDetails/longTaskCount: +400%
  • assetDetails/longTaskTotalDuration: +317%
  • assetDetails/longTaskMaxDuration: +317%
  • assetDetails/total: -18%
  • assetDetails/lcp: +19%
  • assetDetails/cls: -94%
  • solanaAssetDetails/assetClickToPriceChart: -35%
  • solanaAssetDetails/total: -35%
  • solanaAssetDetails/cls: -84%
  • importSrpHome/loginToHomeScreen: -19%
  • importSrpHome/openAccountMenuAfterLogin: +37%
  • importSrpHome/homeAfterImportWithNewWallet: -38%
  • importSrpHome/longTaskCount: -32%
  • importSrpHome/longTaskTotalDuration: -25%
  • importSrpHome/longTaskMaxDuration: -16%
  • importSrpHome/tbt: -23%
  • importSrpHome/total: -34%
  • importSrpHome/inp: -38%
  • importSrpHome/cls: -40%
  • sendTransactions/selectTokenToSendFormLoaded: +35%
  • sendTransactions/reviewTransactionToConfirmationPage: +14%
  • sendTransactions/longTaskCount: +11%
  • sendTransactions/longTaskTotalDuration: +14%
  • sendTransactions/tbt: +23%
  • sendTransactions/total: +14%
  • sendTransactions/inp: -30%
  • sendTransactions/fcp: +22%
  • sendTransactions/cls: -87%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 assetDetails/INP: p75 208ms
  • 🟡 sendTransactions/FCP: p75 2.1s
  • 🟡 assetDetails/FCP: p75 1.8s
  • 🟡 importSrpHome/FCP: p75 1.9s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 245 Bytes (0%)
  • ui: 290 Bytes (0%)
  • common: 188 Bytes (0%)

Base automatically changed from refactor/analytics-phase-b-foundation to main June 11, 2026 14:49
@gauthierpetetin gauthierpetetin force-pushed the refactor/analytics-phase-b-core-ux branch from 05a1960 to ce3e1c1 Compare June 11, 2026 14:53
@metamaskbotv2

metamaskbotv2 Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor
Builds ready [ce3e1c1]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 19 pass · 🟡 6 warn · 🔴 0 fail)

Baseline (latest main): 86afca4 | Date: 6/11/2026 | Pipeline: 27355750672 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: +13%
  • loadNewAccount/total: +13%
  • loadNewAccount/inp: +23%
  • loadNewAccount/cls: -17%
  • confirmTx/inp: +12%
  • bridgeUserActions/longTaskCount: +67%
  • bridgeUserActions/longTaskTotalDuration: +39%
  • bridgeUserActions/tbt: -14%
  • loadNewAccount/load_new_account: +97%
  • loadNewAccount/total: +97%
  • loadNewAccount/inp: -12%
  • loadNewAccount/fcp: -51%
  • loadNewAccount/lcp: +1168%
  • confirmTx/confirm_tx: +10%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +10%
  • confirmTx/fcp: -46%
  • confirmTx/lcp: +1148%
  • bridgeUserActions/bridge_load_page: +197%
  • bridgeUserActions/bridge_load_asset_picker: +30%
  • bridgeUserActions/bridge_search_token: +23%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +34%
  • bridgeUserActions/inp: -45%
  • bridgeUserActions/fcp: -50%
  • bridgeUserActions/lcp: +1202%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 loadNewAccount/FCP: p75 1.9s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupPowerUserHome/numNetworkReqs: +49%
  • startupStandardHome/domInteractive: -28%
  • startupStandardHome/fcp: -25%
  • startupPowerUserHome/domInteractive: -16%
  • startupPowerUserHome/backgroundConnect: -31%
  • startupPowerUserHome/setupStore: -56%
  • startupPowerUserHome/numNetworkReqs: -19%
  • startupPowerUserHome/fcp: -17%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🔴 startupPowerUserHome/INP: p75 520ms
  • 🟡 startupPowerUserHome/LCP: p75 3.1s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
🟡 total
assetDetails
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: +15%
  • onboardingImportWallet/confirmSrpToPwForm: +16%
  • onboardingImportWallet/pwFormToMetricsScreen: +16%
  • onboardingImportWallet/metricsToWalletReadyScreen: +20%
  • onboardingImportWallet/doneButtonToHomeScreen: -85%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -98%
  • onboardingImportWallet/longTaskCount: -72%
  • onboardingImportWallet/longTaskTotalDuration: -92%
  • onboardingImportWallet/longTaskMaxDuration: -90%
  • onboardingImportWallet/tbt: -100%
  • onboardingImportWallet/total: -84%
  • onboardingNewWallet/skipBackupToMetricsScreen: +16%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +25%
  • onboardingNewWallet/doneButtonToAssetList: -22%
  • onboardingNewWallet/longTaskCount: -44%
  • onboardingNewWallet/longTaskTotalDuration: -40%
  • onboardingNewWallet/tbt: -32%
  • onboardingNewWallet/total: -18%
  • solanaAssetDetails/assetClickToPriceChart: -54%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/tbt: -100%
  • solanaAssetDetails/total: -54%
  • solanaAssetDetails/cls: -93%
  • importSrpHome/loginToHomeScreen: -18%
  • importSrpHome/openAccountMenuAfterLogin: +33%
  • importSrpHome/homeAfterImportWithNewWallet: -37%
  • importSrpHome/longTaskCount: -30%
  • importSrpHome/longTaskTotalDuration: -36%
  • importSrpHome/longTaskMaxDuration: -20%
  • importSrpHome/tbt: -39%
  • importSrpHome/total: -32%
  • importSrpHome/inp: -26%
  • sendTransactions/openSendPageFromHome: +11%
  • sendTransactions/selectTokenToSendFormLoaded: +21%
  • sendTransactions/longTaskTotalDuration: +16%
  • sendTransactions/tbt: +42%
  • sendTransactions/inp: -12%
  • sendTransactions/lcp: -14%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 sendTransactions/INP: p75 208ms
  • 🟡 assetDetails/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 246 Bytes (0%)
  • ui: 290 Bytes (0%)
  • common: 188 Bytes (0%)

@metamaskbotv2

metamaskbotv2 Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor
Builds ready [7804e27] [reused from ce3e1c1]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 19 pass · 🟡 6 warn · 🔴 0 fail)

Baseline (latest main): 86afca4 | Date: 6/11/2026 | Pipeline: 27360411569 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: +13%
  • loadNewAccount/total: +13%
  • loadNewAccount/inp: +23%
  • loadNewAccount/cls: -17%
  • confirmTx/inp: +12%
  • bridgeUserActions/longTaskCount: +67%
  • bridgeUserActions/longTaskTotalDuration: +39%
  • bridgeUserActions/tbt: -14%
  • loadNewAccount/load_new_account: +97%
  • loadNewAccount/total: +97%
  • loadNewAccount/inp: -12%
  • loadNewAccount/fcp: -51%
  • loadNewAccount/lcp: +1168%
  • confirmTx/confirm_tx: +10%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +10%
  • confirmTx/fcp: -46%
  • confirmTx/lcp: +1148%
  • bridgeUserActions/bridge_load_page: +197%
  • bridgeUserActions/bridge_load_asset_picker: +30%
  • bridgeUserActions/bridge_search_token: +23%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +34%
  • bridgeUserActions/inp: -45%
  • bridgeUserActions/fcp: -50%
  • bridgeUserActions/lcp: +1202%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 loadNewAccount/FCP: p75 1.9s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupPowerUserHome/numNetworkReqs: +49%
  • startupStandardHome/domInteractive: -28%
  • startupStandardHome/fcp: -25%
  • startupPowerUserHome/domInteractive: -16%
  • startupPowerUserHome/backgroundConnect: -31%
  • startupPowerUserHome/setupStore: -56%
  • startupPowerUserHome/numNetworkReqs: -19%
  • startupPowerUserHome/fcp: -17%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🔴 startupPowerUserHome/INP: p75 520ms
  • 🟡 startupPowerUserHome/LCP: p75 3.1s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
🟡 total
assetDetails
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: +15%
  • onboardingImportWallet/confirmSrpToPwForm: +16%
  • onboardingImportWallet/pwFormToMetricsScreen: +16%
  • onboardingImportWallet/metricsToWalletReadyScreen: +20%
  • onboardingImportWallet/doneButtonToHomeScreen: -85%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -98%
  • onboardingImportWallet/longTaskCount: -72%
  • onboardingImportWallet/longTaskTotalDuration: -92%
  • onboardingImportWallet/longTaskMaxDuration: -90%
  • onboardingImportWallet/tbt: -100%
  • onboardingImportWallet/total: -84%
  • onboardingNewWallet/skipBackupToMetricsScreen: +16%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +25%
  • onboardingNewWallet/doneButtonToAssetList: -22%
  • onboardingNewWallet/longTaskCount: -44%
  • onboardingNewWallet/longTaskTotalDuration: -40%
  • onboardingNewWallet/tbt: -32%
  • onboardingNewWallet/total: -18%
  • solanaAssetDetails/assetClickToPriceChart: -54%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/tbt: -100%
  • solanaAssetDetails/total: -54%
  • solanaAssetDetails/cls: -93%
  • importSrpHome/loginToHomeScreen: -18%
  • importSrpHome/openAccountMenuAfterLogin: +33%
  • importSrpHome/homeAfterImportWithNewWallet: -37%
  • importSrpHome/longTaskCount: -30%
  • importSrpHome/longTaskTotalDuration: -36%
  • importSrpHome/longTaskMaxDuration: -20%
  • importSrpHome/tbt: -39%
  • importSrpHome/total: -32%
  • importSrpHome/inp: -26%
  • sendTransactions/openSendPageFromHome: +11%
  • sendTransactions/selectTokenToSendFormLoaded: +21%
  • sendTransactions/longTaskTotalDuration: +16%
  • sendTransactions/tbt: +42%
  • sendTransactions/inp: -12%
  • sendTransactions/lcp: -14%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 sendTransactions/INP: p75 208ms
  • 🟡 assetDetails/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: 290 Bytes (0%)
  • common: 20 Bytes (0%)

Refresh slice from main-synced monolithic branch.
Main migrated home to TypeScript (home.component.tsx + home.container.tsx).
Apply isMetaMetricsEnabled tri-state selector changes to the new TSX files
and remove the obsolete home.container.js.

Co-authored-by: Cursor <cursoragent@cursor.com>
@mm-token-exchange-service

Copy link
Copy Markdown
Builds ready [8d3677e]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 18 pass · 🟡 7 warn · 🔴 0 fail)

Baseline (latest main): 5682526 | Date: 6/13/2026 | Pipeline: 27522508358 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
🟡 bridge_search_token

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: +22%
  • loadNewAccount/total: +22%
  • loadNewAccount/lcp: -18%
  • confirmTx/inp: -10%
  • bridgeUserActions/bridge_load_page: -21%
  • bridgeUserActions/tbt: -13%
  • bridgeUserActions/inp: -32%
  • bridgeUserActions/lcp: -11%
  • loadNewAccount/load_new_account: +68%
  • loadNewAccount/total: +68%
  • loadNewAccount/inp: +27%
  • loadNewAccount/lcp: +1120%
  • confirmTx/confirm_tx: +11%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +11%
  • confirmTx/lcp: +1099%
  • bridgeUserActions/bridge_load_page: +185%
  • bridgeUserActions/bridge_load_asset_picker: +45%
  • bridgeUserActions/bridge_search_token: +223%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +187%
  • bridgeUserActions/inp: -24%
  • bridgeUserActions/fcp: -48%
  • bridgeUserActions/lcp: +1185%
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/lcp: +10%
  • startupPowerUserHome/uiStartup: -18%
  • startupPowerUserHome/load: -18%
  • startupPowerUserHome/domContentLoaded: -18%
  • startupPowerUserHome/domInteractive: -19%
  • startupPowerUserHome/firstPaint: -12%
  • startupPowerUserHome/backgroundConnect: -13%
  • startupPowerUserHome/firstReactRender: -18%
  • startupPowerUserHome/loadScripts: -18%
  • startupPowerUserHome/setupStore: -22%
  • startupPowerUserHome/numNetworkReqs: +11%
  • startupPowerUserHome/longTaskTotalDuration: -18%
  • startupPowerUserHome/tbt: -17%
  • startupPowerUserHome/fcp: -17%
  • startupPowerUserHome/lcp: -12%
  • startupPowerUserHome/uiStartup: -14%
  • startupPowerUserHome/load: -20%
  • startupPowerUserHome/domContentLoaded: -20%
  • startupPowerUserHome/domInteractive: -19%
  • startupPowerUserHome/backgroundConnect: -54%
  • startupPowerUserHome/firstReactRender: -26%
  • startupPowerUserHome/loadScripts: -19%
  • startupPowerUserHome/setupStore: -34%
  • startupPowerUserHome/inp: -24%
  • startupPowerUserHome/fcp: -18%
  • startupPowerUserHome/lcp: -13%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 startupPowerUserHome/INP: p75 472ms
  • 🟡 startupPowerUserHome/LCP: p75 2.6s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
🟡 total
assetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/metricsToWalletReadyScreen: +11%
  • onboardingImportWallet/doneButtonToHomeScreen: -87%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -97%
  • onboardingImportWallet/longTaskCount: -77%
  • onboardingImportWallet/longTaskTotalDuration: -93%
  • onboardingImportWallet/longTaskMaxDuration: -90%
  • onboardingImportWallet/tbt: -99%
  • onboardingImportWallet/total: -86%
  • onboardingNewWallet/doneButtonToAssetList: -32%
  • onboardingNewWallet/longTaskCount: -55%
  • onboardingNewWallet/longTaskTotalDuration: -39%
  • onboardingNewWallet/longTaskMaxDuration: -16%
  • onboardingNewWallet/tbt: -46%
  • onboardingNewWallet/total: -27%
  • solanaAssetDetails/assetClickToPriceChart: -44%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/tbt: -100%
  • solanaAssetDetails/total: -44%
  • solanaAssetDetails/cls: -89%
  • importSrpHome/loginToHomeScreen: -24%
  • importSrpHome/openAccountMenuAfterLogin: +12%
  • importSrpHome/homeAfterImportWithNewWallet: -37%
  • importSrpHome/longTaskCount: -31%
  • importSrpHome/longTaskTotalDuration: -29%
  • importSrpHome/longTaskMaxDuration: -20%
  • importSrpHome/tbt: -42%
  • importSrpHome/total: -35%
  • importSrpHome/inp: -25%
  • sendTransactions/openSendPageFromHome: +63%
  • sendTransactions/selectTokenToSendFormLoaded: +53%
  • sendTransactions/cls: -89%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 assetDetails/FCP: p75 2.1s
  • 🟡 sendTransactions/INP: p75 232ms
  • 🟡 importSrpHome/FCP: p75 1.9s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: 293 Bytes (0%)
  • common: 20 Bytes (0%)

@gauthierpetetin gauthierpetetin marked this pull request as ready for review June 15, 2026 04:27
@gauthierpetetin gauthierpetetin requested a review from a team as a code owner June 15, 2026 04:27
@gauthierpetetin gauthierpetetin requested a review from Copilot June 15, 2026 04:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR continues the Analytics Phase B migration by refactoring core UX surfaces to stop reading legacy MetaMetrics state (participateInMetaMetrics, metaMetricsId) and instead consume canonical analytics selectors (analyticsId, optedIn, completedMetaMetricsOnboarding) while preserving the intended tri-state consent behavior.

Changes:

  • Migrates Privacy settings toggles and MetaMetrics data deletion flows to canonical consent/id selectors.
  • Updates Home and multichain navigation entrypoints (Discover/Stake/Funding modal/global menu) to build Portfolio URLs using analyticsId and the new consent gate.
  • Adjusts tests and Storybook fixtures to use the new canonical state shape.

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
ui/pages/settings/privacy-tab/metametrics-item.tsx Switches settings MetaMetrics toggle off legacy selector to canonical consent selectors.
ui/pages/settings/privacy-tab/delete-metametrics-data-item.tsx Updates “delete MetaMetrics data” item enablement gate to completed && optedIn && analyticsId.
ui/pages/settings/privacy-tab/delete-metametrics-data-item.test.tsx Updates selector mocks to match new consent/id selectors.
ui/pages/settings/privacy-tab/data-collection-item.tsx Gates marketing consent toggle disablement on completed && optedIn instead of legacy participation flag.
ui/pages/home/home.container.tsx Derives a canonical isMetaMetricsEnabled flag for Home from completed && optedIn.
ui/pages/home/home.component.tsx Renames prop usage to isMetaMetricsEnabled and updates conditional UI.
ui/pages/home/home.component.test.tsx Updates Home props builder for renamed MetaMetrics enabled prop.
ui/pages/home/home.component.stories.tsx Updates Storybook props for renamed MetaMetrics enabled prop.
ui/components/multichain/token-list-item/stakeable-link.tsx Uses canonical analytics id/consent to build Portfolio “stake” URL.
ui/components/multichain/menu-items/discover-menu-item.tsx Uses canonical analytics id/consent to build Portfolio “discover” URL and update deps.
ui/components/multichain/menu-items/discover-menu-item.stories.tsx Updates mock store to canonical analytics id + consent fields.
ui/components/multichain/global-menu-drawer/useGlobalMenuSections.tsx Migrates Portfolio URL generation inputs to canonical analytics id + consent fields.
ui/components/multichain/funding-method-modal/funding-method-modal.tsx Migrates Portfolio URL generation inputs to canonical analytics id + consent fields.
ui/components/app/modals/visit-support-data-consent-modal/visit-support-data.test.tsx Updates selector usage in tests from metaMetricsId to analyticsId.
ui/components/app/modals/visit-support-data-consent-modal/visit-support-data-consent-modal.tsx Uses analyticsId selector and renames internal param while preserving query key.
ui/components/app/metametrics-toggle/metametrics-toggle.tsx Switches settings MetaMetrics toggle off legacy selector to canonical consent selectors.
ui/components/app/delete-metametrics-data-button/delete-metametrics-data-button.tsx Migrates deletion button inputs to canonical selectors (id + consent).
ui/components/app/delete-metametrics-data-button/delete-metametrics-data-button.test.tsx Updates deletion button tests to mock canonical selectors.
Comments suppressed due to low confidence (3)

ui/components/app/delete-metametrics-data-button/delete-metametrics-data-button.test.tsx:132

  • This test claims to cover the “analytics/metametrics id not available” case, but it currently only mocks getOptedIn as false and never sets getAnalyticsId to null/undefined. If the button is disabled when analyticsId is missing (which the component UI already accounts for), add an explicit test setup for that scenario.
  // if user does not opt in to participate in metrics or for backup and sync, metametricsId will not be created.
  it('should disable the data deletion button when there is metametrics id not available', async () => {
    useSelectorMock.mockImplementation((selector) => {
      if (selector === getCompletedMetaMetricsOnboarding) {
        return true;
      }
      if (selector === getOptedIn) {
        return false;
      }
      return undefined;
    });

ui/pages/settings/privacy-tab/metametrics-item.tsx:103

  • The toggle value previously treated “unset” (onboarding incomplete) as off (participateInMetaMetrics === true). Using isOptedIn directly can diverge from that tri-state behavior; gate with onboarding completion to match the legacy UI semantics.
      <SettingsToggleItem
        title={t(PRIVACY_ITEMS.metametrics)}
        description={t('participateInMetaMetricsDescription')}
        value={isOptedIn}
        onToggle={handleToggle}
        dataTestId="participate-in-meta-metrics-input"
        containerDataTestId="participate-in-meta-metrics-toggle"
        disabled={!useExternalServices}
      />

ui/components/app/metametrics-toggle/metametrics-toggle.tsx:119

  • Gate the rendered toggle value with onboarding completion (participateInMetaMetrics === true) to match the previous getParticipateInMetaMetrics behavior.
          <ToggleButton
            value={isOptedIn}
            disabled={!useExternalServices}
            onToggle={(value) => handleUseParticipateInMetaMetrics(!value)}
            offLabel={t('off')}
            onLabel={t('on')}
          />

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread ui/pages/settings/privacy-tab/metametrics-item.tsx
Comment thread ui/pages/settings/privacy-tab/metametrics-item.tsx
Comment thread ui/components/app/metametrics-toggle/metametrics-toggle.tsx
Comment thread ui/components/app/metametrics-toggle/metametrics-toggle.tsx
Comment thread ui/pages/settings/privacy-tab/metametrics-item.tsx
Comment thread ui/pages/settings/privacy-tab/metametrics-item.tsx
Comment thread ui/components/app/metametrics-toggle/metametrics-toggle.tsx
Comment thread ui/components/app/metametrics-toggle/metametrics-toggle.tsx
@gauthierpetetin gauthierpetetin moved this to Needs dev review in PR review queue Jun 15, 2026
@gauthierpetetin gauthierpetetin self-assigned this Jun 15, 2026
@gauthierpetetin gauthierpetetin added this pull request to the merge queue Jun 15, 2026
@github-project-automation github-project-automation Bot moved this from Needs dev review to Review finalised - Ready to be merged in PR review queue Jun 15, 2026
Merged via the queue into main with commit 5836bf1 Jun 15, 2026
203 checks passed
@gauthierpetetin gauthierpetetin deleted the refactor/analytics-phase-b-core-ux branch June 15, 2026 10:14
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 15, 2026
@metamaskbot metamaskbot added the release-13.37.0 Issue or pull request that will be included in release 13.37.0 label Jun 15, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.37.0 Issue or pull request that will be included in release 13.37.0 risk:medium size-M team-extension-platform Extension Platform team

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants