Skip to content

refactor(analytics): migrate orphan UX contacts and chrome events#44374

Merged
gauthierpetetin merged 5 commits into
mainfrom
refactor/analytics-migrate-orphan-ux-contacts-chrome
Jul 15, 2026
Merged

refactor(analytics): migrate orphan UX contacts and chrome events#44374
gauthierpetetin merged 5 commits into
mainfrom
refactor/analytics-migrate-orphan-ux-contacts-chrome

Conversation

@gauthierpetetin

@gauthierpetetin gauthierpetetin commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Description

Migrates remaining legacy MetaMetricsContext.trackEvent / trackMetaMetricsEvent call sites in the UX (contacts, modals, carousel, permission page) domain to useAnalytics() + createEventBuilder (or trackAnalyticsEvent for Redux thunks).

Part of umbrella tracker #43885 (15a · UX contacts + chrome).

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
Mechanical analytics API migration with test coverage updates; contact events still use sensitive properties for addresses, and view dedupe refs reduce duplicate metrics rather than changing product behavior.

Overview
This PR finishes migrating UX “chrome” surfaces (contacts, modals, carousel, permission connect, QR copy, scam questionnaire) from legacy MetaMetricsContext.trackEvent to useAnalytics() with createEventBuilder(...).build(), aligning payloads with the shared analytics shape (name, properties, sensitiveProperties).

Production code swaps useContext(MetaMetricsContext) for the hook and rebuilds each event via the builder (categories, properties, and contact-related addSensitiveProperties where addresses are sent). PermissionPageContainer wraps the hook in a small adapter so the base component still receives a legacy-shaped trackEvent callback. Several mount/view effects gain refs so impressions are not double-fired when dependencies re-run (password outdated, terms of use, force-upgrade modal, contacts list/details).

Tests drop MetaMetricsContext.Provider wrappers in favor of jest.mock('.../useAnalytics') using the real createEventBuilder, and assertions are updated to the built event object.

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

Part of analytics migration umbrella #43885 (15a · UX contacts + chrome).
@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 Jul 13, 2026
@metamask-ci

metamask-ci Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

✨ Files requiring CODEOWNER review ✨

🔑 @MetaMask/accounts-engineers (2 files, +68 -63)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 account-overview/
          • 📄 carousel.test.tsx +29 -22
          • 📄 carousel.tsx +39 -41

👨‍🔧 @MetaMask/core-extension-ux (2 files, +68 -63)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 account-overview/
          • 📄 carousel.test.tsx +29 -22
          • 📄 carousel.tsx +39 -41

👨‍🔧 @MetaMask/product-safety (1 files, +11 -12)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 product-safety/
          • 📁 scam-questionnaire/
            • 📄 useScamQuestionnaireMetrics.ts +11 -12

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

metamask-ci Bot commented Jul 13, 2026

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

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

Metricschrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟢 [CI log]🔴 load_new_account(p95) [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]

Regressions (🔴 2 failures)

Interaction Benchmarks · Samples: 5 🔴 1
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: -22%
  • loadNewAccount/total: -22%
  • loadNewAccount/inp: -18%
  • bridgeUserActions/bridge_load_page: -40%
  • bridgeUserActions/bridge_load_asset_picker: -16%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/longTaskTotalDuration: -18%
  • bridgeUserActions/inp: -14%
  • loadNewAccount/load_new_account: +607%
  • loadNewAccount/total: +607%
  • loadNewAccount/inp: -26%
  • loadNewAccount/fcp: -59%
  • loadNewAccount/lcp: +1086%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/fcp: -45%
  • confirmTx/lcp: +1116%
  • bridgeUserActions/bridge_load_page: +90%
  • bridgeUserActions/bridge_load_asset_picker: +85%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +182%
  • bridgeUserActions/inp: -22%
  • bridgeUserActions/fcp: -49%
  • bridgeUserActions/lcp: +1147%
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/uiStartup: +29%
  • startupStandardHome/backgroundConnect: +18%
  • startupStandardHome/firstReactRender: +230%
  • startupStandardHome/numNetworkReqs: +50%
  • startupStandardHome/longTaskTotalDuration: +11%
  • startupStandardHome/tbt: +15%
  • startupStandardHome/domInteractive: +18%
  • startupStandardHome/firstReactRender: +325%
  • startupStandardHome/setupStore: +45%
  • startupStandardHome/fcp: +17%
  • startupPowerUserHome/domInteractive: -23%
  • startupPowerUserHome/backgroundConnect: -29%
  • startupPowerUserHome/firstReactRender: +594%
  • startupPowerUserHome/inp: -16%
  • startupPowerUserHome/fcp: -24%

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

  • 🟡 startupPowerUserHome/LCP: p75 3.4s
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/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -97%
  • onboardingImportWallet/longTaskCount: -80%
  • onboardingImportWallet/longTaskTotalDuration: -94%
  • onboardingImportWallet/longTaskMaxDuration: -91%
  • onboardingImportWallet/tbt: -99%
  • onboardingImportWallet/total: -85%
  • onboardingNewWallet/srpButtonToPwForm: +15%
  • onboardingNewWallet/longTaskCount: -50%
  • onboardingNewWallet/longTaskTotalDuration: -69%
  • onboardingNewWallet/longTaskMaxDuration: -45%
  • onboardingNewWallet/tbt: -100%
  • solanaAssetDetails/assetClickToPriceChart: -71%
  • solanaAssetDetails/total: -71%
  • solanaAssetDetails/inp: -38%
  • importSrpHome/loginToHomeScreen: -11%
  • importSrpHome/homeAfterImportWithNewWallet: +15%
  • importSrpHome/longTaskCount: -44%
  • importSrpHome/longTaskTotalDuration: -47%
  • importSrpHome/longTaskMaxDuration: +21%
  • importSrpHome/tbt: -36%
  • importSrpHome/total: +13%
  • importSrpHome/inp: +15%
  • importSrpHome/lcp: -58%
  • importSrpHome/cls: -47%
  • sendTransactions/selectTokenToSendFormLoaded: -46%
  • sendTransactions/reviewTransactionToConfirmationPage: -55%
  • sendTransactions/longTaskCount: -100%
  • sendTransactions/longTaskTotalDuration: -100%
  • sendTransactions/longTaskMaxDuration: -100%
  • sendTransactions/tbt: -100%
  • sendTransactions/total: -55%
  • sendTransactions/inp: -23%
  • sendTransactions/lcp: -17%
  • sendTransactions/cls: -40%
  • swap/openSwapPageFromHome: -40%
  • swap/fetchAndDisplaySwapQuotes: +122%
  • swap/longTaskCount: -100%
  • swap/longTaskTotalDuration: -100%
  • swap/longTaskMaxDuration: -100%
  • swap/tbt: -100%
  • swap/total: +120%
  • swap/cls: -63%

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

  • 🟡 importSrpHome/INP: p75 304ms
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 1.9s
  • 🟡 swap/FCP: p75 1.8s
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.

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 continues the analytics migration by replacing remaining legacy MetaMetricsContext.trackEvent usage in UX “contacts + chrome” surfaces with the newer useAnalytics() hook and createEventBuilder event shape, and updates unit tests accordingly.

Changes:

  • Migrated multiple UI components/pages from MetaMetricsContext to useAnalytics() + createEventBuilder(...)...build().
  • Updated event payload construction to the new { name, properties, sensitiveProperties } format.
  • Refactored related Jest tests to mock useAnalytics and assert the new event shape.

Reviewed changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
ui/pages/contacts/contacts-list-page.tsx Migrates contacts list page view/click events to useAnalytics + builder.
ui/pages/contacts/contact-details-page.tsx Migrates contact details view/edit/delete events to builder format.
ui/pages/contacts/components/edit-contact-form.tsx Migrates “contact updated” tracking to builder format.
ui/pages/contacts/components/add-contact-form.tsx Migrates QR scanner + “contact added” tracking to builder format.
ui/components/ui/qr-code-view/qr-code-view.tsx Migrates “public address copied” tracking to builder format.
ui/components/multichain/account-overview/carousel.tsx Migrates banner display/select/dismiss tracking to builder format.
ui/components/multichain/account-overview/carousel.test.tsx Updates carousel tests to mock useAnalytics + assert built event shape.
ui/components/app/update-modal/update-modal.tsx Migrates force-upgrade modal tracking to builder format.
ui/components/app/update-modal/update-modal.test.tsx Updates update-modal tests for useAnalytics + built event shape.
ui/components/app/terms-of-use-popup/terms-of-use-popup.js Migrates terms-of-use “shown” tracking to builder format.
ui/components/app/terms-of-use-popup/terms-of-use-popup-container.tsx Migrates terms-of-use “accepted” tracking to builder format.
ui/components/app/product-safety/scam-questionnaire/useScamQuestionnaireMetrics.ts Migrates scam questionnaire metrics helper to use builder.
ui/components/app/permission-page-container/permission-page-container.component.js Adapts permission page to accept legacy payloads and forward via builder.
ui/components/app/password-outdated-modal/password-outdated-modal.tsx Migrates password-outdated modal “viewed” tracking to builder format.
ui/components/app/password-outdated-modal/password-outdated-modal.test.tsx Updates password-outdated modal tests for useAnalytics + built event shape.
ui/components/app/multichain-transaction-details-modal/multichain-transaction-details-modal.tsx Migrates external-link click tracking to builder format.
ui/components/app/multichain-transaction-details-modal/multichain-transaction-details-modal.test.tsx Updates multichain transaction details modal tests for useAnalytics.
ui/components/app/modals/pna25-modal/pna25-modal.tsx Migrates PNA25 notice tracking to builder format.
ui/components/app/modals/pna25-modal/pna25-modal.test.tsx Updates PNA25 modal tests for useAnalytics + built event shape.

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

Comment thread ui/components/app/update-modal/update-modal.tsx
Comment thread ui/components/app/terms-of-use-popup/terms-of-use-popup.js
Comment thread ui/components/app/password-outdated-modal/password-outdated-modal.tsx Outdated
Comment thread ui/pages/contacts/contacts-list-page.tsx
Comment thread ui/pages/contacts/contact-details-page.tsx Outdated
…ckEvent

Add hasTrackedView-style ref guards so mount and page-view metrics do not
re-fire when useAnalytics trackEvent identity changes during metrics init.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gauthierpetetin
gauthierpetetin marked this pull request as ready for review July 13, 2026 09:15
@gauthierpetetin
gauthierpetetin requested review from a team as code owners July 13, 2026 09:15
@gauthierpetetin gauthierpetetin self-assigned this Jul 13, 2026
@metamask-ci

metamask-ci Bot commented Jul 13, 2026

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

Baseline (latest main): 1716549 | Date: 6/29/2026 | Pipeline: 29237641963 | 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: -21%
  • loadNewAccount/total: -21%
  • loadNewAccount/inp: -18%
  • bridgeUserActions/bridge_load_page: -29%
  • bridgeUserActions/bridge_load_asset_picker: -10%
  • bridgeUserActions/longTaskCount: +67%
  • bridgeUserActions/longTaskTotalDuration: +43%
  • loadNewAccount/inp: -18%
  • loadNewAccount/lcp: +1095%
  • confirmTx/confirm_tx: +11%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +11%
  • confirmTx/lcp: +1180%
  • bridgeUserActions/bridge_load_page: +154%
  • bridgeUserActions/bridge_load_asset_picker: +51%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +33%
  • bridgeUserActions/inp: +12%
  • bridgeUserActions/fcp: -44%
  • bridgeUserActions/lcp: +1278%

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

  • 🟡 loadNewAccount/FCP: p75 1.9s
  • 🟡 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/uiStartup: +26%
  • startupStandardHome/backgroundConnect: +17%
  • startupStandardHome/firstReactRender: +221%
  • startupStandardHome/numNetworkReqs: +50%
  • startupStandardHome/firstReactRender: +336%
  • startupStandardHome/setupStore: +52%
  • startupPowerUserHome/domInteractive: -37%
  • startupPowerUserHome/backgroundConnect: -24%
  • startupPowerUserHome/firstReactRender: +620%
  • startupPowerUserHome/fcp: -37%

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

  • 🟡 startupPowerUserHome/INP: p75 208ms
  • 🟡 startupPowerUserHome/LCP: p75 3.5s
User Journey Benchmarks · Samples: 5 · mock API

⚠️ Missing data: firefox/webpack/userJourneyOnboardingImport

Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [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/pwFormToMetricsScreen: +10%
  • onboardingImportWallet/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -63%
  • onboardingImportWallet/longTaskCount: -80%
  • onboardingImportWallet/longTaskTotalDuration: -94%
  • onboardingImportWallet/longTaskMaxDuration: -91%
  • onboardingImportWallet/tbt: -100%
  • onboardingImportWallet/total: -84%
  • onboardingNewWallet/createPwToRecoveryScreen: +10%
  • onboardingNewWallet/skipBackupToMetricsScreen: +14%
  • onboardingNewWallet/doneButtonToAssetList: -13%
  • onboardingNewWallet/longTaskTotalDuration: -44%
  • onboardingNewWallet/longTaskMaxDuration: -43%
  • onboardingNewWallet/tbt: -100%
  • onboardingNewWallet/total: -11%
  • solanaAssetDetails/assetClickToPriceChart: -46%
  • solanaAssetDetails/total: -46%
  • solanaAssetDetails/inp: -31%
  • importSrpHome/loginToHomeScreen: -26%
  • importSrpHome/openAccountMenuAfterLogin: +111%
  • importSrpHome/homeAfterImportWithNewWallet: -26%
  • importSrpHome/longTaskCount: -35%
  • importSrpHome/longTaskTotalDuration: -45%
  • importSrpHome/tbt: -44%
  • importSrpHome/total: -25%
  • importSrpHome/lcp: -54%
  • importSrpHome/cls: -47%
  • sendTransactions/openSendPageFromHome: -21%
  • sendTransactions/selectTokenToSendFormLoaded: -38%
  • sendTransactions/reviewTransactionToConfirmationPage: -13%
  • sendTransactions/longTaskCount: -20%
  • sendTransactions/longTaskTotalDuration: -30%
  • sendTransactions/longTaskMaxDuration: -15%
  • sendTransactions/tbt: -85%
  • sendTransactions/total: -13%
  • sendTransactions/inp: -19%
  • sendTransactions/cls: -40%
  • swap/openSwapPageFromHome: -24%
  • swap/fetchAndDisplaySwapQuotes: +139%
  • swap/longTaskCount: -100%
  • swap/longTaskTotalDuration: -100%
  • swap/longTaskMaxDuration: -100%
  • swap/tbt: -100%
  • swap/total: +136%
  • swap/inp: +23%
  • swap/cls: -63%

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

  • 🟡 importSrpHome/INP: p75 240ms
  • 🟡 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 sizes
  • background: 14.22 MiB
  • ui: 17.07 MiB
  • common: 0 Bytes
  • other: 998.07 KiB
  • contentScripts: 1.87 MiB
  • zip: 27.04 MiB
No matching bundle-size baseline was found in the history data, so diff values are omitted.

@metamask-ci

metamask-ci Bot commented Jul 13, 2026

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

Baseline (latest main): 1716549 | Date: 6/29/2026 | Pipeline: 29237641963 | 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: -21%
  • loadNewAccount/total: -21%
  • loadNewAccount/inp: -18%
  • bridgeUserActions/bridge_load_page: -29%
  • bridgeUserActions/bridge_load_asset_picker: -10%
  • bridgeUserActions/longTaskCount: +67%
  • bridgeUserActions/longTaskTotalDuration: +43%
  • loadNewAccount/inp: -18%
  • loadNewAccount/lcp: +1095%
  • confirmTx/confirm_tx: +11%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +11%
  • confirmTx/lcp: +1180%
  • bridgeUserActions/bridge_load_page: +154%
  • bridgeUserActions/bridge_load_asset_picker: +51%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +33%
  • bridgeUserActions/inp: +12%
  • bridgeUserActions/fcp: -44%
  • bridgeUserActions/lcp: +1278%

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

  • 🟡 loadNewAccount/FCP: p75 1.9s
  • 🟡 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/uiStartup: +26%
  • startupStandardHome/backgroundConnect: +17%
  • startupStandardHome/firstReactRender: +221%
  • startupStandardHome/numNetworkReqs: +50%
  • startupStandardHome/firstReactRender: +336%
  • startupStandardHome/setupStore: +52%
  • startupPowerUserHome/domInteractive: -37%
  • startupPowerUserHome/backgroundConnect: -24%
  • startupPowerUserHome/firstReactRender: +620%
  • startupPowerUserHome/fcp: -37%

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

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

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/pwFormToMetricsScreen: +10%
  • onboardingImportWallet/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -63%
  • onboardingImportWallet/longTaskCount: -80%
  • onboardingImportWallet/longTaskTotalDuration: -94%
  • onboardingImportWallet/longTaskMaxDuration: -91%
  • onboardingImportWallet/tbt: -100%
  • onboardingImportWallet/total: -84%
  • onboardingNewWallet/createPwToRecoveryScreen: +10%
  • onboardingNewWallet/skipBackupToMetricsScreen: +14%
  • onboardingNewWallet/doneButtonToAssetList: -13%
  • onboardingNewWallet/longTaskTotalDuration: -44%
  • onboardingNewWallet/longTaskMaxDuration: -43%
  • onboardingNewWallet/tbt: -100%
  • onboardingNewWallet/total: -11%
  • solanaAssetDetails/assetClickToPriceChart: -46%
  • solanaAssetDetails/total: -46%
  • solanaAssetDetails/inp: -31%
  • importSrpHome/loginToHomeScreen: -26%
  • importSrpHome/openAccountMenuAfterLogin: +111%
  • importSrpHome/homeAfterImportWithNewWallet: -26%
  • importSrpHome/longTaskCount: -35%
  • importSrpHome/longTaskTotalDuration: -45%
  • importSrpHome/tbt: -44%
  • importSrpHome/total: -25%
  • importSrpHome/lcp: -54%
  • importSrpHome/cls: -47%
  • sendTransactions/openSendPageFromHome: -21%
  • sendTransactions/selectTokenToSendFormLoaded: -38%
  • sendTransactions/reviewTransactionToConfirmationPage: -13%
  • sendTransactions/longTaskCount: -20%
  • sendTransactions/longTaskTotalDuration: -30%
  • sendTransactions/longTaskMaxDuration: -15%
  • sendTransactions/tbt: -85%
  • sendTransactions/total: -13%
  • sendTransactions/inp: -19%
  • sendTransactions/cls: -40%
  • swap/openSwapPageFromHome: -24%
  • swap/fetchAndDisplaySwapQuotes: +139%
  • swap/longTaskCount: -100%
  • swap/longTaskTotalDuration: -100%
  • swap/longTaskMaxDuration: -100%
  • swap/tbt: -100%
  • swap/total: +136%
  • swap/inp: +23%
  • swap/cls: -63%

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

  • 🟡 importSrpHome/INP: p75 240ms
  • 🟡 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 sizes
  • background: 14.22 MiB
  • ui: 17.07 MiB
  • common: 0 Bytes
  • other: 998.07 KiB
  • contentScripts: 1.87 MiB
  • zip: 27.04 MiB
No matching bundle-size baseline was found in the history data, so diff values are omitted.

ameliejyc
ameliejyc previously approved these changes Jul 15, 2026
ccharly
ccharly previously approved these changes Jul 15, 2026

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

LGTM for accounts:

ui/components/multichain/account-overview/carousel.test.tsx
ui/components/multichain/account-overview/carousel.tsx

AugmentedMode
AugmentedMode previously approved these changes Jul 15, 2026
…s-chrome

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

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
70.0% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

@metamask-ci

metamask-ci Bot commented Jul 15, 2026

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

Baseline (latest main): 8c0fa5b | Date: 7/15/2026 | Pipeline: 29443706570 | 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: +58%
  • loadNewAccount/total: +58%
  • loadNewAccount/inp: -14%
  • loadNewAccount/cls: -17%
  • confirmTx/tbt: -15%
  • bridgeUserActions/bridge_load_page: -13%
  • bridgeUserActions/bridge_load_asset_picker: +10%
  • bridgeUserActions/longTaskCount: +43%
  • bridgeUserActions/longTaskTotalDuration: +29%
  • bridgeUserActions/tbt: -13%
  • loadNewAccount/inp: -38%
  • loadNewAccount/fcp: -74%
  • loadNewAccount/lcp: +820%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/inp: -34%
  • confirmTx/fcp: -67%
  • confirmTx/lcp: +797%
  • bridgeUserActions/bridge_load_page: +87%
  • bridgeUserActions/bridge_search_token: -15%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/inp: -26%
  • bridgeUserActions/fcp: -78%
  • bridgeUserActions/lcp: +808%
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/numNetworkReqs: -13%
  • startupStandardHome/domInteractive: +55%
  • startupStandardHome/backgroundConnect: +12%
  • startupStandardHome/firstReactRender: +15%
  • startupStandardHome/fcp: +47%
  • startupPowerUserHome/uiStartup: +14%
  • startupPowerUserHome/setupStore: +58%
  • startupPowerUserHome/inp: +17%
  • startupPowerUserHome/lcp: +13%

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

  • 🟡 startupPowerUserHome/INP: p75 232ms
  • 🟡 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/srpButtonToSrpForm: +19%
  • onboardingImportWallet/pwFormToMetricsScreen: +14%
  • onboardingImportWallet/metricsToWalletReadyScreen: -14%
  • onboardingImportWallet/doneButtonToHomeScreen: -91%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -84%
  • onboardingImportWallet/longTaskCount: -89%
  • onboardingImportWallet/longTaskTotalDuration: -96%
  • onboardingImportWallet/longTaskMaxDuration: -93%
  • onboardingImportWallet/tbt: -100%
  • onboardingImportWallet/total: -89%
  • onboardingNewWallet/srpButtonToPwForm: +16%
  • onboardingNewWallet/createPwToRecoveryScreen: +17%
  • onboardingNewWallet/skipBackupToMetricsScreen: +19%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +37%
  • onboardingNewWallet/doneButtonToAssetList: -24%
  • onboardingNewWallet/longTaskCount: -62%
  • onboardingNewWallet/longTaskTotalDuration: -69%
  • onboardingNewWallet/longTaskMaxDuration: -51%
  • onboardingNewWallet/tbt: -88%
  • onboardingNewWallet/total: -20%
  • solanaAssetDetails/assetClickToPriceChart: -66%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/total: -66%
  • solanaAssetDetails/inp: -38%
  • solanaAssetDetails/lcp: -10%
  • solanaAssetDetails/cls: -86%
  • importSrpHome/loginToHomeScreen: -18%
  • importSrpHome/openAccountMenuAfterLogin: -38%
  • importSrpHome/homeAfterImportWithNewWallet: -69%
  • importSrpHome/longTaskCount: -57%
  • importSrpHome/longTaskTotalDuration: -57%
  • importSrpHome/tbt: -62%
  • importSrpHome/total: -63%
  • importSrpHome/cls: -39%
  • sendTransactions/openSendPageFromHome: -36%
  • sendTransactions/selectTokenToSendFormLoaded: -22%
  • sendTransactions/longTaskCount: +25%
  • sendTransactions/longTaskTotalDuration: +11%
  • sendTransactions/longTaskMaxDuration: +11%
  • sendTransactions/tbt: -43%
  • sendTransactions/inp: -22%
  • sendTransactions/fcp: +21%
  • sendTransactions/lcp: -66%
  • sendTransactions/cls: -53%
  • swap/fetchAndDisplaySwapQuotes: +125%
  • swap/longTaskCount: -17%
  • swap/longTaskTotalDuration: -43%
  • swap/longTaskMaxDuration: -34%
  • swap/tbt: -94%
  • swap/total: +123%
  • swap/lcp: -11%
  • swap/cls: -86%

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

  • 🟡 importSrpHome/INP: p75 312ms
  • 🟡 sendTransactions/FCP: p75 2.0s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 1.9s
  • 🔴 swap/INP: p75 736ms
  • 🟡 swap/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: 105 Bytes (0%)
  • ui: 1.22 KiB (0.01%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 0 Bytes (0%)
  • zip: 390 Bytes (0%)

@gauthierpetetin
gauthierpetetin added this pull request to the merge queue Jul 15, 2026
Merged via the queue into main with commit bf71e30 Jul 15, 2026
206 of 207 checks passed
@gauthierpetetin
gauthierpetetin deleted the refactor/analytics-migrate-orphan-ux-contacts-chrome branch July 15, 2026 22:27
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 15, 2026
@metamaskbot metamaskbot added the release-13.41.0 Issue or pull request that will be included in release 13.41.0 label Jul 15, 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:medium size-L team-extension-platform Extension Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants