Skip to content

refactor(analytics): migrate orphan platform metrics UI events#44378

Merged
gauthierpetetin merged 2 commits into
mainfrom
refactor/analytics-migrate-orphan-platform-ui
Jul 14, 2026
Merged

refactor(analytics): migrate orphan platform metrics UI events#44378
gauthierpetetin merged 2 commits into
mainfrom
refactor/analytics-migrate-orphan-platform-ui

Conversation

@gauthierpetetin

@gauthierpetetin gauthierpetetin commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Description

Migrates remaining legacy MetaMetricsContext.trackEvent / trackMetaMetricsEvent call sites in the Platform (metametrics toggle, clear data, A/B test hook) domain to useAnalytics() + createEventBuilder (or trackAnalyticsEvent for Redux thunks).

Part of umbrella tracker #43885 (15e · Platform metrics UI).

Changelog

CHANGELOG entry: null

Related issues

Fixes:

Manual testing steps

  1. Build and load the extension (yarn start).
  2. Exercise the flows touched by this PR (see changed files).
  3. With MetaMetrics debug enabled, confirm events still fire with the same names and properties.

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

Low Risk
Refactor-only analytics instrumentation with tests locking event shape; no changes to metrics opt-in, deletion tasks, or user data handling behavior.

Overview
Platform settings analytics in the clear-metrics modal and participate-in-metrics toggle now go through useAnalytics() and createEventBuilder instead of MetaMetricsContext.trackEvent. Event names, categories, properties, and options such as excludeMetaMetricsId on deletion flows are unchanged—only the wiring API differs.

Tests mock useAnalytics and assert the built event payloads for enable/disable toggles, deletion requests, and deletion failures. The shared actions mock adds a no-op trackAnalyticsEvent for Redux/thunk callers.

Reviewed by Cursor Bugbot for commit 1e1609b. Bugbot is set up for automated code reviews on this repo. Configure here.

Part of analytics migration umbrella #43885 (15e · Platform metrics UI).
@metamask-ci

metamask-ci Bot commented Jul 13, 2026

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

Baseline (latest main): 1716549 | Date: 6/29/2026 | Pipeline: 29225506918 | Baseline logs

Metricschrome-webpackfirefox-webpack
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]

Regressions (🔴 1 failure)

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: -22%
  • loadNewAccount/total: -22%
  • bridgeUserActions/bridge_load_asset_picker: -13%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/inp: -14%
  • loadNewAccount/load_new_account: +68%
  • loadNewAccount/total: +68%
  • loadNewAccount/lcp: +1164%
  • confirmTx/confirm_tx: +13%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +13%
  • confirmTx/inp: +22%
  • confirmTx/fcp: +12%
  • confirmTx/lcp: +1259%
  • bridgeUserActions/bridge_load_page: +109%
  • bridgeUserActions/bridge_load_asset_picker: +99%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +195%
  • bridgeUserActions/inp: -14%
  • bridgeUserActions/fcp: +12%
  • bridgeUserActions/lcp: +1238%

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

  • 🟡 loadNewAccount/FCP: p75 1.8s
  • 🟡 confirmTx/FCP: p75 1.9s
  • 🟡 bridgeUserActions/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]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: +21%
  • startupStandardHome/backgroundConnect: +12%
  • startupStandardHome/firstReactRender: +213%
  • startupStandardHome/numNetworkReqs: +50%
  • startupStandardHome/domInteractive: +43%
  • startupStandardHome/firstReactRender: +317%
  • startupStandardHome/setupStore: +38%
  • startupStandardHome/fcp: +44%
  • startupPowerUserHome/domInteractive: -31%
  • startupPowerUserHome/backgroundConnect: -19%
  • startupPowerUserHome/firstReactRender: +645%
  • startupPowerUserHome/setupStore: -42%
  • startupPowerUserHome/fcp: -29%

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

  • 🟡 startupPowerUserHome/LCP: p75 3.5s
User Journey Benchmarks · Samples: 5 · mock API 🔴 1
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: -18%
  • onboardingImportWallet/confirmSrpToPwForm: -14%
  • onboardingImportWallet/pwFormToMetricsScreen: -12%
  • onboardingImportWallet/metricsToWalletReadyScreen: -42%
  • onboardingImportWallet/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -98%
  • onboardingImportWallet/longTaskCount: -80%
  • onboardingImportWallet/longTaskTotalDuration: -94%
  • onboardingImportWallet/longTaskMaxDuration: -92%
  • onboardingImportWallet/tbt: -100%
  • onboardingImportWallet/total: -85%
  • onboardingNewWallet/srpButtonToPwForm: -19%
  • onboardingNewWallet/createPwToRecoveryScreen: -18%
  • onboardingNewWallet/skipBackupToMetricsScreen: -25%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: -38%
  • onboardingNewWallet/doneButtonToAssetList: -19%
  • onboardingNewWallet/longTaskCount: -100%
  • onboardingNewWallet/longTaskTotalDuration: -100%
  • onboardingNewWallet/longTaskMaxDuration: -100%
  • onboardingNewWallet/tbt: -100%
  • onboardingNewWallet/total: -18%
  • solanaAssetDetails/assetClickToPriceChart: -68%
  • solanaAssetDetails/total: -68%
  • solanaAssetDetails/inp: -24%
  • importSrpHome/loginToHomeScreen: -19%
  • importSrpHome/homeAfterImportWithNewWallet: -14%
  • importSrpHome/longTaskCount: -44%
  • importSrpHome/longTaskTotalDuration: -38%
  • importSrpHome/longTaskMaxDuration: +21%
  • importSrpHome/tbt: -40%
  • importSrpHome/total: -15%
  • importSrpHome/lcp: -49%
  • importSrpHome/cls: -47%
  • sendTransactions/openSendPageFromHome: -39%
  • sendTransactions/selectTokenToSendFormLoaded: -53%
  • sendTransactions/reviewTransactionToConfirmationPage: -30%
  • sendTransactions/longTaskCount: -100%
  • sendTransactions/longTaskTotalDuration: -100%
  • sendTransactions/longTaskMaxDuration: -100%
  • sendTransactions/tbt: -100%
  • sendTransactions/total: -30%
  • sendTransactions/inp: -19%
  • sendTransactions/lcp: -15%
  • sendTransactions/cls: -40%
  • swap/openSwapPageFromHome: -18%
  • swap/fetchAndDisplaySwapQuotes: +114%
  • swap/longTaskCount: -100%
  • swap/longTaskTotalDuration: -100%
  • swap/longTaskMaxDuration: -100%
  • swap/tbt: -100%
  • swap/total: +112%
  • swap/inp: +15%
  • swap/cls: -63%

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

  • 🟡 importSrpHome/INP: p75 280ms
  • 🟡 swap/INP: p75 336ms
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle sizes
  • background: 14.22 MiB
  • ui: 17.06 MiB
  • common: 0 Bytes
  • other: 998.07 KiB
  • contentScripts: 1.87 MiB
  • zip: 27.03 MiB
No matching bundle-size baseline was found in the history data, so diff values are omitted.

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

Drop useABTest from this PR to avoid changing experiment exposure semantics.
Add parity assertions for migrated toggle and deletion events, and make the
analytics action mock return a resolved promise.

Co-authored-by: Cursor <cursoragent@cursor.com>
@sonarqubecloud

Copy link
Copy Markdown

@metamask-ci

metamask-ci Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor
Builds ready [1e1609b]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 16 pass · 🟡 7 warn · 🔴 1 fail)

Baseline (latest main): 1716549 | Date: 6/29/2026 | Pipeline: 29240790459 | Baseline logs

Metricschrome-webpackfirefox-webpack
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]

Regressions (🔴 1 failure)

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
🔴 load_new_account
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: -20%
  • loadNewAccount/total: -20%
  • loadNewAccount/inp: +23%
  • bridgeUserActions/bridge_load_page: -30%
  • bridgeUserActions/bridge_load_asset_picker: -12%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/longTaskTotalDuration: -18%
  • bridgeUserActions/tbt: -20%
  • bridgeUserActions/inp: -14%
  • loadNewAccount/load_new_account: +627%
  • loadNewAccount/total: +627%
  • loadNewAccount/inp: -26%
  • loadNewAccount/lcp: +1113%
  • confirmTx/confirm_tx: +11%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +11%
  • confirmTx/fcp: -44%
  • confirmTx/lcp: +1155%
  • bridgeUserActions/bridge_load_page: +95%
  • bridgeUserActions/bridge_load_asset_picker: +91%
  • bridgeUserActions/bridge_search_token: +197%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +173%
  • bridgeUserActions/inp: -14%
  • bridgeUserActions/lcp: +1222%

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

  • 🟡 loadNewAccount/FCP: p75 1.8s
  • 🟡 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: +19%
  • startupStandardHome/backgroundConnect: +12%
  • startupStandardHome/firstReactRender: +207%
  • startupStandardHome/numNetworkReqs: +20%
  • startupStandardHome/domInteractive: -15%
  • startupStandardHome/firstReactRender: +302%
  • startupStandardHome/setupStore: +38%
  • startupStandardHome/fcp: -13%
  • startupPowerUserHome/uiStartup: -17%
  • startupPowerUserHome/load: -18%
  • startupPowerUserHome/domContentLoaded: -18%
  • startupPowerUserHome/domInteractive: -43%
  • startupPowerUserHome/backgroundConnect: -35%
  • startupPowerUserHome/firstReactRender: +486%
  • startupPowerUserHome/loadScripts: -17%
  • startupPowerUserHome/setupStore: -49%
  • startupPowerUserHome/inp: -23%
  • startupPowerUserHome/fcp: -41%
  • startupPowerUserHome/lcp: -23%

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

  • 🟡 startupPowerUserHome/LCP: p75 2.8s
User Journey Benchmarks · Samples: 5 · mock API 🔴 1
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: -16%
  • onboardingImportWallet/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -96%
  • onboardingImportWallet/longTaskCount: -80%
  • onboardingImportWallet/longTaskTotalDuration: -94%
  • onboardingImportWallet/longTaskMaxDuration: -91%
  • onboardingImportWallet/tbt: -99%
  • onboardingImportWallet/total: -85%
  • onboardingNewWallet/longTaskCount: -50%
  • onboardingNewWallet/longTaskTotalDuration: -63%
  • onboardingNewWallet/longTaskMaxDuration: -35%
  • onboardingNewWallet/tbt: -76%
  • solanaAssetDetails/assetClickToPriceChart: -56%
  • solanaAssetDetails/total: -56%
  • solanaAssetDetails/inp: -24%
  • importSrpHome/loginToHomeScreen: -20%
  • importSrpHome/openAccountMenuAfterLogin: +48%
  • importSrpHome/homeAfterImportWithNewWallet: -16%
  • importSrpHome/longTaskCount: -27%
  • importSrpHome/longTaskTotalDuration: -43%
  • importSrpHome/tbt: -42%
  • importSrpHome/total: -15%
  • importSrpHome/inp: +12%
  • importSrpHome/lcp: -54%
  • importSrpHome/cls: -47%
  • sendTransactions/openSendPageFromHome: -46%
  • sendTransactions/selectTokenToSendFormLoaded: -62%
  • sendTransactions/reviewTransactionToConfirmationPage: -21%
  • sendTransactions/longTaskCount: -100%
  • sendTransactions/longTaskTotalDuration: -100%
  • sendTransactions/longTaskMaxDuration: -100%
  • sendTransactions/tbt: -100%
  • sendTransactions/total: -21%
  • sendTransactions/inp: -32%
  • sendTransactions/fcp: -21%
  • sendTransactions/lcp: -19%
  • sendTransactions/cls: -40%
  • swap/openSwapPageFromHome: -18%
  • swap/fetchAndDisplaySwapQuotes: +103%
  • swap/longTaskCount: -100%
  • swap/longTaskTotalDuration: -100%
  • swap/longTaskMaxDuration: -100%
  • swap/tbt: -100%
  • swap/total: +100%
  • swap/fcp: -15%
  • swap/lcp: -12%
  • swap/cls: -63%

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

  • 🟡 importSrpHome/INP: p75 296ms
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 1.9s
  • 🟡 swap/FCP: p75 1.9s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: -21%
  • dappPageLoad/domContentLoaded: -16%
Bundle sizes
  • background: 14.22 MiB
  • ui: 17.07 MiB
  • common: 0 Bytes
  • other: 998.07 KiB
  • contentScripts: 1.87 MiB
  • zip: 27.03 MiB
No matching bundle-size baseline was found in the history data, so diff values are omitted.

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 MetaMetrics → Analytics migration by moving remaining “Platform metrics UI” event tracking call sites from legacy MetaMetricsContext.trackEvent usage to the newer useAnalytics() hook and createEventBuilder API, while updating unit tests and Jest action mocks accordingly.

Changes:

  • Migrated UI components to useAnalytics() + createEventBuilder for MetaMetrics opt-in/out and data deletion events.
  • Updated unit tests to mock useAnalytics() and assert the new built event payload shape.
  • Extended the Jest actions manual mock to include trackAnalyticsEvent to support useAnalytics-driven code paths in tests.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
ui/components/app/metametrics-toggle/metametrics-toggle.tsx Replaces MetaMetricsContext usage with useAnalytics() and event-builder-based tracking for opt-in/out events.
ui/components/app/metametrics-toggle/metametrics-toggle.test.tsx Adds useAnalytics mocking and asserts the built analytics event payloads for toggle flows.
ui/components/app/delete-metametrics-data-button/delete-metametrics-data-button.test.tsx Mocks useAnalytics() and resets tracking mock state to keep tests isolated from analytics implementation.
ui/components/app/clear-metametrics-data/clear-metametrics-data.tsx Switches data deletion success/error tracking to builder events (including excludeMetaMetricsId options).
ui/components/app/clear-metametrics-data/clear-metametrics-data.test.tsx Adds useAnalytics mocking and validates deletion/error events including options payload.
ui/mocks/actions.js Adds a trackAnalyticsEvent stub to the actions manual mock to support useAnalytics call sites during tests.

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

@gauthierpetetin
gauthierpetetin marked this pull request as ready for review July 13, 2026 11:30
@gauthierpetetin
gauthierpetetin added this pull request to the merge queue Jul 14, 2026
Merged via the queue into main with commit b400e49 Jul 14, 2026
213 checks passed
@gauthierpetetin
gauthierpetetin deleted the refactor/analytics-migrate-orphan-platform-ui branch July 14, 2026 01:57
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 14, 2026
@metamaskbot metamaskbot added the release-13.41.0 Issue or pull request that will be included in release 13.41.0 label Jul 14, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants