Skip to content

feat: integrate analytics controller#42885

Open
gauthierpetetin wants to merge 44 commits into
mainfrom
feat/analytics-controller-extension-integration
Open

feat: integrate analytics controller#42885
gauthierpetetin wants to merge 44 commits into
mainfrom
feat/analytics-controller-extension-integration

Conversation

@gauthierpetetin
Copy link
Copy Markdown
Contributor

@gauthierpetetin gauthierpetetin commented May 22, 2026

Description

This PR integrates AnalyticsController in Extension codebase.

It replaces this state:

  • MetaMetricsController's metaMetricsId
  • MetaMetricsController's participateInMetaMetrics
  • MetaMetricsController's segmentApiCalls

by this state:

  • AnalyticsController's analyticsId
  • AnalyticsController's optedIn
  • AnalyticsController's eventQueue
  • MetaMetricsController's completedMetaMetricsOnboarding

Since these changes impact many areas of the codebase, we’ve decided to take a phased approach.

This PR migrates the persisted state and updates the UI compatibility selectors, as well as the background getState() function, to derive the legacy values (metaMetricsId, participateInMetaMetrics) from the new state. This lets existing code continue using the legacy values while the source of truth moves to AnalyticsController.analyticsId, AnalyticsController.optedIn, and MetaMetricsController.completedMetaMetricsOnboarding.

In future phases, we’ll progressively remove all remaining usages of the legacy values (metaMetricsId, participateInMetaMetrics) throughout the codebase.

The files that deserve more attention during PR review are the following:

  • app/scripts/controllers/analytics/platform-adapter.ts
  • app/scripts/controllers/metametrics-controller.ts
flowchart TB
  subgraph Before["Before"]
    direction LR
    MMC1["MetaMetricsController"] --> SDK1["Segment SDK"]
    Early1["Early events"] --> SDK1
  end

  subgraph After["After"]
    direction LR
    MMC2["MetaMetricsController"] --> AC["AnalyticsController"]
    AC --> SDK2["Segment SDK"]
    Early2["Early events"] --> SDK2
  end

  Before ~~~ After
Loading

Changelog

CHANGELOG entry: null

Related issues

Fixes: https://github.com/MetaMask/MetaMask-planning/issues/7193

Manual testing steps

Main test case

  1. Build two different Extensions, one on this branch and one on main, the goal will be to compare events emitted by both and confirm they're equivalent
  2. Go through onboarding with both extension and find your metaMetricsId/analyticsId by doing right click on extension UI, then inspect > Application > Storage > IndexedDB > metamask-backup > MetaMetricsController/AnalyticsController
  3. Open Segment, choose the right source (usually MetaMask Extension [Dev], except if you configured SEGMENT_WRITE_KEY env variable with your own Segment project), and filter events with your metaMetricsId/analyticsId
  4. Confirm the three types of events emitted by both extension are equivalent:
    a. track
    b. identify
    c. page

Edge cases

  • Anonymous events (see list here)
    • Fully anonymous ones
      • These events are fully anonymous in the sense that the entire event, including all properties are considered as sensitive and get anonymized
      • Fully anonymous events are emitted by passing "excludeMetaMetricsId: true" as option (Example here)
      • An easy one to reproduce is "Phishing Page Displayed": visit one of the pages listed here and the event will be emitted
    • Partially anonymous ones
      • These events are partially anonymous in the sense that some properties are considered as sensitive and some are not. As a consequence, 2 events are sent: an anonymous one with all properties, and a non-anonymous one with only properties considered as non-sensitive
      • Partially anonymous events are emitted by passing "sensitiveProperties" (Example here)
      • An easy one to reproduce is "Contact Added": go to Contacts, click "Add contact", and add Vitalik's address as contact (0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045)
      • Before this PR, both events used to have similar messageId (example: "1780055175321.6592", and "1780055175321.6592-0x000"), while with this PR, messageId have a new uuidv4 format and both events don't have similar messageId (example: "5cc0d85e-3f0e-4374-8811-d36924d06689" and "433ff4c1-948d-4a4e-9470-81e878c7df44")
    • Anonymous ones with event renaming
      • Some anonymous events get renamed when being emitted (list of events available here): for example “Signature Requested” gets renamed “Signature Requested Anon”
      • An easy one to reproduce is “Signature Requested” (see Fragments sections below for more detail)
  • Fragments
    • Fragments are events used to tie a multi-step flow together, such as “Signature Requested” followed later by “Signature Approved” or “Signature Rejected”
    • They can be tested by visiting test-dapp, then connect extension, then click "Sign Typed Data V4", then accept or reject signature
    • The purpose of fragments is for both each event of the multi-step flow to share the same properties
    • Before this PR, events from a same fragment used to have similar messageId (example: "signature-3947127447", and "signature-3947127447-success" or "signature-3947127447-failure"), while with this PR, messageId have a new uuidv4 format and events from a same fragment don't have similar messageId (example: "9e3a83d0-ce13-47d2-a2f4-08a6d9adc29d" and "d2368a25-01c5-4b3c-af55-7d5f54eb58a6")
  • Persisted queue
    • Go to home page
    • Check that persisted queue is an empty object: right click on extension UI, then inspect > Application > Storage > IndexedDB > metamask-backup > MetaMetricsController/AnalyticsController > segmentApiCalls/eventQueue
    • Turn internet off
    • Click on "Swap"
    • Confirm no event is sent to Segment
    • Confirm events are added to persisted queue, including "Unified SwapBridge Button Clicked" (click on refresh button in the inspector to see them)
    • Wait for 5 minutes
    • Turn internet on
    • Restart extension
    • Confirm events are sent to Segment, including "Unified SwapBridge Button Clicked", and there's a 5 minute difference between timestamp and sentAt
    • These repro steps are not working on main branch, because persisted queue used to get cleared, regardless of whether the callback represents success or failure, whereas in this PR, it only gets cleared upon success. That change of behavior introduces the risk that if an event is malformed, it can end up being retried after every extension restart. But at the same time it allows us to collect more events, in cases of transient failures (e.g. offline, timeout). This core repo PR got opened to align behavior with what's currently on main: fix: clear analytics queue on callback errors core#8934
  • Early events
    • Right click on extension UI, then inspect > Application > Storage > Extension storage > Local > KeyringController > Right click to delete KeyringController
    • Restart Extension straight away
    • You should see "Vault Corruption Restore Wallet Screen Viewed" event in Segment
  • Opt out event
    • Start from a fresh onboarding state, go through create/import wallet, on the MetaMetrics onboarding page, uncheck “Participate in MetaMetrics”, continue and finish onboarding.
      • On Chrome, you should see "Metrics Opt Out" event in Segment
      • On Firefox, you should not see "Metrics Opt Out" event in Segment
  • Delete metametrics
    • Right click on extension UI, then inspect > Network, and paste "regulations" in the search bar
    • Go to Settings > Privacy > Delete MetaMetrics data and click the button
    • You should see an API call in the Networks tab, with "subjectIds" array as parameter, and your metaMetricsId/analyticsId included in that array

Screenshots/Recordings

NA

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

High Risk
Changes consent, identity, Segment delivery, anonymous/sensitive event splitting, opt-out, and data-deletion IDs across the extension; behavioral differences in message IDs and offline queue retry are called out in the PR.

Overview
This PR moves MetaMetrics onto AnalyticsController as the source of truth for consent and identity, while keeping legacy metaMetricsId / participateInMetaMetrics available via aggregated getState() for callers that have not migrated yet.

MetaMetricsController no longer owns metaMetricsId, participateInMetaMetrics, or segmentApiCalls. Opt-in/out now calls AnalyticsController:optIn / optOut, IDs come from analyticsId, and track / identify / page go through messenger actions. A new platform-adapter sends Segment payloads (including properties.anonymous → shared anonymous ID and renamed anon event names for signatures/transactions). completedMetaMetricsOnboarding replaces storing participation on MMC. Direct Segment wiring, ID generation, segmentApiCalls MV3 replay, and deterministic messageId / fragment suffix behavior are removed from MMC.

Call sites shift to AnalyticsController state (RPC rate limiting, data deletion subjectIds, early/critical Segment helpers, Sentry allowlist). Tests and Segment shims are updated for the delegation model.

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

@gauthierpetetin gauthierpetetin self-assigned this May 22, 2026
@gauthierpetetin gauthierpetetin added the team-extension-platform Extension Platform team label May 22, 2026
@github-actions
Copy link
Copy Markdown
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented May 22, 2026

✨ Files requiring CODEOWNER review ✨

👨‍🔧 @MetaMask/core-extension-ux (9 files, +24 -22)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 funding-method-modal/
          • 📄 funding-method-modal.tsx +2 -2
        • 📁 global-menu-drawer/
          • 📄 useGlobalMenuSections.tsx +2 -2
        • 📁 menu-items/
          • 📄 discover-menu-item.tsx +2 -2
        • 📁 token-list-item/
          • 📄 stakeable-link.tsx +2 -2
    • 📁 pages/
      • 📁 home/
        • 📄 home.component.js +1 -1
        • 📄 home.container.js +2 -2
      • 📁 settings/
        • 📁 privacy-tab/
          • 📄 data-collection-item.test.tsx +4 -3
          • 📄 metametrics-item.test.tsx +8 -7
          • 📄 metametrics-item.tsx +1 -1

👨‍🔧 @MetaMask/extension-platform (4 files, +10 -7)
  • 📁 test/
    • 📁 e2e/
      • 📁 dist/
        • 📄 wallet-fixture-export.spec.ts +1 -1
        • 📄 wallet-fixture-validation.spec.ts +1 -1
      • 📁 fixtures/
        • 📄 fixture-validation.ts +1 -0
        • 📄 onboarding-fixture.json +7 -5

🕵️ @MetaMask/extension-privacy-reviewers (1 files, +0 -1)
  • 📁 test/
    • 📁 e2e/
      • 📁 tests/
        • 📁 settings/
          • 📄 state-logs.json +0 -1

💎 @MetaMask/metamask-assets (1 files, +2 -2)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 assets/
          • 📁 defi-list/
            • 📁 cells/
              • 📄 defi-empty-state.tsx +2 -2

📜 @MetaMask/policy-reviewers (8 files, +64 -0)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +8 -0
      • 📁 experimental/
        • 📄 policy.json +8 -0
      • 📁 flask/
        • 📄 policy.json +8 -0
      • 📁 main/
        • 📄 policy.json +8 -0
    • 📁 webpack/
      • 📁 mv2/
        • 📁 beta/
          • 📄 policy.json +8 -0
        • 📁 experimental/
          • 📄 policy.json +8 -0
        • 📁 flask/
          • 📄 policy.json +8 -0
        • 📁 main/
          • 📄 policy.json +8 -0

Tip

Follow the policy review process outlined in the LavaMoat Policy Review Process doc before expecting an approval from Policy Reviewers.


🧪 @MetaMask/qa (5 files, +10 -8)
  • 📁 test/
    • 📁 e2e/
      • 📁 dist/
        • 📄 wallet-fixture-export.spec.ts +1 -1
        • 📄 wallet-fixture-validation.spec.ts +1 -1
      • 📁 fixtures/
        • 📄 fixture-validation.ts +1 -0
        • 📄 onboarding-fixture.json +7 -5
      • 📁 tests/
        • 📁 settings/
          • 📄 state-logs.json +0 -1

📈 @MetaMask/ramp (2 files, +2 -2)
  • 📁 ui/
    • 📁 hooks/
      • 📁 ramps/
        • 📁 useRamps/
          • 📄 useRamps.test.tsx +1 -1
          • 📄 useRamps.ts +1 -1

🔄 @MetaMask/swaps-engineers (1 files, +37 -3)
  • 📁 test/
    • 📁 e2e/
      • 📁 tests/
        • 📁 bridge/
          • 📄 swap-positive-cases.spec.ts +37 -3

👨‍🔧 @MetaMask/wallet-integrations (3 files, +9 -7)
  • 📁 app/
    • 📁 scripts/
      • 📁 lib/
        • 📁 rpc-method-middleware/
          • 📁 handlers/
            • 📄 request-accounts.test.ts +1 -1
            • 📄 request-accounts.ts +2 -2
          • 📄 createRPCMethodTrackingMiddleware.js +6 -4

🔐 @MetaMask/web3auth (5 files, +50 -25)
  • 📁 ui/
    • 📁 pages/
      • 📁 onboarding-flow/
        • 📁 create-password/
          • 📄 create-password.test.tsx +5 -3
        • 📁 creation-successful/
          • 📄 creation-successful.tsx +9 -14
        • 📁 metametrics/
          • 📄 metametrics.tsx +1 -1
        • 📁 onboarding-flow-switch/
          • 📄 onboarding-flow-switch.test.tsx +31 -5
        • 📁 setup-passkey/
          • 📄 setup-passkey.test.tsx +4 -2

@socket-security
Copy link
Copy Markdown

socket-security Bot commented May 22, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​metamask/​analytics-controller@​1.1.0981008891100

View full report

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented May 22, 2026

Builds ready [2b95db2]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 12 pass · 🟡 13 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26301062668 | 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: -73%
  • loadNewAccount/total: -73%
  • bridgeUserActions/bridge_load_page: -41%
  • bridgeUserActions/bridge_load_asset_picker: -51%
  • bridgeUserActions/bridge_search_token: -31%
  • bridgeUserActions/total: -38%
  • loadNewAccount/load_new_account: -32%
  • loadNewAccount/total: -32%
  • bridgeUserActions/bridge_load_page: +47%

🌐 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
  • 🟡 confirmTx/FCP: p75 1.9s
  • 🟡 bridgeUserActions/FCP: p75 1.8s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -24%
  • startupStandardHome/load: -21%
  • startupStandardHome/domContentLoaded: -20%
  • startupStandardHome/firstPaint: -37%
  • startupStandardHome/backgroundConnect: -34%
  • startupStandardHome/firstReactRender: -30%
  • startupStandardHome/loadScripts: -21%
  • startupStandardHome/numNetworkReqs: -29%
  • startupPowerUserHome/uiStartup: -34%
  • startupPowerUserHome/load: -13%
  • startupPowerUserHome/domContentLoaded: -12%
  • startupPowerUserHome/domInteractive: -25%
  • startupPowerUserHome/firstPaint: -51%
  • startupPowerUserHome/backgroundConnect: -11%
  • startupPowerUserHome/loadScripts: -13%
  • startupPowerUserHome/numNetworkReqs: -67%
  • startupStandardHome/domInteractive: -50%
  • startupStandardHome/backgroundConnect: +15%
  • startupStandardHome/firstReactRender: +17%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/setupStore: -39%
  • startupStandardHome/numNetworkReqs: -21%
  • startupPowerUserHome/uiStartup: -45%
  • startupPowerUserHome/domInteractive: -77%
  • startupPowerUserHome/backgroundConnect: -72%
  • startupPowerUserHome/setupStore: -85%
  • startupPowerUserHome/numNetworkReqs: -58%

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

  • 🟡 startupPowerUserHome/INP: p75 480ms
  • 🟡 startupPowerUserHome/LCP: p75 2.9s
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]
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: -65%
  • onboardingImportWallet/pwFormToMetricsScreen: +540%
  • onboardingImportWallet/metricsToWalletReadyScreen: -31%
  • onboardingImportWallet/doneButtonToHomeScreen: -81%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +18%
  • onboardingImportWallet/total: -46%
  • onboardingNewWallet/srpButtonToPwForm: -75%
  • onboardingNewWallet/createPwToRecoveryScreen: +1183%
  • onboardingNewWallet/skipBackupToMetricsScreen: -66%
  • onboardingNewWallet/doneButtonToAssetList: -46%
  • onboardingNewWallet/total: -38%
  • assetDetails/assetClickToPriceChart: -71%
  • assetDetails/total: -71%
  • solanaAssetDetails/assetClickToPriceChart: -81%
  • solanaAssetDetails/total: -81%
  • importSrpHome/loginToHomeScreen: -43%
  • importSrpHome/openAccountMenuAfterLogin: -81%
  • importSrpHome/homeAfterImportWithNewWallet: -69%
  • importSrpHome/total: -66%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +36%
  • swap/total: +12%

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

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

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +20%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 13.81 KiB (0.21%)
  • ui: 16 Bytes (0%)
  • common: 272 Bytes (0%)

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented May 23, 2026

Builds ready [2e57540]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 13 pass · 🟡 2 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26327589626 | Baseline logs

Interaction Benchmarks · Samples: 5

⚠️ Missing data: chrome/webpack/interactionUserActions

Benchmarkfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -54%
  • loadNewAccount/total: -54%
  • bridgeUserActions/bridge_load_page: -15%
  • bridgeUserActions/bridge_load_asset_picker: -29%
  • bridgeUserActions/bridge_search_token: -28%
  • bridgeUserActions/total: -22%
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: -35%
  • startupStandardHome/load: -33%
  • startupStandardHome/domContentLoaded: -33%
  • startupStandardHome/domInteractive: -39%
  • startupStandardHome/firstPaint: -23%
  • startupStandardHome/backgroundConnect: -33%
  • startupStandardHome/loadScripts: -33%
  • startupStandardHome/numNetworkReqs: -43%
  • startupStandardHome/domInteractive: -51%
  • startupStandardHome/backgroundConnect: +21%
  • startupStandardHome/firstReactRender: +33%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/setupStore: -51%
  • startupStandardHome/numNetworkReqs: -11%
  • startupPowerUserHome/uiStartup: -38%
  • startupPowerUserHome/domInteractive: -71%
  • startupPowerUserHome/backgroundConnect: -62%
  • startupPowerUserHome/firstReactRender: +37%
  • startupPowerUserHome/setupStore: -34%
  • startupPowerUserHome/numNetworkReqs: -78%

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

  • 🟡 startupPowerUserHome/LCP: p75 2.9s
User Journey Benchmarks · Samples: 5 · mock API

⚠️ Missing data: chrome/webpack/userJourneyAssets, 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]
importSrpHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
assetDetails
[Sentry log · main/release]
🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -63%
  • onboardingImportWallet/pwFormToMetricsScreen: +572%
  • onboardingImportWallet/metricsToWalletReadyScreen: -31%
  • onboardingImportWallet/doneButtonToHomeScreen: -80%
  • onboardingImportWallet/total: -51%
  • onboardingNewWallet/srpButtonToPwForm: -75%
  • onboardingNewWallet/createPwToRecoveryScreen: +1001%
  • onboardingNewWallet/skipBackupToMetricsScreen: -65%
  • onboardingNewWallet/doneButtonToAssetList: -51%
  • onboardingNewWallet/total: -43%

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

  • 🟡 onboardingImportWallet/INP: p75 248ms
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: +16%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 13.81 KiB (0.21%)
  • ui: 16 Bytes (0%)
  • common: 238 Bytes (0%)

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented May 26, 2026

Builds ready [27c93f3]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 23 pass · 🟡 2 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26473142879 | 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: -77%
  • loadNewAccount/total: -77%
  • bridgeUserActions/bridge_load_page: -71%
  • bridgeUserActions/bridge_load_asset_picker: -63%
  • bridgeUserActions/bridge_search_token: -32%
  • bridgeUserActions/total: -45%
  • loadNewAccount/load_new_account: -42%
  • loadNewAccount/total: -42%
  • bridgeUserActions/bridge_load_page: +29%
  • bridgeUserActions/bridge_load_asset_picker: -29%
  • bridgeUserActions/bridge_search_token: -30%
  • bridgeUserActions/total: -18%
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -38%
  • startupStandardHome/load: -37%
  • startupStandardHome/domContentLoaded: -37%
  • startupStandardHome/domInteractive: -39%
  • startupStandardHome/firstPaint: -23%
  • startupStandardHome/backgroundConnect: -41%
  • startupStandardHome/loadScripts: -37%
  • startupStandardHome/setupStore: -21%
  • startupStandardHome/numNetworkReqs: -50%
  • startupPowerUserHome/uiStartup: -41%
  • startupPowerUserHome/load: -25%
  • startupPowerUserHome/domContentLoaded: -26%
  • startupPowerUserHome/domInteractive: -50%
  • startupPowerUserHome/firstPaint: -42%
  • startupPowerUserHome/backgroundConnect: -12%
  • startupPowerUserHome/firstReactRender: +13%
  • startupPowerUserHome/loadScripts: -27%
  • startupPowerUserHome/numNetworkReqs: -68%
  • startupStandardHome/domInteractive: -52%
  • startupStandardHome/backgroundConnect: +12%
  • startupStandardHome/firstReactRender: +28%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/setupStore: -51%
  • startupStandardHome/numNetworkReqs: -21%
  • startupPowerUserHome/uiStartup: -46%
  • startupPowerUserHome/load: -16%
  • startupPowerUserHome/domContentLoaded: -16%
  • startupPowerUserHome/domInteractive: -78%
  • startupPowerUserHome/backgroundConnect: -71%
  • startupPowerUserHome/firstReactRender: +20%
  • startupPowerUserHome/loadScripts: -14%
  • startupPowerUserHome/setupStore: -83%
  • startupPowerUserHome/numNetworkReqs: -65%

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

  • 🟡 startupPowerUserHome/INP: p75 432ms
  • 🟡 startupPowerUserHome/INP: p75 208ms
  • 🟡 startupPowerUserHome/LCP: p75 2.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]
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: -63%
  • onboardingImportWallet/pwFormToMetricsScreen: +547%
  • onboardingImportWallet/metricsToWalletReadyScreen: -34%
  • onboardingImportWallet/doneButtonToHomeScreen: -74%
  • onboardingImportWallet/total: -45%
  • onboardingNewWallet/srpButtonToPwForm: -78%
  • onboardingNewWallet/createPwToRecoveryScreen: +1035%
  • onboardingNewWallet/skipBackupToMetricsScreen: -64%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: -23%
  • onboardingNewWallet/doneButtonToAssetList: -39%
  • onboardingNewWallet/total: -32%
  • assetDetails/assetClickToPriceChart: -51%
  • assetDetails/total: -51%
  • solanaAssetDetails/assetClickToPriceChart: -75%
  • solanaAssetDetails/total: -75%
  • importSrpHome/loginToHomeScreen: -40%
  • importSrpHome/openAccountMenuAfterLogin: -78%
  • importSrpHome/homeAfterImportWithNewWallet: -75%
  • importSrpHome/total: -71%
  • swap/openSwapPageFromHome: -98%
  • swap/fetchAndDisplaySwapQuotes: +35%
  • swap/total: +12%
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: +31%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 13.8 KiB (0.24%)
  • ui: -3 Bytes (0%)
  • common: 282 Bytes (0%)


const EXTENSION_UNINSTALL_URL = 'https://metamask.io/uninstalled';

export const overrideAnonymousEventNames = {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This logic is now moved to app/scripts/controllers/analytics/platform-adapter.ts


// The function is used to build a unique messageId for segment messages
// It uses actionId and uniqueIdentifier from event if present
const buildUniqueMessageId = (args: {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

messageId is no longer needed, as now managed by the AnalyticsController

* the `anonymous` flag.
*/
const controllerMetadata: StateMetadata<MetaMetricsControllerState> = {
metaMetricsId: {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

metaMetricsId is replaced by AnalyticsController's analyticsId

includeInDebugSnapshot: true,
usedInUi: true,
},
participateInMetaMetrics: {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

participateInMetaMetrics is replaced by MetaMetricsController's completedMetaMetricsOnboarding and AnalyticsController's optedIn

includeInDebugSnapshot: true,
usedInUi: false,
},
segmentApiCalls: {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

segmentApiCalls is replaced by AnalyticsController's eventQueue

Comment thread ui/store/actions.ts
) {
return submitRequestToBackground('trackMetaMetricsPage', [
{ ...payload, actionId: generateActionId() },
options,
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The only file calling trackMetaMetricsPage is ui/contexts/metametrics.tsx, and it no longer has options to pass.

The only option was isOptInPath, but we've removed it in this PR as it was a legacy UI-routing exception, that was no longer used.

event: 'Fake Event',
category: 'Unit Test',
},
{ flushImmediately: true },
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

flushImmediately option wasn't used anywhere in the codebase, and is now removed with this PR

spy.mock.calls[0][1],
);
});
});
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

These "anonymous event names" tests are removed because correponding behavior no longer belongs to MetaMetricsController. It's been moved to app/scripts/controllers/analytics/platform-adapter.ts.

});
});

describe('deterministic messageId', function () {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

messageId is no longer managed by MetaMetricsController, it's now managed by the AnalyticsController

});
});

describe('submitting segmentApiCalls to segment SDK', function () {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Persisted event queue (segmentApiCalls) is no longer managed by MetaMetricsController, it's now managed by the AnalyticsController

Comment thread app/scripts/controllers/metametrics-controller.ts
Comment thread app/scripts/controllers/metametrics-controller.ts
Comment thread app/scripts/controllers/metametrics-controller.ts
Comment thread app/scripts/controllers/analytics/platform-adapter.ts
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented May 28, 2026

Builds ready [37d047e]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 23 pass · 🟡 2 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26584382378 | 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: -67%
  • loadNewAccount/total: -67%
  • bridgeUserActions/bridge_load_page: -71%
  • bridgeUserActions/bridge_load_asset_picker: -63%
  • bridgeUserActions/bridge_search_token: -29%
  • bridgeUserActions/total: -43%
  • loadNewAccount/load_new_account: -54%
  • loadNewAccount/total: -54%
  • bridgeUserActions/bridge_load_page: -37%
  • bridgeUserActions/bridge_load_asset_picker: -48%
  • bridgeUserActions/bridge_search_token: -32%
  • bridgeUserActions/total: -25%
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -34%
  • startupStandardHome/load: -33%
  • startupStandardHome/domContentLoaded: -32%
  • startupStandardHome/domInteractive: -41%
  • startupStandardHome/firstPaint: -15%
  • startupStandardHome/backgroundConnect: -31%
  • startupStandardHome/firstReactRender: -11%
  • startupStandardHome/loadScripts: -33%
  • startupStandardHome/setupStore: -14%
  • startupStandardHome/numNetworkReqs: -50%
  • startupPowerUserHome/uiStartup: -40%
  • startupPowerUserHome/load: -25%
  • startupPowerUserHome/domContentLoaded: -24%
  • startupPowerUserHome/domInteractive: -43%
  • startupPowerUserHome/firstPaint: -34%
  • startupPowerUserHome/firstReactRender: +17%
  • startupPowerUserHome/loadScripts: -25%
  • startupPowerUserHome/numNetworkReqs: -44%
  • startupStandardHome/domInteractive: -54%
  • startupStandardHome/backgroundConnect: +16%
  • startupStandardHome/firstReactRender: +39%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/setupStore: -43%
  • startupStandardHome/numNetworkReqs: -45%
  • startupPowerUserHome/uiStartup: -32%
  • startupPowerUserHome/domInteractive: -33%
  • startupPowerUserHome/backgroundConnect: -40%
  • startupPowerUserHome/firstReactRender: +54%
  • startupPowerUserHome/setupStore: -50%
  • startupPowerUserHome/numNetworkReqs: -76%

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

  • 🔴 startupPowerUserHome/INP: p75 576ms
  • 🟡 startupPowerUserHome/LCP: p75 3.1s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
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: -61%
  • onboardingImportWallet/pwFormToMetricsScreen: +561%
  • onboardingImportWallet/metricsToWalletReadyScreen: -33%
  • onboardingImportWallet/doneButtonToHomeScreen: -74%
  • onboardingImportWallet/total: -47%
  • onboardingNewWallet/srpButtonToPwForm: -76%
  • onboardingNewWallet/createPwToRecoveryScreen: +1109%
  • onboardingNewWallet/skipBackupToMetricsScreen: -69%
  • onboardingNewWallet/doneButtonToAssetList: -45%
  • onboardingNewWallet/total: -37%
  • assetDetails/assetClickToPriceChart: -49%
  • assetDetails/total: -49%
  • solanaAssetDetails/assetClickToPriceChart: -70%
  • solanaAssetDetails/total: -70%
  • importSrpHome/loginToHomeScreen: -40%
  • importSrpHome/openAccountMenuAfterLogin: -75%
  • importSrpHome/homeAfterImportWithNewWallet: -69%
  • importSrpHome/total: -63%
  • swap/openSwapPageFromHome: -96%
  • swap/fetchAndDisplaySwapQuotes: +36%
  • swap/total: +13%
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: +17%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 14.98 KiB (0.26%)
  • ui: 196 Bytes (0%)
  • common: 224 Bytes (0%)

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 82af9d0. Configure here.

Comment thread app/scripts/controllers/metametrics-controller.ts
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented May 28, 2026

Builds ready [82af9d0]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 21 pass · 🟡 4 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26588424218 | 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: -73%
  • loadNewAccount/total: -73%
  • bridgeUserActions/bridge_load_page: -70%
  • bridgeUserActions/bridge_load_asset_picker: -48%
  • bridgeUserActions/bridge_search_token: -26%
  • bridgeUserActions/total: -38%
  • loadNewAccount/load_new_account: -47%
  • loadNewAccount/total: -47%
  • confirmTx/confirm_tx: +12%
  • confirmTx/total: +12%
  • bridgeUserActions/bridge_load_page: -24%
  • bridgeUserActions/bridge_load_asset_picker: -33%
  • bridgeUserActions/bridge_search_token: -30%
  • bridgeUserActions/total: -31%
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -34%
  • startupStandardHome/load: -32%
  • startupStandardHome/domContentLoaded: -32%
  • startupStandardHome/domInteractive: -38%
  • startupStandardHome/firstPaint: -18%
  • startupStandardHome/backgroundConnect: -33%
  • startupStandardHome/loadScripts: -32%
  • startupStandardHome/numNetworkReqs: -50%
  • startupPowerUserHome/uiStartup: -40%
  • startupPowerUserHome/load: -25%
  • startupPowerUserHome/domContentLoaded: -25%
  • startupPowerUserHome/domInteractive: -49%
  • startupPowerUserHome/firstPaint: -40%
  • startupPowerUserHome/firstReactRender: +25%
  • startupPowerUserHome/loadScripts: -26%
  • startupPowerUserHome/numNetworkReqs: -47%
  • startupStandardHome/domInteractive: -50%
  • startupStandardHome/backgroundConnect: +14%
  • startupStandardHome/firstReactRender: +39%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/setupStore: -51%
  • startupStandardHome/numNetworkReqs: -45%
  • startupPowerUserHome/uiStartup: -24%
  • startupPowerUserHome/domInteractive: -56%
  • startupPowerUserHome/backgroundConnect: -30%
  • startupPowerUserHome/firstReactRender: +50%
  • startupPowerUserHome/setupStore: -31%
  • startupPowerUserHome/numNetworkReqs: -76%

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

  • 🔴 startupPowerUserHome/INP: p75 600ms
  • 🟡 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]
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: -62%
  • onboardingImportWallet/pwFormToMetricsScreen: +567%
  • onboardingImportWallet/metricsToWalletReadyScreen: -14%
  • onboardingImportWallet/doneButtonToHomeScreen: -75%
  • onboardingImportWallet/total: -45%
  • onboardingNewWallet/srpButtonToPwForm: -78%
  • onboardingNewWallet/createPwToRecoveryScreen: +1031%
  • onboardingNewWallet/skipBackupToMetricsScreen: -67%
  • onboardingNewWallet/doneButtonToAssetList: -46%
  • onboardingNewWallet/total: -39%
  • assetDetails/assetClickToPriceChart: -54%
  • assetDetails/total: -54%
  • solanaAssetDetails/assetClickToPriceChart: -76%
  • solanaAssetDetails/total: -76%
  • importSrpHome/loginToHomeScreen: -28%
  • importSrpHome/openAccountMenuAfterLogin: -75%
  • importSrpHome/homeAfterImportWithNewWallet: -69%
  • importSrpHome/total: -66%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +37%
  • swap/total: +12%

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

  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/INP: p75 208ms
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: -30%
  • dappPageLoad/domContentLoaded: -42%
  • dappPageLoad/firstPaint: -35%
  • dappPageLoad/firstContentfulPaint: -35%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 14.99 KiB (0.26%)
  • ui: 196 Bytes (0%)
  • common: 224 Bytes (0%)

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented May 28, 2026

Builds ready [9ca4546]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 23 pass · 🟡 2 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26602565035 | 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: -74%
  • loadNewAccount/total: -74%
  • bridgeUserActions/bridge_load_page: -66%
  • bridgeUserActions/bridge_load_asset_picker: -61%
  • bridgeUserActions/bridge_search_token: -28%
  • bridgeUserActions/total: -42%
  • loadNewAccount/load_new_account: -50%
  • loadNewAccount/total: -50%
  • bridgeUserActions/bridge_load_page: -14%
  • bridgeUserActions/bridge_load_asset_picker: -21%
  • bridgeUserActions/bridge_search_token: -29%
  • bridgeUserActions/total: -25%
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -33%
  • startupStandardHome/load: -32%
  • startupStandardHome/domContentLoaded: -32%
  • startupStandardHome/domInteractive: -37%
  • startupStandardHome/firstPaint: -16%
  • startupStandardHome/backgroundConnect: -32%
  • startupStandardHome/loadScripts: -32%
  • startupStandardHome/numNetworkReqs: -50%
  • startupPowerUserHome/uiStartup: -41%
  • startupPowerUserHome/load: -26%
  • startupPowerUserHome/domContentLoaded: -25%
  • startupPowerUserHome/domInteractive: -44%
  • startupPowerUserHome/firstPaint: -35%
  • startupPowerUserHome/firstReactRender: +13%
  • startupPowerUserHome/loadScripts: -26%
  • startupPowerUserHome/numNetworkReqs: -38%
  • startupStandardHome/domInteractive: -44%
  • startupStandardHome/backgroundConnect: +16%
  • startupStandardHome/firstReactRender: +39%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/setupStore: -20%
  • startupStandardHome/numNetworkReqs: -42%
  • startupPowerUserHome/uiStartup: -29%
  • startupPowerUserHome/domInteractive: -28%
  • startupPowerUserHome/backgroundConnect: -39%
  • startupPowerUserHome/firstReactRender: +46%
  • startupPowerUserHome/setupStore: -31%
  • startupPowerUserHome/numNetworkReqs: -72%

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

  • 🔴 startupPowerUserHome/INP: p75 544ms
  • 🟡 startupPowerUserHome/INP: p75 224ms
  • 🟡 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]
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: -63%
  • onboardingImportWallet/pwFormToMetricsScreen: +574%
  • onboardingImportWallet/metricsToWalletReadyScreen: -24%
  • onboardingImportWallet/doneButtonToHomeScreen: -74%
  • onboardingImportWallet/total: -46%
  • onboardingNewWallet/createWalletToSocialScreen: +11%
  • onboardingNewWallet/srpButtonToPwForm: -75%
  • onboardingNewWallet/createPwToRecoveryScreen: +1222%
  • onboardingNewWallet/skipBackupToMetricsScreen: -62%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +24%
  • onboardingNewWallet/doneButtonToAssetList: -41%
  • onboardingNewWallet/total: -33%
  • assetDetails/assetClickToPriceChart: -55%
  • assetDetails/total: -55%
  • solanaAssetDetails/assetClickToPriceChart: -74%
  • solanaAssetDetails/total: -74%
  • importSrpHome/loginToHomeScreen: -40%
  • importSrpHome/openAccountMenuAfterLogin: -73%
  • importSrpHome/homeAfterImportWithNewWallet: -76%
  • importSrpHome/total: -71%
  • swap/openSwapPageFromHome: -96%
  • swap/fetchAndDisplaySwapQuotes: +35%
  • swap/total: +12%
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: +24%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 14.98 KiB (0.26%)
  • ui: 190 Bytes (0%)
  • common: 230 Bytes (0%)

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented May 29, 2026

Builds ready [08a46b1]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 23 pass · 🟡 1 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26646242494 | 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: -77%
  • loadNewAccount/total: -77%
  • bridgeUserActions/bridge_load_page: -72%
  • bridgeUserActions/bridge_load_asset_picker: -53%
  • bridgeUserActions/bridge_search_token: -25%
  • bridgeUserActions/total: -35%
  • loadNewAccount/load_new_account: -53%
  • loadNewAccount/total: -53%
  • bridgeUserActions/bridge_load_page: -13%
  • bridgeUserActions/bridge_search_token: -18%
  • bridgeUserActions/total: -13%
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: -33%
  • startupStandardHome/load: -32%
  • startupStandardHome/domContentLoaded: -31%
  • startupStandardHome/domInteractive: -40%
  • startupStandardHome/firstPaint: -12%
  • startupStandardHome/backgroundConnect: -30%
  • startupStandardHome/loadScripts: -32%
  • startupStandardHome/setupStore: -21%
  • startupStandardHome/numNetworkReqs: -50%
  • startupStandardHome/domInteractive: -57%
  • startupStandardHome/backgroundConnect: +23%
  • startupStandardHome/firstReactRender: +50%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/setupStore: -39%
  • startupStandardHome/numNetworkReqs: -45%
  • startupPowerUserHome/uiStartup: -25%
  • startupPowerUserHome/domInteractive: -19%
  • startupPowerUserHome/backgroundConnect: -33%
  • startupPowerUserHome/firstReactRender: +29%
  • startupPowerUserHome/setupStore: -50%
  • startupPowerUserHome/numNetworkReqs: -73%

🌐 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]
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: -62%
  • onboardingImportWallet/pwFormToMetricsScreen: +602%
  • onboardingImportWallet/metricsToWalletReadyScreen: -30%
  • onboardingImportWallet/doneButtonToHomeScreen: -75%
  • onboardingImportWallet/total: -49%
  • onboardingNewWallet/srpButtonToPwForm: -77%
  • onboardingNewWallet/createPwToRecoveryScreen: +1227%
  • onboardingNewWallet/skipBackupToMetricsScreen: -64%
  • onboardingNewWallet/doneButtonToAssetList: -56%
  • onboardingNewWallet/total: -49%
  • assetDetails/assetClickToPriceChart: -60%
  • assetDetails/total: -60%
  • solanaAssetDetails/assetClickToPriceChart: -69%
  • solanaAssetDetails/total: -69%
  • importSrpHome/loginToHomeScreen: -39%
  • importSrpHome/openAccountMenuAfterLogin: -73%
  • importSrpHome/homeAfterImportWithNewWallet: -67%
  • importSrpHome/total: -63%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +35%
  • swap/total: +12%
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: +17%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 14.98 KiB (0.26%)
  • ui: 138 Bytes (0%)
  • common: 379 Bytes (0%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size-XL team-extension-platform Extension Platform team

Projects

Status: Needs dev review

Development

Successfully merging this pull request may close these issues.

1 participant