Skip to content

refactor(analytics): migrate platform misc UI and cross-domain E2E#43441

Open
gauthierpetetin wants to merge 1 commit into
mainfrom
refactor/analytics-phase-b-platform-misc
Open

refactor(analytics): migrate platform misc UI and cross-domain E2E#43441
gauthierpetetin wants to merge 1 commit into
mainfrom
refactor/analytics-phase-b-platform-misc

Conversation

@gauthierpetetin

@gauthierpetetin gauthierpetetin commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Description

Part 13 of the Analytics Phase B split (supersedes monolithic #43406).

Owner: Extension Platform

Reason: Cross-cutting UI and E2E consumers still reference legacy metrics selectors.

Solution: Migrate error page, portfolio helper, survey toast, batch-sell, coin-overview, and cross-domain E2E specs to canonical analytics selectors.

Depends on: #43430

Changelog

CHANGELOG entry: null

Related issues

Part of https://github.com/MetaMask/MetaMask-planning/issues/7331

Manual testing steps

  1. Run yarn start and verify portfolio/discover URL params with metrics on and off
  2. Run yarn build:test
  3. Run profile-metrics, survey, and vault-corruption E2E specs affected by this change

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.

@metamaskbotv2

metamaskbotv2 Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor
Builds ready [31f18ad]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 20 pass · 🟡 5 warn · 🔴 0 fail)

Baseline (latest main): 1ab4918 | Date: 6/11/2026 | Pipeline: 27327246265 | 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: -18%
  • loadNewAccount/total: -18%
  • loadNewAccount/inp: +58%
  • loadNewAccount/lcp: +27%
  • loadNewAccount/cls: -100%
  • confirmTx/inp: +70%
  • bridgeUserActions/longTaskCount: +25%
  • bridgeUserActions/longTaskTotalDuration: +11%
  • bridgeUserActions/tbt: -22%
  • bridgeUserActions/inp: -14%
  • loadNewAccount/load_new_account: +42%
  • loadNewAccount/total: +42%
  • loadNewAccount/inp: -17%
  • loadNewAccount/lcp: +1063%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/inp: -10%
  • confirmTx/lcp: +1188%
  • bridgeUserActions/bridge_load_page: +149%
  • bridgeUserActions/bridge_load_asset_picker: +42%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +19%
  • bridgeUserActions/fcp: -47%
  • bridgeUserActions/lcp: +1146%
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

  • startupPowerUserHome/setupStore: +13%
  • startupStandardHome/domInteractive: -12%
  • startupStandardHome/inp: -38%
  • startupStandardHome/fcp: -11%
  • startupPowerUserHome/backgroundConnect: -22%
  • startupPowerUserHome/setupStore: -34%

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

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

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/doneButtonToHomeScreen: -91%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -98%
  • onboardingImportWallet/longTaskCount: -77%
  • onboardingImportWallet/longTaskTotalDuration: -94%
  • onboardingImportWallet/longTaskMaxDuration: -91%
  • onboardingImportWallet/tbt: -99%
  • onboardingImportWallet/total: -89%
  • onboardingNewWallet/createPwToRecoveryScreen: +11%
  • onboardingNewWallet/skipBackupToMetricsScreen: +23%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +15%
  • onboardingNewWallet/doneButtonToAssetList: -19%
  • onboardingNewWallet/longTaskCount: -38%
  • onboardingNewWallet/longTaskTotalDuration: -51%
  • onboardingNewWallet/longTaskMaxDuration: -12%
  • onboardingNewWallet/tbt: -63%
  • onboardingNewWallet/total: -14%
  • assetDetails/assetClickToPriceChart: -25%
  • assetDetails/longTaskCount: +400%
  • assetDetails/longTaskTotalDuration: -100%
  • assetDetails/longTaskMaxDuration: +400%
  • assetDetails/total: -25%
  • assetDetails/inp: -12%
  • assetDetails/cls: -94%
  • solanaAssetDetails/assetClickToPriceChart: -36%
  • solanaAssetDetails/total: -36%
  • solanaAssetDetails/lcp: +22%
  • solanaAssetDetails/cls: -84%
  • importSrpHome/loginToHomeScreen: -42%
  • importSrpHome/openAccountMenuAfterLogin: +12%
  • importSrpHome/homeAfterImportWithNewWallet: -40%
  • importSrpHome/longTaskCount: -41%
  • importSrpHome/longTaskTotalDuration: -56%
  • importSrpHome/longTaskMaxDuration: -45%
  • importSrpHome/tbt: -69%
  • importSrpHome/total: -39%
  • importSrpHome/inp: -52%
  • importSrpHome/fcp: -27%
  • importSrpHome/lcp: +471%
  • importSrpHome/cls: -40%
  • sendTransactions/openSendPageFromHome: +42%
  • sendTransactions/selectTokenToSendFormLoaded: +32%
  • sendTransactions/reviewTransactionToConfirmationPage: +12%
  • sendTransactions/longTaskCount: +11%
  • sendTransactions/longTaskTotalDuration: +24%
  • sendTransactions/tbt: +46%
  • sendTransactions/total: +12%
  • sendTransactions/inp: -33%
  • sendTransactions/lcp: +18%
  • sendTransactions/cls: -56%

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

  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 245 Bytes (0%)
  • ui: 263 Bytes (0%)
  • common: 188 Bytes (0%)

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

Base automatically changed from refactor/analytics-phase-b-foundation to main June 11, 2026 14:49
@gauthierpetetin gauthierpetetin force-pushed the refactor/analytics-phase-b-platform-misc branch from 31f18ad to 59cd57d Compare June 11, 2026 14:53
pull Bot pushed a commit to Reality2byte/metamask-extension that referenced this pull request Jun 11, 2026
MetaMask#43430)

## **Description**

Part 1 of the Analytics Phase B split (supersedes monolithic MetaMask#43406).

**Reason:** Phase B migrates off legacy `participateInMetaMetrics` /
`metaMetricsId` toward canonical `analyticsId`, `optedIn`, and
`completedMetaMetricsOnboarding`.

**Solution:** This PR lands the shared foundation: Redux initial state,
selectors, metrics context, background/Sentry/controller wiring, and
messenger/service inits. It also adds temporary backward-compat shims so
domain PRs can merge in parallel.

**Shim contract (removed in MetaMask#43442):**

| Legacy | Replacement | Shim behavior |
|--------|-------------|---------------|
| `getParticipateInMetaMetrics` | `completed && optedIn` | deprecated
alias |
| `getIsParticipateInMetaMetricsSet` |
`getCompletedMetaMetricsOnboarding` | alias |
| `getMetaMetricsId` | `getAnalyticsId` | alias |
| `state.metamask.metaMetricsId` | `state.metamask.analyticsId` |
projected in `getState()` |
| `state.metamask.participateInMetaMetrics` | derived from canonical
fields | projected in `getState()` |

**Merge order:** Must merge before consumer PRs (MetaMask#43431MetaMask#43441).

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Part of MetaMask/MetaMask-planning#7331

## **Manual testing steps**

1. Run `yarn start` and load the extension
2. Complete onboarding metrics opt-in and opt-out flows
3. Toggle metrics in Settings → Privacy
4. Confirm the extension loads without background selector errors

<!--
## **Screenshots/Recordings**

### **Before**

### **After**
-->

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Changes how analytics consent and user ID are read everywhere events,
Sentry, OAuth buffering, and sampling run; behavior should match the old
model but the split onboarding/opt-in gates add regression surface
across privacy flows.
> 
> **Overview**
> **Phase B foundation** for analytics: the extension stops treating
`participateInMetaMetrics` and `metaMetricsId` as the source of truth
and wires **`analyticsId`**, **`optedIn`**, and
**`completedMetaMetricsOnboarding`** through Redux, background,
controllers, and Sentry.
> 
> The UI Redux slice and selectors now expose the canonical fields
(`getOptedIn`, `getCompletedMetaMetricsOnboarding`, `getAnalyticsId`),
with **deprecated aliases** for `getParticipateInMetaMetrics`,
`getIsParticipateInMetaMetricsSet`, and `getMetaMetricsId`.
`MetaMetricsProvider` gates buffering and immediate tracking on
**onboarding complete + opt-in + analytics ID** instead of the old
combined flag.
> 
> Background and services apply the same split: `AppOpened` /
`AppInstalled` / dapp-viewed sampling, cookie handler setup, OAuth event
buffering, uninstall URL encoding, data-deletion Segment calls, and RPC
degraded/unavailable sampling all read **`analyticsId`** and require
**`completedMetaMetricsOnboarding && optedIn`** where metrics used to
check `participateInMetaMetrics`. Messenger inits fetch the ID via
**`AnalyticsController:getState`** rather than
`MetaMetricsController:getMetaMetricsId`.
> 
> Sentry helpers are renamed and reshaped (`getAnalyticsState`,
`AnalyticsParticipation`) so transport, breadcrumbs, and the MetaMetrics
integration drop or send events based on the two consent booleans and
attach `user.id` from `analyticsId`. `getState()` in the main controller
still **projects** legacy `participateInMetaMetrics` / `metaMetricsId`
for parallel consumer PRs.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
7311dbb. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

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

metamaskbotv2 Bot commented Jun 11, 2026

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

Baseline (latest main): 86afca4 | Date: 6/11/2026 | Pipeline: 27355766544 | 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: -29%
  • loadNewAccount/total: -29%
  • loadNewAccount/lcp: +16%
  • loadNewAccount/cls: -17%
  • bridgeUserActions/bridge_load_page: +15%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/longTaskTotalDuration: -17%
  • bridgeUserActions/tbt: -18%
  • bridgeUserActions/inp: -45%
  • loadNewAccount/load_new_account: +21%
  • loadNewAccount/total: +21%
  • loadNewAccount/fcp: -54%
  • loadNewAccount/lcp: +1208%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/fcp: -53%
  • confirmTx/lcp: +1145%
  • bridgeUserActions/bridge_load_page: +183%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/inp: -45%
  • bridgeUserActions/fcp: -52%
  • bridgeUserActions/lcp: +1131%

🌐 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]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/inp: -11%
  • startupPowerUserHome/domInteractive: +10%
  • startupPowerUserHome/initialActions: +100%
  • startupPowerUserHome/numNetworkReqs: +42%
  • startupPowerUserHome/inp: -12%
  • startupStandardHome/domInteractive: -20%
  • startupStandardHome/inp: +100%
  • startupStandardHome/fcp: -18%
  • startupPowerUserHome/domInteractive: -24%
  • startupPowerUserHome/backgroundConnect: +14%
  • startupPowerUserHome/fcp: -27%

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

  • 🟡 startupPowerUserHome/INP: p75 488ms
  • 🟡 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]
🟡 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: +11%
  • onboardingImportWallet/pwFormToMetricsScreen: +11%
  • onboardingImportWallet/metricsToWalletReadyScreen: +15%
  • onboardingImportWallet/doneButtonToHomeScreen: -85%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -98%
  • onboardingImportWallet/longTaskCount: -72%
  • onboardingImportWallet/longTaskTotalDuration: -91%
  • onboardingImportWallet/longTaskMaxDuration: -89%
  • onboardingImportWallet/tbt: -99%
  • onboardingImportWallet/total: -84%
  • onboardingNewWallet/skipBackupToMetricsScreen: +11%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +16%
  • onboardingNewWallet/doneButtonToAssetList: -21%
  • onboardingNewWallet/longTaskCount: -44%
  • onboardingNewWallet/longTaskTotalDuration: -43%
  • onboardingNewWallet/longTaskMaxDuration: -14%
  • onboardingNewWallet/tbt: -41%
  • onboardingNewWallet/total: -17%
  • solanaAssetDetails/assetClickToPriceChart: -61%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/tbt: -100%
  • solanaAssetDetails/total: -61%
  • solanaAssetDetails/lcp: -11%
  • solanaAssetDetails/cls: -93%
  • importSrpHome/loginToHomeScreen: -16%
  • importSrpHome/openAccountMenuAfterLogin: +12%
  • importSrpHome/homeAfterImportWithNewWallet: -38%
  • importSrpHome/longTaskCount: -21%
  • importSrpHome/longTaskTotalDuration: -27%
  • importSrpHome/longTaskMaxDuration: -20%
  • importSrpHome/tbt: -31%
  • importSrpHome/total: -33%
  • importSrpHome/inp: -38%
  • importSrpHome/lcp: +16%
  • sendTransactions/openSendPageFromHome: +144%
  • sendTransactions/selectTokenToSendFormLoaded: +59%
  • sendTransactions/reviewTransactionToConfirmationPage: +12%
  • sendTransactions/longTaskTotalDuration: +20%
  • sendTransactions/tbt: +52%
  • sendTransactions/total: +13%
  • sendTransactions/cls: -73%

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

  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/INP: p75 224ms
  • 🟡 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
  • background: 246 Bytes (0%)
  • ui: 263 Bytes (0%)
  • common: 188 Bytes (0%)

@metamaskbotv2

metamaskbotv2 Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor
Builds ready [d0ea222] [reused from 59cd57d]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 17 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 86afca4 | Date: 6/11/2026 | Pipeline: 27360438236 | 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: -29%
  • loadNewAccount/total: -29%
  • loadNewAccount/lcp: +16%
  • loadNewAccount/cls: -17%
  • bridgeUserActions/bridge_load_page: +15%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/longTaskTotalDuration: -17%
  • bridgeUserActions/tbt: -18%
  • bridgeUserActions/inp: -45%
  • loadNewAccount/load_new_account: +21%
  • loadNewAccount/total: +21%
  • loadNewAccount/fcp: -54%
  • loadNewAccount/lcp: +1208%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/fcp: -53%
  • confirmTx/lcp: +1145%
  • bridgeUserActions/bridge_load_page: +183%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/inp: -45%
  • bridgeUserActions/fcp: -52%
  • bridgeUserActions/lcp: +1131%

🌐 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]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/inp: -11%
  • startupPowerUserHome/domInteractive: +10%
  • startupPowerUserHome/initialActions: +100%
  • startupPowerUserHome/numNetworkReqs: +42%
  • startupPowerUserHome/inp: -12%
  • startupStandardHome/domInteractive: -20%
  • startupStandardHome/inp: +100%
  • startupStandardHome/fcp: -18%
  • startupPowerUserHome/domInteractive: -24%
  • startupPowerUserHome/backgroundConnect: +14%
  • startupPowerUserHome/fcp: -27%

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

  • 🟡 startupPowerUserHome/INP: p75 488ms
  • 🟡 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]
🟡 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: +11%
  • onboardingImportWallet/pwFormToMetricsScreen: +11%
  • onboardingImportWallet/metricsToWalletReadyScreen: +15%
  • onboardingImportWallet/doneButtonToHomeScreen: -85%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -98%
  • onboardingImportWallet/longTaskCount: -72%
  • onboardingImportWallet/longTaskTotalDuration: -91%
  • onboardingImportWallet/longTaskMaxDuration: -89%
  • onboardingImportWallet/tbt: -99%
  • onboardingImportWallet/total: -84%
  • onboardingNewWallet/skipBackupToMetricsScreen: +11%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +16%
  • onboardingNewWallet/doneButtonToAssetList: -21%
  • onboardingNewWallet/longTaskCount: -44%
  • onboardingNewWallet/longTaskTotalDuration: -43%
  • onboardingNewWallet/longTaskMaxDuration: -14%
  • onboardingNewWallet/tbt: -41%
  • onboardingNewWallet/total: -17%
  • solanaAssetDetails/assetClickToPriceChart: -61%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/tbt: -100%
  • solanaAssetDetails/total: -61%
  • solanaAssetDetails/lcp: -11%
  • solanaAssetDetails/cls: -93%
  • importSrpHome/loginToHomeScreen: -16%
  • importSrpHome/openAccountMenuAfterLogin: +12%
  • importSrpHome/homeAfterImportWithNewWallet: -38%
  • importSrpHome/longTaskCount: -21%
  • importSrpHome/longTaskTotalDuration: -27%
  • importSrpHome/longTaskMaxDuration: -20%
  • importSrpHome/tbt: -31%
  • importSrpHome/total: -33%
  • importSrpHome/inp: -38%
  • importSrpHome/lcp: +16%
  • sendTransactions/openSendPageFromHome: +144%
  • sendTransactions/selectTokenToSendFormLoaded: +59%
  • sendTransactions/reviewTransactionToConfirmationPage: +12%
  • sendTransactions/longTaskTotalDuration: +20%
  • sendTransactions/tbt: +52%
  • sendTransactions/total: +13%
  • sendTransactions/cls: -73%

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

  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/INP: p75 224ms
  • 🟡 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
  • background: 58 Bytes (0%)
  • ui: 263 Bytes (0%)
  • common: 20 Bytes (0%)

Refresh slice from main-synced monolithic branch.
@gauthierpetetin gauthierpetetin force-pushed the refactor/analytics-phase-b-platform-misc branch from d0ea222 to bb288b5 Compare June 12, 2026 04:33
@metamaskbotv2

metamaskbotv2 Bot commented Jun 12, 2026

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

Baseline (latest main): 5befce5 | Date: 6/12/2026 | Pipeline: 27394677529 | Baseline logs

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: -31%
  • loadNewAccount/longTaskCount: -100%
  • loadNewAccount/longTaskTotalDuration: -100%
  • loadNewAccount/longTaskMaxDuration: -100%
  • loadNewAccount/tbt: -100%
  • loadNewAccount/total: -31%
  • loadNewAccount/lcp: -66%
  • confirmTx/longTaskTotalDuration: -18%
  • confirmTx/longTaskMaxDuration: -15%
  • confirmTx/tbt: -25%
  • confirmTx/inp: -20%
  • bridgeUserActions/bridge_load_asset_picker: +10%
  • bridgeUserActions/tbt: +22%
  • bridgeUserActions/inp: -31%
  • loadNewAccount/load_new_account: +385%
  • loadNewAccount/longTaskCount: -100%
  • loadNewAccount/longTaskTotalDuration: -100%
  • loadNewAccount/longTaskMaxDuration: -100%
  • loadNewAccount/tbt: -100%
  • loadNewAccount/total: +385%
  • loadNewAccount/inp: -26%
  • loadNewAccount/fcp: -52%
  • loadNewAccount/lcp: +336%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/inp: -20%
  • confirmTx/lcp: +1117%
  • bridgeUserActions/bridge_load_page: +59%
  • bridgeUserActions/bridge_load_asset_picker: +34%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/inp: +23%
  • bridgeUserActions/lcp: +1085%

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

  • 🟡 bridgeUserActions/FCP: p75 1.8s
Startup Benchmarks · Samples: 100

⚠️ Missing data: chrome/webpack/startupStandardHome

Benchmarkchrome-webpackfirefox-webpack
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupPowerUserHome/backgroundConnect: -10%
  • startupStandardHome/inp: -17%
  • startupPowerUserHome/domInteractive: -16%
  • startupPowerUserHome/setupStore: +22%

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

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

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/doneButtonToHomeScreen: -90%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -98%
  • onboardingImportWallet/longTaskCount: -71%
  • onboardingImportWallet/longTaskTotalDuration: -89%
  • onboardingImportWallet/longTaskMaxDuration: -83%
  • onboardingImportWallet/tbt: -98%
  • onboardingImportWallet/total: -89%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +12%
  • onboardingNewWallet/doneButtonToAssetList: -39%
  • onboardingNewWallet/longTaskCount: -55%
  • onboardingNewWallet/longTaskTotalDuration: -59%
  • onboardingNewWallet/longTaskMaxDuration: -24%
  • onboardingNewWallet/tbt: -64%
  • onboardingNewWallet/total: -33%
  • solanaAssetDetails/assetClickToPriceChart: -48%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/total: -48%
  • solanaAssetDetails/cls: -92%
  • importSrpHome/loginToHomeScreen: -10%
  • importSrpHome/openAccountMenuAfterLogin: +60%
  • importSrpHome/homeAfterImportWithNewWallet: -30%
  • importSrpHome/longTaskCount: -18%
  • importSrpHome/longTaskTotalDuration: -18%
  • importSrpHome/tbt: -18%
  • importSrpHome/total: -27%
  • importSrpHome/inp: -23%
  • sendTransactions/selectTokenToSendFormLoaded: +10%
  • sendTransactions/tbt: +12%
  • sendTransactions/fcp: +12%
  • sendTransactions/cls: -89%

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

  • 🟡 sendTransactions/INP: p75 216ms
  • 🟡 sendTransactions/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.8s
  • 🟡 sendTransactions/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: 263 Bytes (0%)
  • common: 20 Bytes (0%)

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 is part 13 of the Analytics Phase B split, migrating a set of “platform misc” UI surfaces and several cross-domain E2E specs off legacy MetaMetrics selectors (participateInMetaMetrics / metaMetricsId) onto canonical analytics fields (optedIn, completedMetaMetricsOnboarding, analyticsId).

Changes:

  • Updated multiple UI consumers (error page, survey toast, coin overview, batch-sell empty state, asset page) to derive metrics enablement from completedMetaMetricsOnboarding && optedIn and to use analyticsId.
  • Updated portfolio/navigation helpers and related call sites to pass analyticsId instead of legacy IDs.
  • Migrated multiple E2E specs/fixtures/constants from MOCK_META_METRICS_ID and legacy consent flags to canonical analytics equivalents.

Reviewed changes

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

Show a summary per file
File Description
ui/pages/unlock-page/unlock-page.stories.tsx Updates story state to use canonical analytics consent fields.
ui/pages/error-page/error-page.component.tsx Migrates metrics gating from legacy selector to canonical consent selectors.
ui/pages/error-page/error-component.test.tsx Updates selector mocks/assertions to match canonical consent selectors.
ui/pages/batch-sell/pages/select/components/batch-sell-empty-select-tokens.tsx Uses analyticsId + canonical consent selectors for portfolio navigation params.
ui/pages/batch-sell/pages/select/components/batch-sell-empty-select-tokens.test.tsx Adjusts selector mocks and expectations for canonical analytics fields.
ui/pages/asset/components/asset-page.tsx Switches portfolio URL construction to use analyticsId and canonical consent selectors.
ui/helpers/utils/portfolio.js Renames the ID parameter to analyticsId and uses it in URL params.
ui/components/ui/survey-toast/survey-toast.tsx Migrates survey fetch gating/URL construction to canonical analytics fields.
ui/components/app/wallet-overview/non-evm-overview.test.tsx Updates mocked state from metaMetricsId to analyticsId.
ui/components/app/wallet-overview/coin-overview.tsx Migrates portfolio click tracking/navigation to canonical analytics fields.
ui/components/app/modals/pna25-modal/pna25-modal.stories.tsx Updates story state to canonical analytics consent fields.
test/e2e/tests/vault-corruption/vault-corruption.spec.ts Updates fixtures to canonical analytics consent fields.
test/e2e/tests/survey/survey.spec.ts Switches mocked survey endpoint to use MOCK_ANALYTICS_ID and canonical controller fields.
test/e2e/tests/remote-feature-flag/remote-feature-flag.spec.ts Migrates fixtures/constants to canonical analytics fields.
test/e2e/tests/profile-metrics/profile-metrics.spec.ts Migrates fixtures/test matrix to canonical analytics consent fields.
test/e2e/tests/portfolio/portfolio-site.spec.ts Updates mocked portfolio URL assertions/fixtures to MOCK_ANALYTICS_ID.
test/e2e/tests/port-stream-chunking/port-stream-chunking.spec.ts Updates fixtures/constants to canonical analytics fields.
test/e2e/tests/account/unlock-wallet.spec.ts Updates Firefox onboarding metrics flow options to canonical consent fields.
Comments suppressed due to low confidence (1)

ui/helpers/utils/portfolio.js:18

  • getPortfolioUrl currently stringifies analyticsId, metricsEnabled, and marketingEnabled directly into query params. Since UI state uses null for metamask.analyticsId and metamask.dataCollectionForMarketing by default (see ui/ducks/metamask/metamask.js), this can produce URLs like metametricsId=null or marketingEnabled=null, which is unlikely to be intended and can break downstream parsing/analytics. Coerce these values to safe defaults before appending.
  url.searchParams.append('metametricsId', analyticsId);

  // Append privacy preferences for metrics + marketing on user navigation to Portfolio
  url.searchParams.append('metricsEnabled', String(metricsEnabled));
  url.searchParams.append('marketingEnabled', String(marketingEnabled));

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

@metamaskbotv2

metamaskbotv2 Bot commented Jun 15, 2026

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

Baseline (latest main): 5682526 | Date: 6/13/2026 | Pipeline: 27394677529 | Baseline logs

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: +11%
  • loadNewAccount/total: +11%
  • loadNewAccount/inp: +47%
  • confirmTx/inp: -10%
  • bridgeUserActions/bridge_load_asset_picker: +12%
  • bridgeUserActions/tbt: +17%
  • bridgeUserActions/inp: -32%
  • loadNewAccount/load_new_account: +675%
  • loadNewAccount/total: +675%
  • loadNewAccount/fcp: -50%
  • loadNewAccount/lcp: +1077%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/inp: -10%
  • confirmTx/lcp: +1086%
  • bridgeUserActions/bridge_load_page: +59%
  • bridgeUserActions/bridge_load_asset_picker: +36%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/inp: +21%
  • bridgeUserActions/lcp: +1151%

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

  • 🟡 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: -18%
  • startupStandardHome/load: -19%
  • startupStandardHome/domContentLoaded: -19%
  • startupStandardHome/domInteractive: -17%
  • startupStandardHome/backgroundConnect: -20%
  • startupStandardHome/firstReactRender: -19%
  • startupStandardHome/loadScripts: -19%
  • startupStandardHome/setupStore: -18%
  • startupStandardHome/longTaskTotalDuration: -21%
  • startupStandardHome/longTaskMaxDuration: -21%
  • startupStandardHome/tbt: -26%
  • startupStandardHome/inp: -22%
  • startupStandardHome/fcp: -18%
  • startupStandardHome/lcp: -15%
  • startupPowerUserHome/firstReactRender: +13%
  • startupPowerUserHome/setupStore: +10%
  • startupPowerUserHome/numNetworkReqs: -25%
  • startupPowerUserHome/domInteractive: -23%
  • startupPowerUserHome/backgroundConnect: -26%
  • startupPowerUserHome/setupStore: +33%
  • startupPowerUserHome/fcp: -15%

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

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

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/doneButtonToHomeScreen: -87%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -97%
  • onboardingImportWallet/longTaskCount: -77%
  • onboardingImportWallet/longTaskTotalDuration: -93%
  • onboardingImportWallet/longTaskMaxDuration: -91%
  • onboardingImportWallet/tbt: -99%
  • onboardingImportWallet/total: -85%
  • onboardingNewWallet/doneButtonToAssetList: -39%
  • onboardingNewWallet/longTaskCount: -55%
  • onboardingNewWallet/longTaskTotalDuration: -59%
  • onboardingNewWallet/longTaskMaxDuration: -31%
  • onboardingNewWallet/tbt: -68%
  • onboardingNewWallet/total: -34%
  • solanaAssetDetails/assetClickToPriceChart: -48%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/tbt: -100%
  • solanaAssetDetails/total: -48%
  • solanaAssetDetails/cls: -89%
  • importSrpHome/loginToHomeScreen: -22%
  • importSrpHome/openAccountMenuAfterLogin: +89%
  • importSrpHome/homeAfterImportWithNewWallet: -36%
  • importSrpHome/longTaskCount: -22%
  • importSrpHome/longTaskTotalDuration: -28%
  • importSrpHome/longTaskMaxDuration: -20%
  • importSrpHome/tbt: -33%
  • importSrpHome/total: -34%
  • importSrpHome/inp: -25%
  • importSrpHome/fcp: -11%
  • sendTransactions/selectTokenToSendFormLoaded: +17%
  • sendTransactions/inp: -10%
  • sendTransactions/fcp: +11%
  • sendTransactions/cls: -89%

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

  • 🟡 sendTransactions/INP: p75 216ms
  • 🟡 sendTransactions/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.8s
  • 🟡 sendTransactions/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: 263 Bytes (0%)
  • common: 20 Bytes (0%)

@gauthierpetetin gauthierpetetin moved this to Needs dev review in PR review queue Jun 15, 2026
@gauthierpetetin gauthierpetetin self-assigned this Jun 15, 2026
@github-project-automation github-project-automation Bot moved this from Needs dev review to Review finalised - Ready to be merged in PR review queue Jun 16, 2026
@HowardBraham HowardBraham added this pull request to the merge queue Jun 16, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jun 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Review finalised - Ready to be merged

Development

Successfully merging this pull request may close these issues.

4 participants