Skip to content

feat: sync V2 ramps orders from User Storage - #44367

Closed
georgeweiler wants to merge 48 commits into
mainfrom
feat/ramps-order-syncing
Closed

georgeweiler wants to merge 48 commits into
mainfrom
feat/ramps-order-syncing

Conversation

@georgeweiler

@georgeweiler georgeweiler commented Jul 11, 2026 •

Copy link
Copy Markdown
Contributor

Description

Delegates User Storage + auth actions to the ramps messenger so RampsController.syncOrdersWithUserStorage() can run, exposes syncRampsOrdersWithUserStorage on the ramps background API, and pulls remote V2 orders on unlock via useRampsOrderSyncing in MetamaskIdentityProvider (same gates as account/contact sync).

Also adds Backup & Sync Buy & sell orders sub-toggle (BACKUPANDSYNC_FEATURES.rampsSyncing), silent Portfolio Buy migrate then sync, Profile Sync auth sanitization when switching DEV/PRD backends, and preferred-provider selection from the most recent completed synced order.

Changelog

CHANGELOG entry: Added Backup & Sync support for buy and sell order history across MetaMask clients

Related issues

Depends on:

Works with:

Manual testing steps

  1. Enable Backup & Sync + Buy & sell orders on Extension and Mobile (or Portfolio).
  2. Create/upload a V2 buy/sell order from Mobile or Portfolio for the same SRP.
  3. Unlock Extension and confirm the order lands in RampsController.orders / useRampsOrders.
  4. Confirm preferred provider follows the latest completed synced order.
  5. Disable Buy & sell orders and confirm sync no longer runs.

Screenshots/Recordings

Before

N/A

After

N/A — no dedicated orders history UI in this PR; synced orders land in existing ramps controller state/hooks.

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Medium Risk
Changes buy entry behavior, Profile Sync session handling, and cross-device order sync; mistakes could strand users on wrong auth env or skip/mis-run Portfolio migration, though feature toggles and tests limit blast radius.

Overview
Adds Backup & Sync → Buy & sell orders so V2 buy/sell order history can sync through Profile User Storage, alongside accounts and contacts.

Background wiring: RampsController gets User Storage and auth messenger actions, a syncRampsOrdersWithUserStorage background API, tracing, and Sentry/MetaMetrics on sync failures. Unlock triggers sync via useRampsOrderSyncing in MetamaskIdentityProvider when the usual gates pass (signed in, B&S on, ramps sync on, etc.).

Auth & env: Persisted Profile Sync sessions are cleared on startup when JWT issuer does not match the configured OIDC env (sanitizePersistedAuthenticationState). Local yarn start uses DEV auth for staging ramps while E2E stays on PRD.

Buy flow: Returning Portfolio-connected users no longer default to opening Portfolio for buy when ramps are enabled—they go in-app after optional silent Portfolio migrate (runPortfolioBuyOrdersMigration: background tab, sign-in, sync, one-time storage flag). Migration runs only when B&S and ramps sync are enabled. Provider auto-selection re-runs when synced completed orders arrive and normalizes /providers/… ids from Portfolio storage.

Depends on preview @metamask/ramps-controller and @metamask/profile-sync-controller packages; LavaMoat policies updated accordingly.

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

Wire RampsController order syncing so orders created on mobile can be
pulled into the extension on unlock, without adding ramps UI.

Co-authored-by: Cursor <cursoragent@cursor.com>
@georgeweiler
georgeweiler requested a review from a team as a code owner July 11, 2026 13:23
@github-actions

Copy link
Copy Markdown
Contributor

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

@metamask-ci

metamask-ci Bot commented Jul 11, 2026 •

Copy link
Copy Markdown
Contributor

✨ Files requiring CODEOWNER review ✨

🔑 @MetaMask/accounts-engineers (15 files, +344 -12)
  • 📁 app/
    • 📁 scripts/
      • 📁 messenger-client-init/
        • 📁 identity/
          • 📄 authentication-controller-init.test.ts +33 -0
          • 📄 authentication-controller-init.ts +10 -3
          • 📄 user-storage-controller-init.test.ts +0 -4
  • 📁 test/
    • 📁 e2e/
      • 📁 helpers/
        • 📁 identity/
          • 📁 user-storage/
            • 📄 userStorageMockttpController.ts +5 -0
      • 📁 tests/
        • 📁 identity/
          • 📄 mocks.ts +5 -0
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 identity/
          • 📁 backup-and-sync-features-toggles/
            • 📄 backup-and-sync-features-toggles.test.tsx +35 -4
            • 📄 backup-and-sync-features-toggles.tsx +19 -1
          • 📁 backup-and-sync-toggle/
            • 📄 backup-and-sync-toggle.test.tsx +16 -0
            • 📄 backup-and-sync-toggle.tsx +16 -0
    • 📁 contexts/
      • 📁 identity/
        • 📄 index.test.tsx +24 -0
        • 📄 index.tsx +9 -0
    • 📁 hooks/
      • 📁 identity/
        • 📁 useRampsOrderSyncing/
          • 📄 useRampsOrderSyncing.test.tsx +95 -0
          • 📄 useRampsOrderSyncing.ts +48 -0
    • 📁 selectors/
      • 📁 identity/
        • 📄 backup-and-sync.test.ts +16 -0
        • 📄 backup-and-sync.ts +13 -0

👨‍🔧 @MetaMask/extension-platform (1 files, +2 -1)
  • 📁 test/
    • 📁 e2e/
      • 📁 fixtures/
        • 📄 onboarding-fixture.json +2 -1

👨‍🔧 @MetaMask/money-movement (8 files, +437 -29)
  • 📁 ui/
    • 📁 hooks/
      • 📁 ramps/
        • 📁 useRampsNavigation/
          • 📄 useRampsNavigation.test.tsx +34 -5
          • 📄 useRampsNavigation.ts +22 -16
        • 📁 utils/
          • 📄 determinePreferredProvider.test.ts +13 -0
          • 📄 determinePreferredProvider.ts +14 -2
          • 📄 portfolioBuyOrdersMigration.test.ts +131 -0
          • 📄 portfolioBuyOrdersMigration.ts +205 -0
          • 📄 portfolioConnection.ts +3 -4
          • 📄 useRampsProviders.ts +15 -2

📜 @MetaMask/policy-reviewers (8 files, +56 -32)
  • 📁 lavamoat/
    • 📁 webpack/
      • 📁 mv2/
        • 📁 beta/
          • 📄 policy.json +7 -4
        • 📁 experimental/
          • 📄 policy.json +7 -4
        • 📁 flask/
          • 📄 policy.json +7 -4
        • 📁 main/
          • 📄 policy.json +7 -4
      • 📁 mv3/
        • 📁 beta/
          • 📄 policy.json +7 -4
        • 📁 experimental/
          • 📄 policy.json +7 -4
        • 📁 flask/
          • 📄 policy.json +7 -4
        • 📁 main/
          • 📄 policy.json +7 -4

Tip

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


🧪 @MetaMask/qa (2 files, +11 -1)
  • 📁 test/
    • 📁 e2e/
      • 📁 fixtures/
        • 📄 onboarding-fixture.json +2 -1
      • 📁 page-objects/
        • 📁 pages/
          • 📁 settings/
            • 📄 backup-and-sync-settings.ts +9 -0

@metamask-ci

metamask-ci Bot commented Jul 11, 2026

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

Baseline (latest main): 1716549 | Date: 6/29/2026 | Pipeline: 29154220417 | 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]
User Journey Benchmarks · Samples: 5 · mock API

⚠️ Missing data: chrome/webpack/userJourneyAssets, chrome/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]
sendTransactions
[Sentry log · main/release]
–🟢 [CI log]
swap
[Sentry log · main/release]
–🟢 [CI log]
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.

Match mobile by exposing a Buy & sell orders sub-toggle, and include
ramps syncing in the reverse-cascade that disables the main Backup &
Sync switch when every sub-feature is off.

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

metamask-ci Bot commented Jul 16, 2026

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

Baseline (latest main): 41ca3b9 | Date: 7/16/2026 | Pipeline: 29495402797 | 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]
User Journey Benchmarks · Samples: 5 · mock API

⚠️ Missing data: chrome/webpack/userJourneyAssets, chrome/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]
sendTransactions
[Sentry log · main/release]
–🟢 [CI log]
swap
[Sentry log · main/release]
–🟢 [CI log]
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: +15%
Bundle sizes
  • background: 14.26 MiB
  • ui: 17.15 MiB
  • common: 0 Bytes
  • other: 998.07 KiB
  • contentScripts: 1.87 MiB
  • zip: 27.12 MiB
No matching bundle-size baseline was found in the history data, so diff values are omitted.

georgeweiler and others added 2 commits July 16, 2026 10:10
Required after merging main so RampsController can read
moneyHeadlessAllProviders for quote widening alongside order sync.

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

metamask-ci Bot commented Jul 16, 2026

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

Baseline (latest main): 2ba6714 | Date: 7/16/2026 | Pipeline: 29515209701 | 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]
User Journey Benchmarks · Samples: 5 · mock API

⚠️ Missing data: chrome/webpack/userJourneyAssets, chrome/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]
sendTransactions
[Sentry log · main/release]
–🟢 [CI log]
swap
[Sentry log · main/release]
–🟢 [CI log]
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 539 Bytes (0%)
  • ui: 1.89 KiB (0.01%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 14 Bytes (0%)
  • zip: 589 Bytes (0%)

georgeweiler and others added 2 commits July 21, 2026 05:44
Open a background Portfolio tab to upload Buy history, re-sign into DEV
Profile Sync, sync all HD entropy sources, and prefer the prior provider
(with /providers/ id normalize) instead of defaulting to Transak.

Co-authored-by: Cursor <cursoragent@cursor.com>
Comment thread ui/hooks/ramps/utils/portfolioBuyOrdersMigration.ts
Comment thread ui/hooks/ramps/utils/portfolioBuyOrdersMigration.ts
@metamask-ci

metamask-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor
Builds ready [4182484]
⚡ Performance Benchmarks (Total: 🟢 13 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 6c0217c | Date: 7/21/2026 | Pipeline: 29854723021 | 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: +38%
  • ↑ loadNewAccount/total: +38%
  • ↓ loadNewAccount/inp: -26%
  • ↓ loadNewAccount/fcp: -49%
  • ↑ loadNewAccount/lcp: +1445%
  • ↓ confirmTx/longTaskCount: -100%
  • ↓ confirmTx/longTaskTotalDuration: -100%
  • ↓ confirmTx/longTaskMaxDuration: -100%
  • ↓ confirmTx/tbt: -100%
  • ↓ confirmTx/inp: -26%
  • ↓ confirmTx/fcp: -47%
  • ↑ confirmTx/lcp: +1190%

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

  • 🟡 loadNewAccount/LCP: p75 2.7s
Startup Benchmarks · Samples: 100
Benchmarkfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • ↓ startupStandardHome/domInteractive: -40%
  • ↓ startupStandardHome/backgroundConnect: -11%
  • ↓ startupStandardHome/firstReactRender: -12%
  • ↓ startupStandardHome/numNetworkReqs: -57%
  • ↓ startupStandardHome/fcp: -39%
  • ↑ startupPowerUserHome/uiStartup: +18%
  • ↑ startupPowerUserHome/load: +24%
  • ↑ startupPowerUserHome/domContentLoaded: +24%
  • ↑ startupPowerUserHome/domInteractive: +114%
  • ↑ startupPowerUserHome/backgroundConnect: +56%
  • ↑ startupPowerUserHome/loadScripts: +22%
  • ↑ startupPowerUserHome/setupStore: +21%
  • ↑ startupPowerUserHome/numNetworkReqs: +14%
  • ↑ startupPowerUserHome/fcp: +109%
  • ↑ startupPowerUserHome/lcp: +20%

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

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

⚠️ Missing data: chrome/webpack/userJourneyTransactions

Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
🟡 total
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]
swap
[Sentry log · main/release]
–🟢 [CI log]

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

  • 🟡 assetDetails/FCP: p75 1.8s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 2.0s
  • 🟡 sendTransactions/FCP: p75 2.0s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.05 KiB (0.01%)
  • ui: 3.77 KiB (0.02%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 56 Bytes (0%)
  • zip: 1.08 KiB (0%)

Comment thread ui/hooks/ramps/useRampsNavigation/useRampsNavigation.ts
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

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 6e9eff7. Configure here.

Comment thread ui/hooks/ramps/utils/portfolioBuyOrdersMigration.ts Outdated
@metamask-ci

metamask-ci Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor
Builds ready [6e9eff7]
⚡ Performance Benchmarks (Total: 🟢 11 pass · 🟡 10 warn · 🔴 4 fail)

Baseline (latest main): 171ed20 | Date: 7/28/2026 | Pipeline: 33819051229 | Baseline logs

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

Regressions (🔴 4 failures)

Interaction Benchmarks · Samples: 5 🔴 2
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🔴 [CI log]
🔴 load_new_account
🔴 [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: +189%
  • ↑ loadNewAccount/total: +189%
  • ↓ confirmTx/longTaskTotalDuration: -11%
  • ↑ confirmTx/longTaskMaxDuration: +29%
  • ↓ confirmTx/tbt: -19%
  • ↑ bridgeUserActions/bridge_load_page: +10%
  • ↑ bridgeUserActions/bridge_load_asset_picker: +23%
  • ↑ bridgeUserActions/longTaskCount: +11%
  • ↑ bridgeUserActions/longTaskTotalDuration: +16%
  • ↑ bridgeUserActions/tbt: +30%
  • ↑ loadNewAccount/load_new_account: +192%
  • ↑ loadNewAccount/total: +192%
  • ↓ loadNewAccount/inp: -17%
  • ↓ loadNewAccount/fcp: -58%
  • ↑ loadNewAccount/lcp: +1156%
  • ↓ confirmTx/longTaskCount: -100%
  • ↓ confirmTx/longTaskTotalDuration: -100%
  • ↓ confirmTx/longTaskMaxDuration: -100%
  • ↓ confirmTx/tbt: -100%
  • ↓ confirmTx/inp: -32%
  • ↑ confirmTx/lcp: +1191%
  • ↑ bridgeUserActions/bridge_load_page: +201%
  • ↑ bridgeUserActions/bridge_load_asset_picker: +108%
  • ↓ bridgeUserActions/longTaskCount: -100%
  • ↓ bridgeUserActions/longTaskTotalDuration: -100%
  • ↓ bridgeUserActions/longTaskMaxDuration: -100%
  • ↓ bridgeUserActions/tbt: -100%
  • ↑ bridgeUserActions/total: +40%
  • ↓ bridgeUserActions/fcp: -36%
  • ↑ bridgeUserActions/lcp: +1115%

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

  • 🟡 confirmTx/FCP: p75 1.8s
  • 🟡 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/firstPaint: +10%
  • ↓ startupStandardHome/firstReactRender: -99%
  • ↓ startupStandardHome/initialActions: -33%
  • ↑ startupStandardHome/lcp: +10%
  • ↓ startupStandardHome/domInteractive: -26%
  • ↓ startupStandardHome/firstReactRender: -98%
  • ↓ startupStandardHome/initialActions: -50%
  • ↑ startupStandardHome/setupStore: +29%
  • ↓ startupStandardHome/fcp: -21%
  • ↓ startupPowerUserHome/domInteractive: -38%
  • ↓ startupPowerUserHome/backgroundConnect: -27%
  • ↓ startupPowerUserHome/firstReactRender: -99%
  • ↓ startupPowerUserHome/initialActions: -44%
  • ↓ startupPowerUserHome/setupStore: -71%
  • ↓ startupPowerUserHome/numNetworkReqs: -49%
  • ↑ startupPowerUserHome/inp: +19%
  • ↓ startupPowerUserHome/fcp: -36%

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

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

📈 Results compared to the previous 5 runs on main

  • ↑ onboardingImportWallet/srpButtonToSrpForm: +43%
  • ↑ onboardingImportWallet/confirmSrpToPwForm: +44%
  • ↑ onboardingImportWallet/pwFormToMetricsScreen: +23%
  • ↑ onboardingImportWallet/metricsToWalletReadyScreen: +26%
  • ↓ onboardingImportWallet/doneButtonToHomeScreen: -92%
  • ↓ onboardingImportWallet/openAccountMenuToAccountListLoaded: -44%
  • ↓ onboardingImportWallet/longTaskCount: -86%
  • ↓ onboardingImportWallet/longTaskTotalDuration: -95%
  • ↓ onboardingImportWallet/longTaskMaxDuration: -90%
  • ↓ onboardingImportWallet/tbt: -98%
  • ↓ onboardingImportWallet/total: -79%
  • ↑ onboardingNewWallet/srpButtonToPwForm: +19%
  • ↑ onboardingNewWallet/createPwToRecoveryScreen: +11%
  • ↑ onboardingNewWallet/skipBackupToMetricsScreen: +22%
  • ↑ onboardingNewWallet/agreeButtonToOnboardingSuccess: +51%
  • ↓ onboardingNewWallet/longTaskCount: -69%
  • ↓ onboardingNewWallet/longTaskTotalDuration: -76%
  • ↓ onboardingNewWallet/longTaskMaxDuration: -44%
  • ↓ onboardingNewWallet/tbt: -90%
  • ↑ solanaAssetDetails/assetClickToPriceChart: +259%
  • ↓ solanaAssetDetails/longTaskCount: -100%
  • ↓ solanaAssetDetails/longTaskTotalDuration: -100%
  • ↓ solanaAssetDetails/longTaskMaxDuration: -100%
  • ↓ solanaAssetDetails/tbt: -100%
  • ↑ solanaAssetDetails/total: +259%
  • ↑ solanaAssetDetails/inp: +19%
  • ↑ solanaAssetDetails/fcp: +17%
  • ↓ importSrpHome/loginToHomeScreen: -47%
  • ↓ importSrpHome/homeAfterImportWithNewWallet: -51%
  • ↓ importSrpHome/longTaskCount: -65%
  • ↓ importSrpHome/longTaskTotalDuration: -77%
  • ↓ importSrpHome/longTaskMaxDuration: -66%
  • ↓ importSrpHome/tbt: -85%
  • ↓ importSrpHome/total: -49%
  • ↓ importSrpHome/inp: -72%
  • ↓ importSrpHome/fcp: -17%
  • ↓ importSrpHome/lcp: -28%
  • ↑ importSrpHome/cls: +394%
  • ↓ sendTransactions/openSendPageFromHome: -21%
  • ↓ sendTransactions/reviewTransactionToConfirmationPage: -98%
  • ↓ sendTransactions/longTaskCount: -100%
  • ↓ sendTransactions/longTaskTotalDuration: -100%
  • ↓ sendTransactions/longTaskMaxDuration: -100%
  • ↓ sendTransactions/tbt: -100%
  • ↓ sendTransactions/total: -95%
  • ↓ sendTransactions/inp: -22%
  • ↓ sendTransactions/lcp: -60%
  • ↑ sendTransactions/cls: +171%
  • ↑ swap/openSwapPageFromHome: +238%
  • ↑ swap/fetchAndDisplaySwapQuotes: +86%
  • ↓ swap/longTaskCount: -100%
  • ↓ swap/longTaskTotalDuration: -100%
  • ↓ swap/longTaskMaxDuration: -100%
  • ↓ swap/tbt: -100%
  • ↑ swap/total: +89%
  • ↓ swap/lcp: -69%
  • ↓ swap/cls: -92%

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

  • 🟡 assetDetails/FCP: p75 1.8s
  • 🟡 solanaAssetDetails/FCP: p75 1.8s
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 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: -67%
  • ↓ dappPageLoad/domContentLoaded: -24%
  • ↓ dappPageLoad/firstPaint: -55%
  • ↓ dappPageLoad/firstContentfulPaint: -55%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 9.72 KiB (0.07%)
  • ui: 9.72 KiB (0.05%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 956 Bytes (0.05%)
  • zip: 5.95 KiB (0.03%)

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

sonarqubecloud Bot commented Sep 4, 2026

Copy link
Copy Markdown

@metamask-ci

metamask-ci Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor
Builds ready [d055491]
⚡ Performance Benchmarks (Total: 🟢 10 pass · 🟡 12 warn · 🔴 3 fail)

Baseline (latest main): 171ed20 | Date: 7/28/2026 | Pipeline: 33826306869 | Baseline logs

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

Regressions (🔴 3 failures)

Interaction Benchmarks · Samples: 5 🔴 2
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🔴 [CI log]
🔴 load_new_account
🔴 [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: +190%
  • ↑ loadNewAccount/total: +190%
  • ↓ confirmTx/longTaskTotalDuration: -19%
  • ↑ confirmTx/longTaskMaxDuration: +25%
  • ↓ confirmTx/tbt: -33%
  • ↑ bridgeUserActions/bridge_load_page: +13%
  • ↑ bridgeUserActions/bridge_load_asset_picker: +54%
  • ↑ bridgeUserActions/longTaskCount: +11%
  • ↑ bridgeUserActions/longTaskTotalDuration: +15%
  • ↑ bridgeUserActions/tbt: +25%
  • ↑ loadNewAccount/load_new_account: +191%
  • ↑ loadNewAccount/total: +191%
  • ↓ loadNewAccount/inp: -24%
  • ↓ loadNewAccount/fcp: -47%
  • ↑ loadNewAccount/lcp: +1147%
  • ↓ confirmTx/longTaskCount: -100%
  • ↓ confirmTx/longTaskTotalDuration: -100%
  • ↓ confirmTx/longTaskMaxDuration: -100%
  • ↓ confirmTx/tbt: -100%
  • ↓ confirmTx/fcp: -57%
  • ↑ confirmTx/lcp: +1239%
  • ↑ bridgeUserActions/bridge_load_page: +289%
  • ↑ bridgeUserActions/bridge_load_asset_picker: +193%
  • ↑ bridgeUserActions/bridge_search_token: +16%
  • ↓ bridgeUserActions/longTaskCount: -100%
  • ↓ bridgeUserActions/longTaskTotalDuration: -100%
  • ↓ bridgeUserActions/longTaskMaxDuration: -100%
  • ↓ bridgeUserActions/tbt: -100%
  • ↑ bridgeUserActions/total: +58%
  • ↑ bridgeUserActions/inp: +100%
  • ↓ bridgeUserActions/fcp: -48%
  • ↑ bridgeUserActions/lcp: +1428%

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

  • 🟡 loadNewAccount/FCP: p75 1.8s
  • 🟡 confirmTx/FCP: p75 1.8s
  • 🟡 bridgeUserActions/FCP: p75 1.8s
  • 🟡 bridgeUserActions/INP: p75 208ms
  • 🟡 bridgeUserActions/LCP: p75 2.7s
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/backgroundConnect: +15%
  • ↓ startupStandardHome/firstReactRender: -98%
  • ↓ startupStandardHome/initialActions: -33%
  • ↑ startupStandardHome/setupStore: +14%
  • ↑ startupStandardHome/domInteractive: +16%
  • ↓ startupStandardHome/firstReactRender: -98%
  • ↓ startupStandardHome/initialActions: -50%
  • ↑ startupStandardHome/setupStore: +13%
  • ↑ startupStandardHome/fcp: +17%
  • ↓ startupPowerUserHome/uiStartup: -10%
  • ↓ startupPowerUserHome/domInteractive: -53%
  • ↓ startupPowerUserHome/backgroundConnect: -25%
  • ↓ startupPowerUserHome/firstReactRender: -99%
  • ↓ startupPowerUserHome/initialActions: -44%
  • ↓ startupPowerUserHome/setupStore: -72%
  • ↓ startupPowerUserHome/numNetworkReqs: -51%
  • ↑ startupPowerUserHome/inp: +14%
  • ↓ startupPowerUserHome/fcp: -51%

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

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

📈 Results compared to the previous 5 runs on main

  • ↑ onboardingImportWallet/srpButtonToSrpForm: +36%
  • ↑ onboardingImportWallet/confirmSrpToPwForm: +42%
  • ↑ onboardingImportWallet/pwFormToMetricsScreen: +24%
  • ↑ onboardingImportWallet/metricsToWalletReadyScreen: +19%
  • ↓ onboardingImportWallet/doneButtonToHomeScreen: -92%
  • ↓ onboardingImportWallet/openAccountMenuToAccountListLoaded: -51%
  • ↓ onboardingImportWallet/longTaskCount: -86%
  • ↓ onboardingImportWallet/longTaskTotalDuration: -95%
  • ↓ onboardingImportWallet/longTaskMaxDuration: -91%
  • ↓ onboardingImportWallet/tbt: -99%
  • ↓ onboardingImportWallet/total: -81%
  • ↑ onboardingNewWallet/srpButtonToPwForm: +24%
  • ↑ onboardingNewWallet/createPwToRecoveryScreen: +10%
  • ↑ onboardingNewWallet/skipBackupToMetricsScreen: +28%
  • ↑ onboardingNewWallet/agreeButtonToOnboardingSuccess: +20%
  • ↓ onboardingNewWallet/doneButtonToAssetList: -81%
  • ↓ onboardingNewWallet/longTaskCount: -69%
  • ↓ onboardingNewWallet/longTaskTotalDuration: -76%
  • ↓ onboardingNewWallet/longTaskMaxDuration: -44%
  • ↓ onboardingNewWallet/tbt: -90%
  • ↓ onboardingNewWallet/total: -77%
  • ↑ solanaAssetDetails/assetClickToPriceChart: +257%
  • ↓ solanaAssetDetails/longTaskCount: -100%
  • ↓ solanaAssetDetails/longTaskTotalDuration: -100%
  • ↓ solanaAssetDetails/longTaskMaxDuration: -100%
  • ↓ solanaAssetDetails/tbt: -100%
  • ↑ solanaAssetDetails/total: +257%
  • ↑ solanaAssetDetails/inp: +11%
  • ↑ solanaAssetDetails/fcp: +19%
  • ↓ importSrpHome/loginToHomeScreen: -19%
  • ↓ importSrpHome/longTaskCount: -51%
  • ↓ importSrpHome/longTaskTotalDuration: -59%
  • ↓ importSrpHome/longTaskMaxDuration: -51%
  • ↓ importSrpHome/tbt: -66%
  • ↓ importSrpHome/inp: -64%
  • ↑ importSrpHome/cls: +484%
  • ↓ sendTransactions/selectTokenToSendFormLoaded: -19%
  • ↓ sendTransactions/reviewTransactionToConfirmationPage: -98%
  • ↓ sendTransactions/longTaskCount: -100%
  • ↓ sendTransactions/longTaskTotalDuration: -100%
  • ↓ sendTransactions/longTaskMaxDuration: -100%
  • ↓ sendTransactions/tbt: -100%
  • ↓ sendTransactions/total: -96%
  • ↓ sendTransactions/inp: -48%
  • ↓ sendTransactions/fcp: -15%
  • ↓ sendTransactions/lcp: -66%
  • ↑ sendTransactions/cls: +171%
  • ↑ swap/openSwapPageFromHome: +273%
  • ↑ swap/fetchAndDisplaySwapQuotes: +87%
  • ↑ swap/longTaskCount: +33%
  • ↓ swap/tbt: -58%
  • ↑ swap/total: +92%
  • ↓ swap/inp: -32%
  • ↓ swap/fcp: -21%
  • ↓ swap/lcp: -73%
  • ↓ swap/cls: -92%

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

  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 assetDetails/FCP: p75 2.0s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🔴 swap/INP: p75 592ms
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: -58%
  • ↓ dappPageLoad/firstPaint: -46%
  • ↓ dappPageLoad/firstContentfulPaint: -46%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 9.72 KiB (0.07%)
  • ui: 9.76 KiB (0.05%)
  • common: 0 Bytes (0%)
  • other: 0 Bytes (0%)
  • contentScripts: 956 Bytes (0.05%)
  • zip: 5.97 KiB (0.03%)

@georgeweiler

Copy link
Copy Markdown
Contributor Author

Superseded by a codeowner-aligned five-PR stack:

  1. fix(identity): opt in to DEV identity backends #46042 — Profile Sync authentication sanitization
  2. feat(ramps): wire User Storage order syncing #46043 — Ramps User Storage sync plumbing
  3. feat(identity): add ramps order Backup & Sync controls #46044 — Backup & Sync controls and unlock syncing
  4. feat(ramps): migrate Portfolio buy orders #46045 — Portfolio Buy-order migration
  5. feat(ramps): use synced orders in the buy flow #46046 — Synced-order Buy flow and preferred provider

The original branch is retained as a recoverable reference.

@github-actions github-actions Bot locked and limited conversation to collaborators Sep 4, 2026

This branch was previously deployed

1 inactive deployment
pr-comment — d0554915 Deployed Sep 4, 2026 by georgeweiler via Publish prerelease / Publish prerelease #162911
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant