Skip to content

refactor(analytics): migrate perps events#43890

Merged
gauthierpetetin merged 5 commits into
mainfrom
refactor/analytics-migrate-perps
Jul 9, 2026
Merged

refactor(analytics): migrate perps events#43890
gauthierpetetin merged 5 commits into
mainfrom
refactor/analytics-migrate-perps

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 after PR1.

Files in this PR: 22

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

Medium Risk
Touches analytics plumbing across background and UI; event property shape and location sourcing change for some clicks, which can affect dashboards but not trading or funds.

Overview
Migrates perps analytics from legacy MetaMetrics (MetaMetricsContext / MetaMetricsController:trackEvent) to createEventBuilder + trackEvent via useAnalytics() in the UI and app/scripts/controllers/analytics in the background.

Background: createPerpsInfrastructure no longer accepts an injected trackEvent; trackPerpsEvent builds events with category and timestamp and calls the shared analytics module. PerpsControllerInit drops the messenger bridge to MetaMetricsController:trackEvent, and the perps controller messenger allowed actions no longer include that action.

UI: usePerpsEventTracking and PerpsSupportLearn use useAnalytics; support/feedback link events use useSegmentContext page title for location instead of a hardcoded string (tests expect Perps Tab on /perps). Related perps UI tests mock useAnalytics and assert the new payload shape (name, properties.category, etc.).

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

@metamask-ci

metamask-ci Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

✨ Files requiring CODEOWNER review ✨

👨‍🔧 @MetaMask/perps (10 files, +200 -294)
  • 📁 app/
    • 📁 scripts/
      • 📁 controllers/
        • 📁 perps/
          • 📄 infrastructure.test.ts +21 -11
          • 📄 infrastructure.ts +17 -19
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 perps/
          • 📁 perps-support-learn/
            • 📄 perps-support-learn.test.tsx +32 -39
            • 📄 perps-support-learn.tsx +19 -26
          • 📁 perps-tutorial-modal/
            • 📄 PerpsTutorialModal.test.tsx +13 -14
            • 📄 perps-view.test.tsx +38 -117
    • 📁 hooks/
      • 📁 perps/
        • 📄 usePerpsEventTracking.test.tsx +20 -27
        • 📄 usePerpsEventTracking.ts +19 -21
    • 📁 pages/
      • 📁 perps/
        • 📄 perps-order-entry-page.test.tsx +20 -19
        • 📄 perps-order-entry-page.tsx +1 -1

@metamask-ci

metamask-ci Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor
Builds ready [5087e2c]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 14 pass · 🟡 9 warn · 🔴 1 fail)

Baseline (latest main): d50b2dc | Date: 6/25/2026 | Pipeline: 28177690216 | 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/inp: -27%
  • confirmTx/inp: -12%
  • bridgeUserActions/bridge_load_page: -11%
  • bridgeUserActions/bridge_load_asset_picker: +10%
  • bridgeUserActions/longTaskCount: +43%
  • bridgeUserActions/longTaskTotalDuration: +28%
  • bridgeUserActions/tbt: -13%
  • loadNewAccount/inp: -11%
  • loadNewAccount/lcp: +1118%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/inp: -12%
  • confirmTx/lcp: +1146%
  • bridgeUserActions/bridge_load_page: +193%
  • bridgeUserActions/bridge_load_asset_picker: +26%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +31%
  • bridgeUserActions/lcp: +1144%

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

  • 🟡 confirmTx/FCP: p75 1.8s
  • 🟡 bridgeUserActions/FCP: p75 1.8s
  • 🟡 confirmTx/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: -17%
  • startupStandardHome/fcp: -17%

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

  • 🟡 startupPowerUserHome/INP: p75 224ms
  • 🟡 startupPowerUserHome/LCP: p75 3.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: -10%
  • onboardingImportWallet/doneButtonToHomeScreen: -84%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -100%
  • onboardingImportWallet/longTaskCount: -55%
  • onboardingImportWallet/longTaskTotalDuration: -89%
  • onboardingImportWallet/longTaskMaxDuration: -92%
  • onboardingImportWallet/tbt: -98%
  • onboardingImportWallet/total: -87%
  • onboardingNewWallet/doneButtonToAssetList: -16%
  • onboardingNewWallet/longTaskCount: -50%
  • onboardingNewWallet/longTaskTotalDuration: -50%
  • onboardingNewWallet/longTaskMaxDuration: -25%
  • onboardingNewWallet/tbt: -52%
  • onboardingNewWallet/total: -14%
  • solanaAssetDetails/assetClickToPriceChart: -69%
  • solanaAssetDetails/total: -69%
  • solanaAssetDetails/inp: +14%
  • solanaAssetDetails/lcp: -57%
  • importSrpHome/loginToHomeScreen: -14%
  • importSrpHome/openAccountMenuAfterLogin: +15%
  • importSrpHome/homeAfterImportWithNewWallet: -39%
  • importSrpHome/longTaskCount: -31%
  • importSrpHome/longTaskTotalDuration: -35%
  • importSrpHome/tbt: -39%
  • importSrpHome/total: -37%
  • importSrpHome/inp: -38%
  • importSrpHome/fcp: +18%
  • importSrpHome/cls: -73%
  • sendTransactions/openSendPageFromHome: -26%
  • sendTransactions/reviewTransactionToConfirmationPage: +17%
  • sendTransactions/longTaskCount: -100%
  • sendTransactions/longTaskTotalDuration: -100%
  • sendTransactions/longTaskMaxDuration: -100%
  • sendTransactions/tbt: -100%
  • sendTransactions/total: +17%
  • sendTransactions/inp: -19%
  • sendTransactions/lcp: -22%
  • sendTransactions/cls: -93%

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

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

@gauthierpetetin
gauthierpetetin force-pushed the refactor/analytics-migrate-perps branch from 5087e2c to 0c4c4c7 Compare June 26, 2026 03:55
@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 commented Jun 26, 2026

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

Baseline (latest main): 1e3d238 | Date: 6/25/2026 | Pipeline: 28216080417 | 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: -16%
  • loadNewAccount/total: -16%
  • loadNewAccount/inp: +11%
  • loadNewAccount/cls: -75%
  • confirmTx/inp: -22%
  • bridgeUserActions/bridge_load_page: +42%
  • bridgeUserActions/bridge_load_asset_picker: +11%
  • bridgeUserActions/longTaskCount: +67%
  • bridgeUserActions/longTaskTotalDuration: +23%
  • bridgeUserActions/longTaskMaxDuration: -11%
  • bridgeUserActions/tbt: -32%
  • loadNewAccount/inp: +138%
  • loadNewAccount/fcp: -72%
  • loadNewAccount/lcp: +835%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/fcp: -70%
  • confirmTx/lcp: +910%
  • bridgeUserActions/bridge_load_page: +71%
  • bridgeUserActions/bridge_load_asset_picker: +31%
  • bridgeUserActions/bridge_search_token: -12%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/inp: -22%
  • bridgeUserActions/fcp: -72%
  • bridgeUserActions/lcp: +964%

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

  • 🟡 loadNewAccount/INP: p75 240ms
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: +74%
  • startupStandardHome/setupStore: -29%
  • startupStandardHome/fcp: +70%
  • startupPowerUserHome/backgroundConnect: +22%
  • startupPowerUserHome/setupStore: -88%

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

  • 🟡 startupPowerUserHome/LCP: p75 3.8s
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/metricsToWalletReadyScreen: -28%
  • onboardingImportWallet/doneButtonToHomeScreen: -77%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -90%
  • onboardingImportWallet/longTaskCount: -50%
  • onboardingImportWallet/longTaskTotalDuration: -87%
  • onboardingImportWallet/longTaskMaxDuration: -89%
  • onboardingImportWallet/tbt: -98%
  • onboardingImportWallet/total: -79%
  • onboardingNewWallet/createPwToRecoveryScreen: +15%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +33%
  • onboardingNewWallet/longTaskCount: -23%
  • onboardingNewWallet/longTaskTotalDuration: -49%
  • onboardingNewWallet/longTaskMaxDuration: -39%
  • onboardingNewWallet/tbt: -68%
  • solanaAssetDetails/assetClickToPriceChart: -21%
  • solanaAssetDetails/total: -21%
  • solanaAssetDetails/cls: +12%
  • importSrpHome/homeAfterImportWithNewWallet: -38%
  • importSrpHome/longTaskCount: -25%
  • importSrpHome/longTaskTotalDuration: -40%
  • importSrpHome/longTaskMaxDuration: -14%
  • importSrpHome/tbt: -41%
  • importSrpHome/total: -33%
  • importSrpHome/inp: -22%
  • importSrpHome/cls: -53%
  • sendTransactions/openSendPageFromHome: -27%
  • sendTransactions/longTaskCount: -50%
  • sendTransactions/longTaskTotalDuration: -57%
  • sendTransactions/longTaskMaxDuration: -31%
  • sendTransactions/tbt: -85%
  • sendTransactions/inp: -25%
  • sendTransactions/cls: -92%

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

  • 🟡 assetDetails/FCP: p75 2.0s
  • 🟡 importSrpHome/INP: p75 208ms
  • 🟡 importSrpHome/FCP: p75 1.8s
  • 🟡 solanaAssetDetails/FCP: p75 1.8s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/LCP: p75 3.0s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 38 Bytes (0%)
  • ui: 4 Bytes (0%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 0 Bytes (0%)
  • zip: 27 Bytes (0%)

@metamask-ci

metamask-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor
Builds ready [fc30393] [reused from 7b76ec9]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 10 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 1e3d238 | Date: 6/25/2026 | Pipeline: 28220932148 | 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: +59%
  • loadNewAccount/cls: -75%
  • confirmTx/inp: -22%
  • bridgeUserActions/bridge_load_page: +43%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/longTaskTotalDuration: -15%
  • bridgeUserActions/inp: -12%
  • loadNewAccount/inp: +170%
  • loadNewAccount/fcp: -49%
  • loadNewAccount/lcp: +1053%
  • confirmTx/confirm_tx: +12%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +12%
  • confirmTx/inp: -14%
  • confirmTx/fcp: -46%
  • confirmTx/lcp: +1270%
  • bridgeUserActions/bridge_load_page: +248%
  • bridgeUserActions/bridge_load_asset_picker: +24%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +22%
  • bridgeUserActions/fcp: +10%
  • bridgeUserActions/lcp: +1202%

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

  • 🟡 loadNewAccount/INP: p75 272ms
  • 🟡 bridgeUserActions/FCP: p75 1.9s
Startup Benchmarks · Samples: 100

⚠️ Missing data: firefox/webpack/startupStandardHome, firefox/webpack/startupPowerUserHome

Benchmarkchrome-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]
User Journey Benchmarks · Samples: 5 · mock API

⚠️ Missing data: chrome/webpack/userJourneyTransactions, firefox/webpack/userJourneyTransactions

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]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/metricsToWalletReadyScreen: -30%
  • onboardingImportWallet/doneButtonToHomeScreen: -77%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -100%
  • onboardingImportWallet/longTaskCount: -75%
  • onboardingImportWallet/longTaskTotalDuration: -92%
  • onboardingImportWallet/longTaskMaxDuration: -90%
  • onboardingImportWallet/tbt: -98%
  • onboardingImportWallet/total: -82%
  • onboardingNewWallet/createPwToRecoveryScreen: +27%
  • onboardingNewWallet/skipBackupToMetricsScreen: +30%
  • onboardingNewWallet/doneButtonToAssetList: -11%
  • onboardingNewWallet/longTaskCount: -23%
  • onboardingNewWallet/longTaskTotalDuration: -44%
  • onboardingNewWallet/longTaskMaxDuration: -41%
  • onboardingNewWallet/tbt: -74%
  • solanaAssetDetails/assetClickToPriceChart: -65%
  • solanaAssetDetails/total: -65%
  • solanaAssetDetails/cls: +12%
  • importSrpHome/loginToHomeScreen: -16%
  • importSrpHome/homeAfterImportWithNewWallet: -29%
  • importSrpHome/longTaskCount: -33%
  • importSrpHome/longTaskTotalDuration: -31%
  • importSrpHome/longTaskMaxDuration: -18%
  • importSrpHome/tbt: -39%
  • importSrpHome/total: -28%
  • importSrpHome/inp: -13%
  • importSrpHome/cls: -53%

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

  • 🟡 assetDetails/FCP: p75 2.0s
  • 🟡 importSrpHome/INP: p75 232ms
  • 🟡 assetDetails/FCP: p75 1.8s
  • 🟡 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 sizes
  • background: 10.75 MiB
  • ui: 16.87 MiB
  • common: 0 Bytes
  • other: 997.96 KiB
  • contentScripts: 1.79 MiB
  • zip: 26.12 MiB
No bundle-size baseline commit was available for this build, so diff values are omitted.

@metamask-ci

metamask-ci Bot commented Jun 30, 2026

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

Baseline (latest main): 1716549 | Date: 6/29/2026 | Pipeline: 28418181876 | 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: -18%
  • loadNewAccount/fcp: +13%
  • confirmTx/lcp: -11%
  • bridgeUserActions/bridge_load_page: -26%
  • bridgeUserActions/bridge_load_asset_picker: -24%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/longTaskTotalDuration: -29%
  • bridgeUserActions/longTaskMaxDuration: -20%
  • bridgeUserActions/tbt: -49%
  • bridgeUserActions/inp: -14%
  • loadNewAccount/inp: -18%
  • loadNewAccount/fcp: -48%
  • loadNewAccount/lcp: +1120%
  • confirmTx/confirm_tx: +12%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +12%
  • confirmTx/fcp: -49%
  • confirmTx/lcp: +1072%
  • bridgeUserActions/bridge_load_page: +79%
  • bridgeUserActions/bridge_load_asset_picker: +89%
  • bridgeUserActions/bridge_search_token: +42%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +193%
  • bridgeUserActions/lcp: +1218%

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

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

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -15%
  • startupStandardHome/load: -15%
  • startupStandardHome/domContentLoaded: -15%
  • startupStandardHome/domInteractive: -19%
  • startupStandardHome/firstPaint: -10%
  • startupStandardHome/backgroundConnect: -13%
  • startupStandardHome/firstReactRender: -20%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/loadScripts: -15%
  • startupStandardHome/setupStore: -27%
  • startupStandardHome/longTaskCount: -33%
  • startupStandardHome/longTaskTotalDuration: -24%
  • startupStandardHome/longTaskMaxDuration: -19%
  • startupStandardHome/tbt: -22%
  • startupStandardHome/inp: -13%
  • startupStandardHome/fcp: -15%
  • startupStandardHome/lcp: -11%
  • startupPowerUserHome/initialActions: +33%
  • startupStandardHome/setupStore: +16%
  • startupPowerUserHome/domInteractive: -33%
  • startupPowerUserHome/backgroundConnect: -20%
  • startupPowerUserHome/fcp: -31%

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

  • 🔴 startupPowerUserHome/INP: p75 552ms
  • 🟡 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]
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/confirmSrpToPwForm: +13%
  • onboardingImportWallet/metricsToWalletReadyScreen: -28%
  • onboardingImportWallet/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -95%
  • onboardingImportWallet/longTaskCount: -80%
  • onboardingImportWallet/longTaskTotalDuration: -92%
  • onboardingImportWallet/longTaskMaxDuration: -89%
  • onboardingImportWallet/tbt: -97%
  • onboardingImportWallet/total: -85%
  • onboardingNewWallet/doneButtonToAssetList: -33%
  • onboardingNewWallet/longTaskCount: -50%
  • onboardingNewWallet/longTaskTotalDuration: -61%
  • onboardingNewWallet/longTaskMaxDuration: -33%
  • onboardingNewWallet/tbt: -73%
  • onboardingNewWallet/total: -26%
  • solanaAssetDetails/assetClickToPriceChart: -59%
  • solanaAssetDetails/total: -59%
  • solanaAssetDetails/cls: +1620%
  • importSrpHome/openAccountMenuAfterLogin: -37%
  • importSrpHome/homeAfterImportWithNewWallet: -14%
  • importSrpHome/longTaskCount: -19%
  • importSrpHome/longTaskTotalDuration: -30%
  • importSrpHome/longTaskMaxDuration: -15%
  • importSrpHome/tbt: -34%
  • importSrpHome/total: -11%
  • importSrpHome/inp: -12%
  • importSrpHome/lcp: -55%
  • importSrpHome/cls: -47%
  • sendTransactions/openSendPageFromHome: -23%
  • sendTransactions/selectTokenToSendFormLoaded: -42%
  • sendTransactions/reviewTransactionToConfirmationPage: +59%
  • sendTransactions/longTaskCount: -20%
  • sendTransactions/longTaskTotalDuration: -26%
  • sendTransactions/longTaskMaxDuration: -10%
  • sendTransactions/tbt: -55%
  • sendTransactions/total: +57%
  • sendTransactions/inp: -11%
  • sendTransactions/lcp: -21%
  • sendTransactions/cls: -40%

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

  • 🟡 importSrpHome/INP: p75 232ms
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: -457 Bytes (0%)
  • ui: 694 Bytes (0%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: -156 Bytes (-0.01%)
  • zip: 80 Bytes (0%)

gauthierpetetin and others added 2 commits July 1, 2026 08:52
Use segment page title for SupportLinkClicked and ExternalLinkClicked
properties.location to match legacy contextPropsIntoEventProperties.

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

Reconcile with main while keeping analytics migration only: restore
terminalApiUrl wiring and AuthenticatedUserStorageService messenger
delegates that were accidentally dropped on the stale branch base.

Co-authored-by: Cursor <cursoragent@cursor.com>
Restore analytics trackEvent delegation test for perps init, fix
support-learn location parity via real /perps page title, and revert
unrelated perps toast presentation styling changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
Move analytics trackPerpsEvent delegation test back to the slot of the
former MetaMetricsController trackEvent test in perps init tests.

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

Migrates Perps-domain analytics from legacy MetaMetrics trackEvent payloads (and MetaMetricsContext / messenger delegation) to the new createEventBuilder + trackEvent API via useAnalytics() in the UI and app/scripts/controllers/analytics in the background, aligning this domain with the umbrella analytics migration.

Changes:

  • UI: refactors Perps UI event tracking to use useAnalytics() / createEventBuilder (including the usePerpsEventTracking hook and Perps support interactions).
  • Background: removes Perps’ direct messenger delegation to MetaMetricsController:trackEvent and routes Perps infrastructure metrics through controllers/analytics.
  • Tests: updates Perps UI/background tests to mock useAnalytics() / controllers/analytics and assert the new event shape (name, properties.category, etc.).

Reviewed changes

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

Show a summary per file
File Description
app/scripts/controllers/perps/infrastructure.ts Routes Perps infrastructure metrics through controllers/analytics using createEventBuilder + trackEvent.
app/scripts/controllers/perps/infrastructure.test.ts Updates expectations/mocking for the new analytics builder + track path.
app/scripts/messenger-client-init/perps-controller-init.ts Removes MetaMetricsController:trackEvent delegation wiring from Perps controller init.
app/scripts/messenger-client-init/perps-controller-init.test.ts Adjusts init tests to validate delegation through AnalyticsController-backed tracking instead of messenger trackEvent.
app/scripts/messenger-client-init/messengers/perps-controller-messenger.ts Removes MetaMetricsController:trackEvent from allowed actions/action types for the Perps controller messenger.
app/scripts/messenger-client-init/messengers/perps-controller-messenger.test.ts Updates allowed-action assertions to match the messenger change.
ui/hooks/perps/usePerpsEventTracking.ts Migrates Perps hook to build events with createEventBuilder and send via useAnalytics().trackEvent.
ui/hooks/perps/usePerpsEventTracking.test.tsx Updates hook tests to mock useAnalytics() and assert the new built event payload shape.
ui/components/app/perps/perps-support-learn/perps-support-learn.tsx Migrates Support/Feedback link tracking to useAnalytics() with built events and Perps route-derived location.
ui/components/app/perps/perps-support-learn/perps-support-learn.test.tsx Updates tests to mock useAnalytics() and assert new tracking payloads on the Perps route.
ui/components/app/perps/perps-tutorial-modal/PerpsTutorialModal.test.tsx Updates tutorial modal tests to mock useAnalytics() instead of providing MetaMetricsContext.
ui/components/app/perps/perps-view.test.tsx Migrates Perps view tests to mock useAnalytics() and validate name/properties.category assertions.
ui/pages/perps/perps-order-entry-page.tsx Updates a comment to reference useAnalytics (behavior unchanged).
ui/pages/perps/perps-order-entry-page.test.tsx Migrates order entry analytics test coverage to the new useAnalytics() event shape.

💡 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 1, 2026 10:44
@gauthierpetetin
gauthierpetetin requested a review from a team as a code owner July 1, 2026 10:44
@sonarqubecloud

sonarqubecloud Bot commented Jul 1, 2026

Copy link
Copy Markdown

@metamask-ci

metamask-ci Bot commented Jul 1, 2026

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

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

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: +42%
  • loadNewAccount/total: +42%
  • loadNewAccount/inp: -18%
  • confirmTx/lcp: -16%
  • bridgeUserActions/bridge_load_page: -42%
  • bridgeUserActions/bridge_load_asset_picker: -29%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/longTaskTotalDuration: -33%
  • bridgeUserActions/longTaskMaxDuration: -25%
  • bridgeUserActions/tbt: -60%
  • bridgeUserActions/inp: -22%
  • loadNewAccount/load_new_account: +596%
  • loadNewAccount/total: +596%
  • loadNewAccount/inp: -18%
  • loadNewAccount/lcp: +1086%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/lcp: +1102%
  • bridgeUserActions/bridge_load_page: +84%
  • bridgeUserActions/bridge_load_asset_picker: +52%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +14%
  • bridgeUserActions/inp: -14%
  • bridgeUserActions/lcp: +1175%

🌐 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]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/numNetworkReqs: +10%
  • startupStandardHome/domInteractive: -25%
  • startupStandardHome/fcp: -24%
  • startupPowerUserHome/domInteractive: -14%
  • startupPowerUserHome/backgroundConnect: -13%
  • startupPowerUserHome/inp: +17%
  • startupPowerUserHome/fcp: -14%

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

  • 🟡 startupPowerUserHome/INP: p75 256ms
  • 🟡 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/confirmSrpToPwForm: +12%
  • onboardingImportWallet/pwFormToMetricsScreen: +11%
  • onboardingImportWallet/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -60%
  • onboardingImportWallet/longTaskCount: -60%
  • onboardingImportWallet/longTaskTotalDuration: -87%
  • onboardingImportWallet/longTaskMaxDuration: -90%
  • onboardingImportWallet/tbt: -98%
  • onboardingImportWallet/total: -84%
  • onboardingNewWallet/doneButtonToAssetList: -37%
  • onboardingNewWallet/longTaskCount: -50%
  • onboardingNewWallet/longTaskTotalDuration: -58%
  • onboardingNewWallet/longTaskMaxDuration: -27%
  • onboardingNewWallet/tbt: -64%
  • onboardingNewWallet/total: -33%
  • solanaAssetDetails/assetClickToPriceChart: -61%
  • solanaAssetDetails/total: -61%
  • solanaAssetDetails/fcp: -16%
  • solanaAssetDetails/lcp: -14%
  • importSrpHome/loginToHomeScreen: -14%
  • importSrpHome/openAccountMenuAfterLogin: +10%
  • importSrpHome/longTaskCount: -27%
  • importSrpHome/longTaskTotalDuration: -33%
  • importSrpHome/longTaskMaxDuration: -24%
  • importSrpHome/tbt: -38%
  • importSrpHome/inp: -27%
  • importSrpHome/lcp: -59%
  • importSrpHome/cls: -47%
  • sendTransactions/openSendPageFromHome: -37%
  • sendTransactions/selectTokenToSendFormLoaded: -53%
  • sendTransactions/longTaskCount: -20%
  • sendTransactions/longTaskTotalDuration: -25%
  • sendTransactions/longTaskMaxDuration: -14%
  • sendTransactions/tbt: -47%
  • sendTransactions/inp: -11%
  • sendTransactions/lcp: -10%
  • sendTransactions/cls: -40%

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

  • 🟡 sendTransactions/FCP: p75 1.8s
  • 🟡 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: 38.3 KiB (0.35%)
  • ui: 18.41 KiB (0.11%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 420 Bytes (0.02%)
  • zip: 19.53 KiB (0.07%)

@gauthierpetetin
gauthierpetetin enabled auto-merge July 1, 2026 13:04
@gauthierpetetin gauthierpetetin self-assigned this Jul 1, 2026

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

Approve. This gives us a cleaner boundary for the upcoming core Perps analytics integration.

@gauthierpetetin One thing I have in mind for the next step: core now treats the Perps analytics contract as the source of truth in @metamask/perps-controller, while extension is still on the older package version and local constants mirror.

@gauthierpetetin
gauthierpetetin added this pull request to the merge queue Jul 9, 2026
Merged via the queue into main with commit c15b8db Jul 9, 2026
208 checks passed
@gauthierpetetin
gauthierpetetin deleted the refactor/analytics-migrate-perps branch July 9, 2026 11:08
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