Skip to content

refactor(analytics): migrate earn/mUSD events#43888

Merged
gauthierpetetin merged 2 commits into
mainfrom
refactor/analytics-migrate-earn
Jul 2, 2026
Merged

refactor(analytics): migrate earn/mUSD events#43888
gauthierpetetin merged 2 commits into
mainfrom
refactor/analytics-migrate-earn

Conversation

@gauthierpetetin

@gauthierpetetin gauthierpetetin commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Description

Sub-PR of umbrella tracker #43885.

Migrates MetaMetrics trackEvent call sites in this CODEOWNERS domain to createEventBuilder + trackEvent via useAnalytics() (UI) or app/scripts/controllers/analytics (background).

Dependency note: Can merge in parallel with other domain PRs.

Files in this PR: 26

Changelog

CHANGELOG entry: null

Related issues

Part of analytics migration umbrella: #43885

Manual testing steps

  1. Check out this branch and run yarn start.
  2. Exercise flows in the touched domain (see diff file list).
  3. Confirm no console errors and representative events still fire.

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
Analytics-only refactor with no change to conversion, claim, or DeFi product logic; risk is mainly telemetry shape/pipeline regressions, covered by updated unit and integration tests.

Overview
This PR moves earn / mUSD and related DeFi analytics off legacy MetaMetricsContext / MetaMetricsController:trackEvent onto the shared createEventBuilder + trackEvent path (useAnalytics in UI, app/scripts/controllers/analytics in background).

UI: mUSD CTAs, claim badge, convert links, education screen, and transaction-status hooks now build events with the builder (name, category in properties, optional sensitiveProperties) instead of flat { event, category, properties } payloads.

Background: DeFiPositionsController gets a local trackEvent adapter that maps legacy controller payloads into built analytics events; the init messenger no longer delegates MetaMetricsController:trackEvent.

Tests: mocks switch from metametrics context to useAnalytics; integration DeFi tests assert trackAnalyticsEvent and the new event/options shape.

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

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

@metamask-ci metamask-ci Bot added the team-extension-platform Extension Platform team label Jun 25, 2026
@metamask-ci

metamask-ci Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

✨ Files requiring CODEOWNER review ✨

👨‍🔧 @MetaMask/earn (14 files, +239 -299)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 musd/
          • 📄 claim-bonus-badge.test.tsx +20 -31
          • 📄 claim-bonus-badge.tsx +25 -14
          • 📄 musd-asset-cta.test.tsx +10 -30
          • 📄 musd-asset-cta.tsx +29 -18
          • 📄 musd-buy-get-cta.test.tsx +10 -30
          • 📄 musd-buy-get-cta.tsx +10 -8
          • 📄 musd-convert-link.test.tsx +11 -31
          • 📄 musd-convert-link.tsx +22 -23
    • 📁 hooks/
      • 📁 musd/
        • 📄 useMerklClaimStatus.test.ts +9 -11
        • 📄 useMerklClaimStatus.ts +10 -16
        • 📄 useMusdConversionToastStatus.test.ts +9 -10
        • 📄 useMusdConversionToastStatus.ts +15 -16
    • 📁 pages/
      • 📁 musd/
        • 📁 screens/
          • 📄 education.test.tsx +12 -27
          • 📄 education.tsx +47 -34

💎 @MetaMask/metamask-assets (1 files, +17 -16)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 assets/
          • 📁 defi-list/
            • 📁 cells/
              • 📄 defi-protocol-cell.tsx +17 -16

@metamask-ci

metamask-ci Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor
Builds ready [07ff9bd]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 15 pass · 🟡 9 warn · 🔴 0 fail)

Baseline (latest main): d50b2dc | Date: 6/25/2026 | Pipeline: 28177677811 | 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/lcp: +12%
  • confirmTx/longTaskCount: +25%
  • confirmTx/longTaskTotalDuration: +28%
  • confirmTx/tbt: +31%
  • bridgeUserActions/bridge_load_asset_picker: +11%
  • bridgeUserActions/longTaskCount: +43%
  • bridgeUserActions/longTaskTotalDuration: +30%
  • bridgeUserActions/longTaskMaxDuration: +18%
  • bridgeUserActions/tbt: +53%
  • loadNewAccount/inp: -27%
  • loadNewAccount/fcp: -46%
  • loadNewAccount/lcp: +1073%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/inp: -21%
  • confirmTx/lcp: +1075%
  • bridgeUserActions/bridge_load_page: +152%
  • bridgeUserActions/bridge_load_asset_picker: +36%
  • bridgeUserActions/bridge_search_token: -10%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +25%
  • bridgeUserActions/lcp: +1156%

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

  • 🟡 loadNewAccount/FCP: p75 1.9s
  • 🟡 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/numNetworkReqs: +11%
  • startupStandardHome/domInteractive: -21%
  • startupStandardHome/fcp: -19%
  • startupPowerUserHome/backgroundConnect: -25%

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

  • 🟡 startupPowerUserHome/INP: p75 208ms
  • 🟡 startupPowerUserHome/LCP: p75 3.3s
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]
🟡 assetClickToPriceChart
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: -84%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -90%
  • onboardingImportWallet/longTaskCount: -77%
  • onboardingImportWallet/longTaskTotalDuration: -92%
  • onboardingImportWallet/longTaskMaxDuration: -89%
  • onboardingImportWallet/tbt: -97%
  • onboardingImportWallet/total: -84%
  • onboardingNewWallet/srpButtonToPwForm: +26%
  • onboardingNewWallet/doneButtonToAssetList: -29%
  • onboardingNewWallet/longTaskCount: -50%
  • onboardingNewWallet/longTaskTotalDuration: -56%
  • onboardingNewWallet/longTaskMaxDuration: -30%
  • onboardingNewWallet/tbt: -58%
  • onboardingNewWallet/total: -25%
  • solanaAssetDetails/assetClickToPriceChart: -59%
  • solanaAssetDetails/total: -59%
  • solanaAssetDetails/inp: -24%
  • solanaAssetDetails/lcp: -56%
  • solanaAssetDetails/cls: +10%
  • importSrpHome/loginToHomeScreen: -16%
  • importSrpHome/openAccountMenuAfterLogin: +56%
  • importSrpHome/homeAfterImportWithNewWallet: -36%
  • importSrpHome/longTaskCount: -31%
  • importSrpHome/longTaskTotalDuration: -31%
  • importSrpHome/longTaskMaxDuration: -26%
  • importSrpHome/tbt: -31%
  • importSrpHome/total: -33%
  • importSrpHome/inp: -41%
  • importSrpHome/lcp: +12%
  • importSrpHome/cls: -73%
  • sendTransactions/openSendPageFromHome: -35%
  • sendTransactions/reviewTransactionToConfirmationPage: +10%
  • sendTransactions/longTaskCount: -100%
  • sendTransactions/longTaskTotalDuration: -100%
  • sendTransactions/longTaskMaxDuration: -100%
  • sendTransactions/tbt: -100%
  • sendTransactions/inp: -23%
  • sendTransactions/lcp: -12%
  • sendTransactions/cls: -93%

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

  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.8s
  • 🟡 assetDetails/FCP: p75 2.0s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 65 Bytes (0%)
  • ui: 348 Bytes (0%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 0 Bytes (0%)
  • zip: 132 Bytes (0%)

@metamask-ci

metamask-ci Bot commented Jun 26, 2026

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

Baseline (latest main): 1e3d238 | Date: 6/25/2026 | Pipeline: 28216076087 | 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/inp: +35%
  • loadNewAccount/lcp: -13%
  • loadNewAccount/cls: -75%
  • confirmTx/inp: -14%
  • bridgeUserActions/bridge_load_asset_picker: +13%
  • bridgeUserActions/longTaskCount: +67%
  • bridgeUserActions/longTaskTotalDuration: +34%
  • loadNewAccount/load_new_account: +25%
  • loadNewAccount/total: +25%
  • loadNewAccount/inp: -21%
  • loadNewAccount/lcp: +1064%
  • confirmTx/confirm_tx: +13%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +13%
  • confirmTx/inp: -31%
  • confirmTx/fcp: -52%
  • confirmTx/lcp: +1152%
  • bridgeUserActions/bridge_load_page: +164%
  • bridgeUserActions/bridge_load_asset_picker: +76%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +44%
  • bridgeUserActions/inp: +67%
  • bridgeUserActions/fcp: -50%
  • bridgeUserActions/lcp: +1148%
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
🟡 loadScripts
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/domInteractive: +16%
  • startupStandardHome/numNetworkReqs: -22%
  • startupStandardHome/inp: +13%
  • startupStandardHome/domInteractive: -13%
  • startupStandardHome/firstReactRender: +11%
  • startupStandardHome/setupStore: -29%
  • startupStandardHome/fcp: -15%
  • startupPowerUserHome/domInteractive: +14%
  • startupPowerUserHome/backgroundConnect: +16%
  • startupPowerUserHome/setupStore: +32%
  • startupPowerUserHome/inp: +11%

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

  • 🟡 startupPowerUserHome/INP: p75 216ms
  • 🟡 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/metricsToWalletReadyScreen: -26%
  • onboardingImportWallet/doneButtonToHomeScreen: -77%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -100%
  • onboardingImportWallet/longTaskCount: -75%
  • onboardingImportWallet/longTaskTotalDuration: -89%
  • onboardingImportWallet/longTaskMaxDuration: -86%
  • onboardingImportWallet/tbt: -94%
  • onboardingImportWallet/total: -82%
  • onboardingNewWallet/skipBackupToMetricsScreen: +16%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +25%
  • onboardingNewWallet/doneButtonToAssetList: -30%
  • onboardingNewWallet/longTaskCount: -62%
  • onboardingNewWallet/longTaskTotalDuration: -50%
  • onboardingNewWallet/longTaskMaxDuration: -44%
  • onboardingNewWallet/tbt: -78%
  • onboardingNewWallet/total: -26%
  • solanaAssetDetails/assetClickToPriceChart: -67%
  • solanaAssetDetails/total: -67%
  • solanaAssetDetails/cls: +12%
  • importSrpHome/homeAfterImportWithNewWallet: -30%
  • importSrpHome/longTaskCount: -25%
  • importSrpHome/longTaskTotalDuration: -27%
  • importSrpHome/tbt: -33%
  • importSrpHome/total: -28%
  • importSrpHome/inp: -31%
  • importSrpHome/fcp: +11%
  • importSrpHome/lcp: +21%
  • importSrpHome/cls: -53%
  • sendTransactions/openSendPageFromHome: -28%
  • sendTransactions/selectTokenToSendFormLoaded: +129%
  • sendTransactions/longTaskCount: -100%
  • sendTransactions/longTaskTotalDuration: -100%
  • sendTransactions/longTaskMaxDuration: -100%
  • sendTransactions/tbt: -100%
  • sendTransactions/inp: -13%
  • sendTransactions/cls: -92%

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

  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.8s
  • 🟡 sendTransactions/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 480 Bytes (0%)
  • ui: 348 Bytes (0%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 0 Bytes (0%)
  • zip: 276 Bytes (0%)

@gauthierpetetin
gauthierpetetin force-pushed the refactor/analytics-migrate-earn branch from 7a7f4dc to bff443b Compare June 26, 2026 05:14
@gauthierpetetin
gauthierpetetin force-pushed the refactor/analytics-migrate-earn branch from bff443b to 81894c0 Compare June 26, 2026 05:29
@gauthierpetetin
gauthierpetetin force-pushed the refactor/analytics-migrate-earn branch from 81894c0 to 9a50f22 Compare June 26, 2026 06:01
@gauthierpetetin
gauthierpetetin force-pushed the refactor/analytics-migrate-earn branch from 9a50f22 to b83bad8 Compare June 26, 2026 06:12
@gauthierpetetin
gauthierpetetin force-pushed the refactor/analytics-migrate-earn branch from b83bad8 to b5c9d4b Compare June 26, 2026 06:17
@gauthierpetetin
gauthierpetetin force-pushed the refactor/analytics-migrate-earn branch from b5c9d4b to 5dae18f Compare June 26, 2026 07:19
@gauthierpetetin
gauthierpetetin force-pushed the refactor/analytics-migrate-earn branch from 5dae18f to 3be9b7a Compare June 26, 2026 07:59
@gauthierpetetin
gauthierpetetin force-pushed the refactor/analytics-migrate-earn branch from 3be9b7a to df61d09 Compare June 26, 2026 08:32
@metamask-ci

metamask-ci Bot commented Jun 28, 2026

Copy link
Copy Markdown
Contributor
Builds ready [d3cf6ff] [reused from 87113f4]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 17 pass · 🟡 7 warn · 🔴 0 fail)

Baseline (latest main): 04f852d | Date: 6/26/2026 | Pipeline: 28331673690 | 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: -19%
  • loadNewAccount/total: -19%
  • loadNewAccount/inp: +25%
  • confirmTx/tbt: -10%
  • confirmTx/inp: -18%
  • bridgeUserActions/bridge_load_page: -13%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/longTaskTotalDuration: -19%
  • bridgeUserActions/longTaskMaxDuration: -10%
  • bridgeUserActions/tbt: -24%
  • bridgeUserActions/inp: +12%
  • bridgeUserActions/lcp: -12%
  • loadNewAccount/load_new_account: +43%
  • loadNewAccount/total: +43%
  • loadNewAccount/inp: -38%
  • loadNewAccount/fcp: -71%
  • loadNewAccount/lcp: +1114%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/inp: -43%
  • confirmTx/fcp: -16%
  • confirmTx/lcp: +892%
  • bridgeUserActions/bridge_load_page: +31%
  • bridgeUserActions/bridge_load_asset_picker: +43%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +11%
  • bridgeUserActions/inp: +53%
  • bridgeUserActions/fcp: -59%
  • bridgeUserActions/lcp: +934%
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/setupStore: -16%
  • startupStandardHome/lcp: -40%
  • startupStandardHome/domInteractive: -16%
  • startupStandardHome/fcp: -15%
  • startupPowerUserHome/domInteractive: -14%
  • startupPowerUserHome/backgroundConnect: -34%
  • startupPowerUserHome/fcp: -17%

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

  • 🟡 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/srpButtonToSrpForm: -31%
  • onboardingImportWallet/confirmSrpToPwForm: -35%
  • onboardingImportWallet/pwFormToMetricsScreen: -31%
  • onboardingImportWallet/metricsToWalletReadyScreen: -46%
  • onboardingImportWallet/doneButtonToHomeScreen: -84%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -100%
  • onboardingImportWallet/longTaskCount: -100%
  • onboardingImportWallet/longTaskTotalDuration: -100%
  • onboardingImportWallet/longTaskMaxDuration: -100%
  • onboardingImportWallet/tbt: -100%
  • onboardingImportWallet/total: -86%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: -15%
  • onboardingNewWallet/doneButtonToAssetList: -34%
  • onboardingNewWallet/longTaskCount: -55%
  • onboardingNewWallet/longTaskTotalDuration: -43%
  • onboardingNewWallet/longTaskMaxDuration: -30%
  • onboardingNewWallet/tbt: -61%
  • onboardingNewWallet/total: -30%
  • solanaAssetDetails/assetClickToPriceChart: -57%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/tbt: -100%
  • solanaAssetDetails/total: -57%
  • solanaAssetDetails/inp: +15%
  • solanaAssetDetails/cls: +192%
  • importSrpHome/loginToHomeScreen: -25%
  • importSrpHome/homeAfterImportWithNewWallet: -48%
  • importSrpHome/longTaskCount: -24%
  • importSrpHome/longTaskTotalDuration: -30%
  • importSrpHome/longTaskMaxDuration: -29%
  • importSrpHome/tbt: -50%
  • importSrpHome/total: -41%
  • importSrpHome/inp: -15%
  • importSrpHome/cls: -52%
  • sendTransactions/openSendPageFromHome: -42%
  • sendTransactions/selectTokenToSendFormLoaded: -22%
  • sendTransactions/reviewTransactionToConfirmationPage: -16%
  • sendTransactions/longTaskCount: -44%
  • sendTransactions/longTaskTotalDuration: -39%
  • sendTransactions/tbt: -44%
  • sendTransactions/total: -16%
  • sendTransactions/inp: -29%
  • sendTransactions/cls: -84%

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

  • 🟡 assetDetails/FCP: p75 2.1s
  • 🟡 importSrpHome/INP: p75 224ms
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 465 Bytes (0%)
  • ui: 440 Bytes (0%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 0 Bytes (0%)
  • zip: 305 Bytes (0%)

Limit scope to domain bucket files only.
Part of analytics migration umbrella PR #43885.
@metamask-ci

metamask-ci Bot commented Jun 29, 2026

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

Baseline (latest main): f365910 | Date: 6/29/2026 | Pipeline: 28377115974 | 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/inp: +23%
  • bridgeUserActions/bridge_load_page: -23%
  • bridgeUserActions/longTaskCount: -17%
  • loadNewAccount/load_new_account: +111%
  • loadNewAccount/total: +111%
  • loadNewAccount/inp: +49%
  • loadNewAccount/lcp: +1061%
  • confirmTx/confirm_tx: +11%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +11%
  • confirmTx/inp: +12%
  • confirmTx/fcp: -48%
  • confirmTx/lcp: +1189%
  • bridgeUserActions/bridge_load_page: +238%
  • bridgeUserActions/bridge_load_asset_picker: +143%
  • bridgeUserActions/bridge_search_token: +20%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +52%
  • bridgeUserActions/lcp: +1180%

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

  • 🟡 loadNewAccount/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/domInteractive: +10%
  • startupStandardHome/domInteractive: -39%
  • startupStandardHome/initialActions: +11%
  • startupStandardHome/fcp: -35%
  • startupPowerUserHome/domInteractive: +21%
  • startupPowerUserHome/setupStore: +23%
  • startupPowerUserHome/fcp: +19%

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

  • 🟡 startupPowerUserHome/LCP: p75 3.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: -26%
  • onboardingImportWallet/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -99%
  • onboardingImportWallet/longTaskCount: -75%
  • onboardingImportWallet/longTaskTotalDuration: -89%
  • onboardingImportWallet/longTaskMaxDuration: -85%
  • onboardingImportWallet/tbt: -95%
  • onboardingImportWallet/total: -85%
  • onboardingNewWallet/skipBackupToMetricsScreen: +12%
  • onboardingNewWallet/doneButtonToAssetList: -33%
  • onboardingNewWallet/longTaskCount: -55%
  • onboardingNewWallet/longTaskTotalDuration: -48%
  • onboardingNewWallet/longTaskMaxDuration: -38%
  • onboardingNewWallet/tbt: -78%
  • onboardingNewWallet/total: -28%
  • solanaAssetDetails/assetClickToPriceChart: -61%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/total: -61%
  • solanaAssetDetails/cls: +1620%
  • importSrpHome/loginToHomeScreen: -26%
  • importSrpHome/openAccountMenuAfterLogin: -33%
  • importSrpHome/homeAfterImportWithNewWallet: -42%
  • importSrpHome/longTaskCount: -32%
  • importSrpHome/longTaskTotalDuration: -36%
  • importSrpHome/longTaskMaxDuration: -30%
  • importSrpHome/tbt: -49%
  • importSrpHome/total: -38%
  • importSrpHome/inp: -16%
  • importSrpHome/fcp: +14%
  • importSrpHome/cls: -54%
  • sendTransactions/openSendPageFromHome: -33%
  • sendTransactions/selectTokenToSendFormLoaded: -27%
  • sendTransactions/reviewTransactionToConfirmationPage: +38%
  • sendTransactions/longTaskCount: -29%
  • sendTransactions/longTaskTotalDuration: -31%
  • sendTransactions/tbt: -60%
  • sendTransactions/total: +37%
  • sendTransactions/inp: -25%
  • sendTransactions/lcp: -13%
  • sendTransactions/cls: -34%

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

  • 🟡 assetDetails/FCP: p75 1.8s
  • 🟡 importSrpHome/INP: p75 208ms
  • 🟡 importSrpHome/FCP: p75 2.0s
  • 🟡 sendTransactions/FCP: p75 1.9s
  • 🟡 assetDetails/FCP: p75 1.8s
  • 🟡 solanaAssetDetails/FCP: p75 1.8s
  • 🟡 importSrpHome/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: +11%
Bundle size diffs
  • background: 465 Bytes (0%)
  • ui: 386 Bytes (0%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 0 Bytes (0%)
  • zip: 296 Bytes (0%)

Drop the unused analytics integration helper and the redundant init-layer
trackEvent unit test. DeFi analytics coverage remains in the integration test.

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

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 migrates Earn/mUSD (and related DeFi positions) UI/background analytics call sites from legacy MetaMetricsContext / trackMetaMetricsEvent payloads to the newer useAnalytics() + createEventBuilder() / trackAnalyticsEvent pathway, aligning with the broader AnalyticsController migration tracked in #43885.

Changes:

  • Updated mUSD UI screens/components and hooks to build analytics events via createEventBuilder(...).addCategory(...).addProperties(...).build() and send them through useAnalytics().trackEvent.
  • Updated DeFi positions UI analytics and background controller init wiring to route through app/scripts/controllers/analytics.
  • Updated integration/unit tests to assert against the new event shape (name, properties.category, etc.) and new RPC method (trackAnalyticsEvent).

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
app/scripts/messenger-client-init/defi-positions/defi-positions-controller-init.test.ts Adds coverage that the DeFi positions controller’s trackEvent is routed through the analytics controller layer.
app/scripts/messenger-client-init/defi-positions/defi-positions-controller-init.ts Replaces MetaMetrics controller delegation with direct createEventBuilder + trackEvent (analytics controller) mapping for DeFi positions.
app/scripts/messenger-client-init/messengers/defi-positions/defi-positions-controller-messenger.ts Removes MetaMetrics controller track action delegation from the DeFi positions init messenger.
test/integration/defi/defi-positions.test.tsx Updates integration assertions to the new RPC method (trackAnalyticsEvent) and event shape (name, options).
test/integration/helpers/analytics-integration-helpers.ts Adds helper utilities for inspecting trackAnalyticsEvent background RPC calls in integration tests.
ui/components/app/assets/defi-list/cells/defi-protocol-cell.tsx Migrates DeFi “details opened” tracking from MetaMetricsContext to useAnalytics + event builder.
ui/components/app/musd/claim-bonus-badge.test.tsx Updates unit tests to mock useAnalytics and assert the new built event payload shape.
ui/components/app/musd/claim-bonus-badge.tsx Migrates claim-bonus badge impression/click analytics to useAnalytics + event builder.
ui/components/app/musd/musd-asset-cta.test.tsx Updates mUSD asset CTA tests to mock useAnalytics instead of MetaMetrics context.
ui/components/app/musd/musd-asset-cta.tsx Migrates mUSD asset CTA click analytics to the event builder API.
ui/components/app/musd/musd-buy-get-cta.test.tsx Updates buy/get CTA tests for the new analytics hook + event builder.
ui/components/app/musd/musd-buy-get-cta.tsx Migrates buy/get CTA click analytics to the event builder API.
ui/components/app/musd/musd-convert-link.test.tsx Updates convert link tests to mock useAnalytics and assert category under properties.
ui/components/app/musd/musd-convert-link.tsx Migrates convert-link CTA click analytics to useAnalytics + event builder.
ui/hooks/musd/useMerklClaimStatus.test.ts Updates Merkl claim hook tests to mock useAnalytics instead of MetaMetrics context.
ui/hooks/musd/useMerklClaimStatus.ts Migrates Merkl claim status analytics to event builder + useAnalytics.
ui/hooks/musd/useMusdConversionToastStatus.test.ts Updates conversion toast hook tests to mock useAnalytics and new event shape.
ui/hooks/musd/useMusdConversionToastStatus.ts Migrates conversion status toast analytics to event builder + useAnalytics.
ui/pages/musd/screens/education.test.tsx Updates education screen tests to mock useAnalytics and assert name-based events.
ui/pages/musd/screens/education.tsx Migrates education screen display/click analytics to useAnalytics + event builder.

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

Comment thread test/integration/helpers/analytics-integration-helpers.ts Outdated
@sonarqubecloud

sonarqubecloud Bot commented Jul 1, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
35.0% Coverage on New Code (required ≥ 80%)
7.4% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@metamask-ci

metamask-ci Bot commented Jul 1, 2026

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

Baseline (latest main): 1716549 | Date: 6/29/2026 | Pipeline: 28506211662 | 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

  • bridgeUserActions/bridge_load_page: -32%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/longTaskTotalDuration: -29%
  • bridgeUserActions/longTaskMaxDuration: -20%
  • bridgeUserActions/tbt: -49%
  • bridgeUserActions/inp: +21%
  • loadNewAccount/load_new_account: +80%
  • loadNewAccount/total: +80%
  • loadNewAccount/inp: -18%
  • loadNewAccount/lcp: +1149%
  • confirmTx/confirm_tx: +10%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +10%
  • confirmTx/inp: +12%
  • confirmTx/lcp: +1162%
  • bridgeUserActions/bridge_load_page: +132%
  • bridgeUserActions/bridge_load_asset_picker: +101%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +27%
  • bridgeUserActions/inp: +12%
  • bridgeUserActions/lcp: +1269%

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

  • 🟡 loadNewAccount/FCP: p75 1.9s
  • 🟡 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/domInteractive: -25%
  • startupStandardHome/fcp: -24%
  • startupPowerUserHome/backgroundConnect: -12%
  • startupPowerUserHome/inp: -16%
  • startupPowerUserHome/fcp: -13%

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

  • 🟡 startupPowerUserHome/LCP: p75 3.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/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -97%
  • onboardingImportWallet/longTaskCount: -80%
  • onboardingImportWallet/longTaskTotalDuration: -89%
  • onboardingImportWallet/longTaskMaxDuration: -85%
  • onboardingImportWallet/tbt: -93%
  • onboardingImportWallet/total: -85%
  • onboardingNewWallet/doneButtonToAssetList: -32%
  • onboardingNewWallet/longTaskCount: -50%
  • onboardingNewWallet/longTaskTotalDuration: -47%
  • onboardingNewWallet/longTaskMaxDuration: -25%
  • onboardingNewWallet/tbt: -71%
  • onboardingNewWallet/total: -41%
  • solanaAssetDetails/assetClickToPriceChart: -68%
  • solanaAssetDetails/total: -68%
  • solanaAssetDetails/inp: -24%
  • solanaAssetDetails/lcp: -16%
  • solanaAssetDetails/cls: +1172%
  • importSrpHome/openAccountMenuAfterLogin: -21%
  • importSrpHome/homeAfterImportWithNewWallet: -13%
  • importSrpHome/longTaskCount: -19%
  • importSrpHome/longTaskTotalDuration: -22%
  • importSrpHome/longTaskMaxDuration: -13%
  • importSrpHome/tbt: -23%
  • importSrpHome/total: -12%
  • importSrpHome/inp: -21%
  • importSrpHome/fcp: +18%
  • importSrpHome/lcp: -47%
  • importSrpHome/cls: -47%
  • sendTransactions/openSendPageFromHome: -33%
  • sendTransactions/selectTokenToSendFormLoaded: -39%
  • sendTransactions/reviewTransactionToConfirmationPage: +25%
  • sendTransactions/longTaskCount: -20%
  • sendTransactions/longTaskTotalDuration: -26%
  • sendTransactions/longTaskMaxDuration: -10%
  • sendTransactions/tbt: -55%
  • sendTransactions/total: +24%
  • sendTransactions/inp: -23%
  • sendTransactions/lcp: -12%
  • sendTransactions/cls: -40%

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

  • 🟡 importSrpHome/INP: p75 208ms
  • 🟡 importSrpHome/FCP: p75 2.0s
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.8s
  • 🟡 sendTransactions/FCP: p75 1.9s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 44.69 KiB (0.41%)
  • ui: 8.67 KiB (0.05%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 548 Bytes (0.03%)
  • zip: 5.94 KiB (0.02%)

@gauthierpetetin
gauthierpetetin enabled auto-merge July 1, 2026 13:04
@gauthierpetetin gauthierpetetin self-assigned this Jul 1, 2026
@gauthierpetetin
gauthierpetetin added this pull request to the merge queue Jul 2, 2026
Merged via the queue into main with commit b374c83 Jul 2, 2026
391 of 394 checks passed
@gauthierpetetin
gauthierpetetin deleted the refactor/analytics-migrate-earn branch July 2, 2026 20:05
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 2, 2026
@metamaskbot metamaskbot added the release-13.40.0 Issue or pull request that will be included in release 13.40.0 label Jul 2, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.40.0 Issue or pull request that will be included in release 13.40.0 risk:high size-L team-extension-platform Extension Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants