Skip to content

feat: TO-541 - Integrate passkey in onboarding and unlock page#42169

Open
tanguyenvn wants to merge 13 commits intofeat/TO-541-passkey-unlockfrom
feat/TO-541-passkey-setup-and-unlock
Open

feat: TO-541 - Integrate passkey in onboarding and unlock page#42169
tanguyenvn wants to merge 13 commits intofeat/TO-541-passkey-unlockfrom
feat/TO-541-passkey-setup-and-unlock

Conversation

@tanguyenvn
Copy link
Copy Markdown
Contributor

@tanguyenvn tanguyenvn commented Apr 27, 2026

Description

This PR adds the initial passkey (biometric/WebAuthn) experience across onboarding and unlock flows, and wires the background/controller APIs needed to register, authenticate, and manage passkeys safely.

Context

  • Users currently rely on password-only unlock.
  • We want to support passkey-based unlock while preserving secure fallback behavior and existing onboarding flows.

Solution

  • Added passkey capability/error/ceremony helpers in shared passkey libs, including localized error translation.
  • Added background passkey methods and controller wiring:
    • Generate registration/authentication options
    • Protect/retrieve vault key via passkey
    • Remove/renew passkey protection in password-change/remediation flows
  • Added onboarding passkey setup screen and routing integration (with “Maybe later” continuation path).
  • Updated unlock page to support:
    • Auto-attempt passkey unlock when eligible
    • Manual “unlock with biometrics/passkey” path
    • Password fallback and improved error handling
  • Added/updated tests across controller actions, onboarding setup-passkey page, unlock page, selectors, and shared passkey utilities.
  • Updated feature-flag/env + LavaMoat/dependency policy artifacts for passkey support.

Changelog

CHANGELOG entry: Added passkey setup during onboarding and passkey-based unlock with password fallback.

Related issues

Fixes: TO-541

Manual testing steps

  1. Enable passkey feature flag (PASSKEY_ENABLED=true) and run the extension.
  2. Go through onboarding (create/import flow) until the passkey setup step appears.
  3. Click Set up biometrics:
    • Complete the platform passkey prompt.
    • Verify onboarding continues to the next expected route.
  4. Repeat onboarding and click Maybe later:
    • Verify the flow continues without passkey setup.
  5. Lock the wallet and open unlock page with an enrolled passkey:
    • Verify passkey unlock auto-attempts (when not suppressed).
    • Verify successful passkey auth unlocks wallet and routes correctly.
  6. On unlock, choose Use a different login method and unlock via password:
    • Verify password fallback still works.
  7. Trigger cancellation/failure in passkey ceremony:
    • Verify user-friendly inline error handling and no broken navigation.
  8. Validate regression scenarios:
    • Onboarding incomplete path should not auto-trigger passkey unlock unexpectedly.
    • Password-change/removal logic behaves correctly when passkey is enrolled.

Screenshots/Recordings

Before

After

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
Adds a new WebAuthn/passkey unlock path and related background RPC actions, affecting core authentication/unlock behavior and onboarding routing. Risk comes from changes to lock/unlock flows, auto-unlock behavior, and new error/feature-gating logic across multiple surfaces.

Overview
Adds a new onboarding step at ONBOARDING_SETUP_PASSKEY_ROUTE that lets users enroll biometrics/passkeys (or skip via Maybe later), and updates CreatePassword/OnboardingFlow routing to insert this step when the passkey feature is available and not yet registered.

Updates the unlock UI to support passkey unlocking (including optional auto-attempt when eligible and not suppressed), fallback to password via Use password, sidepanel troubleshooting that opens the full-screen unlock route, and localized passkey error messaging/metrics.

Introduces new selectors (getIsPasskeyFeatureAvailable, getIsPasskeyRegistered), new background-facing actions for passkey registration/authentication and passkey-verified password change/removal, and updates LavaMoat policies plus i18n strings to allow/use @simplewebauthn/browser and new UI copy.

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

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

@metamaskbot metamaskbot added the team-shield Shield team label Apr 27, 2026
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented Apr 27, 2026

✨ Files requiring CODEOWNER review ✨

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

Tip

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


🔐 @MetaMask/web3auth (6 files, +733 -3)
  • 📁 ui/
    • 📁 pages/
      • 📁 onboarding-flow/
        • 📁 create-password/
          • 📄 create-password.test.tsx +151 -1
          • 📄 create-password.tsx +23 -1
        • 📁 setup-passkey/
          • 📄 setup-passkey.test.tsx +334 -0
          • 📄 setup-passkey.tsx +198 -0
          • 📄 onboarding-flow.test.tsx +17 -0
          • 📄 onboarding-flow.tsx +10 -1

@tanguyenvn tanguyenvn added team-onboarding Onboarding team and removed team-shield Shield team labels Apr 27, 2026
@tanguyenvn tanguyenvn self-assigned this Apr 27, 2026
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented Apr 27, 2026

Builds ready [b5b6fd0]
⚡ Performance Benchmarks (Total: 🟢 6 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 71bd826 | Date: 10/14/58243 | Pipeline: 25008756800 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-browserify
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: -53%
  • loadNewAccount/total: -53%
  • bridgeUserActions/bridge_load_page: -28%
  • bridgeUserActions/bridge_load_asset_picker: -29%
  • bridgeUserActions/bridge_search_token: -30%
  • bridgeUserActions/total: -31%

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

  • 🟡 loadNewAccount/FCP: p75 2.4s
  • 🟡 confirmTx/FCP: p75 2.5s
  • 🟡 bridgeUserActions/FCP: p75 2.5s
Startup Benchmarks · Samples: 100
Benchmarkchrome-browserifychrome-webpackfirefox-browserifyfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -21%
  • startupStandardHome/domContentLoaded: -11%
  • startupStandardHome/backgroundConnect: +15%
  • startupStandardHome/firstReactRender: -18%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/loadScripts: -14%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -22%
  • startupStandardHome/load: -18%
  • startupStandardHome/domContentLoaded: -17%
  • startupStandardHome/domInteractive: -15%
  • startupStandardHome/firstPaint: -36%
  • startupStandardHome/backgroundConnect: -36%
  • startupStandardHome/firstReactRender: -30%
  • startupStandardHome/loadScripts: -18%
  • startupStandardHome/setupStore: -13%
  • startupStandardHome/numNetworkReqs: -44%
  • startupStandardHome/uiStartup: -12%
  • startupStandardHome/domInteractive: -63%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/setupStore: -25%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -16%
  • startupStandardHome/domInteractive: -39%
  • startupStandardHome/firstReactRender: -12%
  • startupStandardHome/initialActions: +14%
  • startupStandardHome/setupStore: -64%
  • startupStandardHome/numNetworkReqs: -37%
User Journey Benchmarks · Samples: 5 · mock API

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -85%
  • onboardingImportWallet/metricsToWalletReadyScreen: -27%
  • onboardingImportWallet/doneButtonToHomeScreen: -73%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +16%
  • onboardingImportWallet/total: -41%
  • onboardingNewWallet/srpButtonToPwForm: -79%
  • onboardingNewWallet/skipBackupToMetricsScreen: -66%
  • onboardingNewWallet/doneButtonToAssetList: -32%
  • onboardingNewWallet/total: -32%
  • assetDetails/assetClickToPriceChart: -84%
  • assetDetails/total: -84%
  • solanaAssetDetails/assetClickToPriceChart: -74%
  • solanaAssetDetails/total: -74%
  • importSrpHome/openAccountMenuAfterLogin: -69%
  • importSrpHome/homeAfterImportWithNewWallet: -69%
  • importSrpHome/total: -62%
  • sendTransactions/openSendPageFromHome: -19%
  • sendTransactions/reviewTransactionToConfirmationPage: +36%
  • sendTransactions/total: +33%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +31%
  • swap/total: +10%

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

  • 🟡 assetDetails/FCP: p75 2.5s
  • 🟡 solanaAssetDetails/FCP: p75 2.5s
  • 🟡 importSrpHome/FCP: p75 2.5s
  • 🟡 sendTransactions/FCP: p75 2.5s
  • 🟡 swap/FCP: p75 2.5s
Dapp Page Load Benchmarks · Samples: 100

⚠️ Missing data: chrome/browserify/pageLoadBenchmark

✅ No regressions detected

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 6.06 KiB (0.11%)
  • ui: 9.48 KiB (0.11%)
  • common: 75.34 KiB (0.59%)

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented Apr 27, 2026

Builds ready [d5b9d36]
⚡ Performance Benchmarks (Total: 🟢 7 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 71bd826 | Date: 10/14/58243 | Pipeline: 25009904362 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-browserify
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: -64%
  • loadNewAccount/total: -64%
  • bridgeUserActions/bridge_load_page: -19%
  • bridgeUserActions/bridge_load_asset_picker: -36%
  • bridgeUserActions/bridge_search_token: -23%
  • bridgeUserActions/total: -30%

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

  • 🟡 loadNewAccount/FCP: p75 2.5s
  • 🟡 confirmTx/FCP: p75 2.5s
  • 🟡 bridgeUserActions/FCP: p75 2.5s
Startup Benchmarks · Samples: 100
Benchmarkchrome-browserifychrome-webpackfirefox-browserifyfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -22%
  • startupStandardHome/load: -11%
  • startupStandardHome/domContentLoaded: -12%
  • startupStandardHome/domInteractive: +14%
  • startupStandardHome/backgroundConnect: +14%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/loadScripts: -16%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -25%
  • startupStandardHome/load: -20%
  • startupStandardHome/domContentLoaded: -20%
  • startupStandardHome/domInteractive: -12%
  • startupStandardHome/firstPaint: -50%
  • startupStandardHome/backgroundConnect: -40%
  • startupStandardHome/firstReactRender: -27%
  • startupStandardHome/loadScripts: -20%
  • startupStandardHome/setupStore: -13%
  • startupStandardHome/numNetworkReqs: -44%
  • startupStandardHome/uiStartup: -15%
  • startupStandardHome/domInteractive: -62%
  • startupStandardHome/initialActions: +33%
  • startupStandardHome/setupStore: -17%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -18%
  • startupStandardHome/domInteractive: -68%
  • startupStandardHome/initialActions: -43%
  • startupStandardHome/setupStore: -67%
  • startupStandardHome/numNetworkReqs: -37%
User Journey Benchmarks · Samples: 5 · mock API

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -85%
  • onboardingImportWallet/metricsToWalletReadyScreen: -46%
  • onboardingImportWallet/doneButtonToHomeScreen: -75%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +26%
  • onboardingImportWallet/total: -45%
  • onboardingNewWallet/srpButtonToPwForm: -78%
  • onboardingNewWallet/skipBackupToMetricsScreen: -68%
  • onboardingNewWallet/doneButtonToAssetList: -23%
  • onboardingNewWallet/total: -25%
  • assetDetails/assetClickToPriceChart: -49%
  • assetDetails/total: -49%
  • solanaAssetDetails/assetClickToPriceChart: -73%
  • solanaAssetDetails/total: -73%
  • importSrpHome/openAccountMenuAfterLogin: -41%
  • importSrpHome/homeAfterImportWithNewWallet: -65%
  • importSrpHome/total: -58%
  • sendTransactions/openSendPageFromHome: -20%
  • sendTransactions/reviewTransactionToConfirmationPage: +37%
  • sendTransactions/total: +34%
  • swap/openSwapPageFromHome: -96%
  • swap/fetchAndDisplaySwapQuotes: +32%
  • swap/total: +11%

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

  • 🟡 assetDetails/INP: p75 208ms
  • 🟡 assetDetails/FCP: p75 2.5s
  • 🟡 solanaAssetDetails/FCP: p75 2.6s
  • 🟡 importSrpHome/FCP: p75 2.5s
  • 🟡 sendTransactions/FCP: p75 2.6s
  • 🟡 swap/FCP: p75 2.5s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-browserify
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 6.06 KiB (0.11%)
  • ui: 9.48 KiB (0.11%)
  • common: 75.7 KiB (0.59%)

@tanguyenvn tanguyenvn force-pushed the feat/TO-541-passkey-setup-and-unlock branch from d5b9d36 to d7eac43 Compare April 27, 2026 18:20
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented Apr 27, 2026

Builds ready [d7eac43]
⚡ Performance Benchmarks (Total: 🟢 7 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 71bd826 | Date: 10/14/58243 | Pipeline: 25012156971 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-browserify
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: -73%
  • loadNewAccount/total: -73%
  • bridgeUserActions/bridge_load_page: -23%
  • bridgeUserActions/bridge_load_asset_picker: -43%
  • bridgeUserActions/bridge_search_token: -26%
  • bridgeUserActions/total: -28%

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

  • 🟡 loadNewAccount/FCP: p75 2.5s
  • 🟡 confirmTx/FCP: p75 2.5s
  • 🟡 bridgeUserActions/FCP: p75 2.5s
Startup Benchmarks · Samples: 100
Benchmarkchrome-browserifychrome-webpackfirefox-browserifyfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -25%
  • startupStandardHome/load: -14%
  • startupStandardHome/domContentLoaded: -15%
  • startupStandardHome/domInteractive: +12%
  • startupStandardHome/firstReactRender: -10%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/loadScripts: -19%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -17%
  • startupStandardHome/load: -13%
  • startupStandardHome/domContentLoaded: -12%
  • startupStandardHome/firstPaint: -20%
  • startupStandardHome/backgroundConnect: -31%
  • startupStandardHome/firstReactRender: -16%
  • startupStandardHome/loadScripts: -13%
  • startupStandardHome/numNetworkReqs: -44%
  • startupStandardHome/uiStartup: -11%
  • startupStandardHome/domInteractive: -63%
  • startupStandardHome/backgroundConnect: +11%
  • startupStandardHome/initialActions: +33%
  • startupStandardHome/setupStore: -17%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -14%
  • startupStandardHome/domInteractive: -44%
  • startupStandardHome/initialActions: +14%
  • startupStandardHome/setupStore: -64%
  • startupStandardHome/numNetworkReqs: -37%
User Journey Benchmarks · Samples: 5 · mock API

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -84%
  • onboardingImportWallet/metricsToWalletReadyScreen: -49%
  • onboardingImportWallet/doneButtonToHomeScreen: -78%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +28%
  • onboardingImportWallet/total: -44%
  • onboardingNewWallet/srpButtonToPwForm: -78%
  • onboardingNewWallet/skipBackupToMetricsScreen: -66%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: -19%
  • onboardingNewWallet/doneButtonToAssetList: -39%
  • onboardingNewWallet/total: -37%
  • assetDetails/assetClickToPriceChart: -51%
  • assetDetails/total: -51%
  • solanaAssetDetails/assetClickToPriceChart: -73%
  • solanaAssetDetails/total: -73%
  • importSrpHome/loginToHomeScreen: -11%
  • importSrpHome/openAccountMenuAfterLogin: -69%
  • importSrpHome/homeAfterImportWithNewWallet: -68%
  • importSrpHome/total: -61%
  • sendTransactions/openSendPageFromHome: -23%
  • sendTransactions/reviewTransactionToConfirmationPage: +35%
  • sendTransactions/total: +33%
  • swap/openSwapPageFromHome: -96%
  • swap/fetchAndDisplaySwapQuotes: +32%
  • swap/total: +11%

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

  • 🟡 assetDetails/FCP: p75 2.3s
  • 🟡 solanaAssetDetails/FCP: p75 2.4s
  • 🟡 importSrpHome/FCP: p75 2.5s
  • 🟡 sendTransactions/FCP: p75 2.5s
  • 🟡 swap/FCP: p75 2.6s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-browserify
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 6.06 KiB (0.11%)
  • ui: 9.48 KiB (0.11%)
  • common: 74.78 KiB (0.59%)

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented Apr 28, 2026

Builds ready [e1bde4f]
⚡ Performance Benchmarks (Total: 🟢 7 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 71bd826 | Date: 10/14/58243 | Pipeline: 25046843010 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-browserify
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: -64%
  • loadNewAccount/total: -64%
  • bridgeUserActions/bridge_load_page: -30%
  • bridgeUserActions/bridge_load_asset_picker: -47%
  • bridgeUserActions/bridge_search_token: -24%
  • bridgeUserActions/total: -31%

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

  • 🟡 loadNewAccount/FCP: p75 2.4s
  • 🟡 confirmTx/FCP: p75 2.4s
  • 🟡 bridgeUserActions/FCP: p75 2.5s
Startup Benchmarks · Samples: 100
Benchmarkchrome-browserifychrome-webpackfirefox-browserifyfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -23%
  • startupStandardHome/load: -11%
  • startupStandardHome/domContentLoaded: -12%
  • startupStandardHome/backgroundConnect: +14%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/loadScripts: -17%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -17%
  • startupStandardHome/load: -12%
  • startupStandardHome/domContentLoaded: -12%
  • startupStandardHome/firstPaint: +17%
  • startupStandardHome/backgroundConnect: -35%
  • startupStandardHome/firstReactRender: -27%
  • startupStandardHome/loadScripts: -11%
  • startupStandardHome/setupStore: -13%
  • startupStandardHome/numNetworkReqs: -44%
  • startupStandardHome/uiStartup: -13%
  • startupStandardHome/domInteractive: -63%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/setupStore: -17%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/domInteractive: -35%
  • startupStandardHome/initialActions: -43%
  • startupStandardHome/setupStore: -60%
  • startupStandardHome/numNetworkReqs: -37%
User Journey Benchmarks · Samples: 5 · mock API

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -85%
  • onboardingImportWallet/metricsToWalletReadyScreen: -29%
  • onboardingImportWallet/doneButtonToHomeScreen: -77%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +26%
  • onboardingImportWallet/total: -44%
  • onboardingNewWallet/srpButtonToPwForm: -78%
  • onboardingNewWallet/skipBackupToMetricsScreen: -68%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: -19%
  • onboardingNewWallet/doneButtonToAssetList: -22%
  • onboardingNewWallet/total: -23%
  • assetDetails/assetClickToPriceChart: -37%
  • assetDetails/total: -37%
  • solanaAssetDetails/assetClickToPriceChart: -60%
  • solanaAssetDetails/total: -60%
  • importSrpHome/loginToHomeScreen: -12%
  • importSrpHome/openAccountMenuAfterLogin: -70%
  • importSrpHome/homeAfterImportWithNewWallet: -67%
  • importSrpHome/total: -59%
  • sendTransactions/openSendPageFromHome: -13%
  • sendTransactions/selectTokenToSendFormLoaded: -15%
  • sendTransactions/reviewTransactionToConfirmationPage: +34%
  • sendTransactions/total: +32%
  • swap/openSwapPageFromHome: -96%
  • swap/fetchAndDisplaySwapQuotes: +31%
  • swap/total: +11%

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

  • 🟡 assetDetails/FCP: p75 2.5s
  • 🟡 solanaAssetDetails/FCP: p75 2.5s
  • 🟡 importSrpHome/FCP: p75 2.4s
  • 🟡 sendTransactions/FCP: p75 2.5s
  • 🟡 swap/FCP: p75 2.5s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-browserify
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 9.46 KiB (0.17%)
  • ui: 9.31 KiB (0.11%)
  • common: 131.29 KiB (1.03%)

@tanguyenvn tanguyenvn changed the base branch from main to feat/TO-541-passkey-unlock April 28, 2026 11:12
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented Apr 28, 2026

Builds ready [4e6a0ef]
⚡ Performance Benchmarks (Total: 🟢 7 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 71bd826 | Date: 10/14/58243 | Pipeline: 25051776516 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-browserify
loadNewAccount🟡 [Show logs]
confirmTx🟡 [Show logs]
bridgeUserActions🟡 [Show logs]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -47%
  • loadNewAccount/total: -47%
  • bridgeUserActions/bridge_load_page: -28%
  • bridgeUserActions/bridge_load_asset_picker: -30%
  • bridgeUserActions/bridge_search_token: -29%
  • bridgeUserActions/total: -31%

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

  • 🟡 loadNewAccount/FCP: p75 2.4s
  • 🟡 confirmTx/FCP: p75 2.4s
  • 🟡 bridgeUserActions/FCP: p75 2.4s
Startup Benchmarks · Samples: 100
Benchmarkchrome-browserifychrome-webpackfirefox-browserifyfirefox-webpack
startupStandardHome🟢 [Show logs]🟢 [Show logs]🟢 [Show logs]🟢 [Show logs]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -26%
  • startupStandardHome/load: -15%
  • startupStandardHome/domContentLoaded: -17%
  • startupStandardHome/firstPaint: -40%
  • startupStandardHome/firstReactRender: -10%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/loadScripts: -21%
  • startupStandardHome/setupStore: +27%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -18%
  • startupStandardHome/load: -13%
  • startupStandardHome/domContentLoaded: -13%
  • startupStandardHome/firstPaint: +14%
  • startupStandardHome/backgroundConnect: -34%
  • startupStandardHome/firstReactRender: -27%
  • startupStandardHome/loadScripts: -13%
  • startupStandardHome/numNetworkReqs: -44%
  • startupStandardHome/domInteractive: -54%
  • startupStandardHome/backgroundConnect: +16%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -15%
  • startupStandardHome/domInteractive: -68%
  • startupStandardHome/initialActions: -43%
  • startupStandardHome/setupStore: -64%
  • startupStandardHome/numNetworkReqs: -37%
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-browserify
onboardingImportWallet🟢 [Show logs]
onboardingNewWallet🟢 [Show logs]
assetDetails🟡 [Show logs]
solanaAssetDetails🟡 [Show logs]
importSrpHome🟡 [Show logs]
sendTransactions🟡 [Show logs]
swap🟡 [Show logs]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -84%
  • onboardingImportWallet/metricsToWalletReadyScreen: -32%
  • onboardingImportWallet/doneButtonToHomeScreen: -76%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +27%
  • onboardingImportWallet/total: -45%
  • onboardingNewWallet/srpButtonToPwForm: -81%
  • onboardingNewWallet/createPwToRecoveryScreen: -22%
  • onboardingNewWallet/skipBackupToMetricsScreen: -70%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: -27%
  • onboardingNewWallet/doneButtonToAssetList: -70%
  • onboardingNewWallet/total: -64%
  • assetDetails/assetClickToPriceChart: -52%
  • assetDetails/total: -52%
  • solanaAssetDetails/assetClickToPriceChart: -66%
  • solanaAssetDetails/total: -66%
  • importSrpHome/openAccountMenuAfterLogin: -75%
  • importSrpHome/homeAfterImportWithNewWallet: -68%
  • importSrpHome/total: -61%
  • sendTransactions/openSendPageFromHome: -28%
  • sendTransactions/selectTokenToSendFormLoaded: -23%
  • sendTransactions/reviewTransactionToConfirmationPage: +34%
  • sendTransactions/total: +32%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +31%
  • swap/total: +11%

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

  • 🟡 assetDetails/FCP: p75 2.7s
  • 🟡 solanaAssetDetails/FCP: p75 2.6s
  • 🟡 importSrpHome/FCP: p75 2.4s
  • 🟡 sendTransactions/INP: p75 224ms
  • 🟡 sendTransactions/FCP: p75 2.4s
  • 🟡 swap/FCP: p75 2.4s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-browserify
dappPageLoad🟢 [Show logs]
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.32 MiB (100%)
  • ui: 8.39 MiB (100%)
  • common: 12.5 MiB (100%)

@tanguyenvn tanguyenvn marked this pull request as ready for review April 28, 2026 15:58
@tanguyenvn tanguyenvn requested review from a team as code owners April 28, 2026 15:58
Comment thread ui/pages/onboarding-flow/create-password/create-password.tsx Outdated
Comment thread ui/selectors/selectors.js
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented Apr 28, 2026

Builds ready [1b15cec]
⚡ Performance Benchmarks (Total: 🟢 7 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 71bd826 | Date: 10/14/58243 | Pipeline: 25063555901 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-browserify
loadNewAccount🟡 [Show logs]
confirmTx🟡 [Show logs]
bridgeUserActions🟡 [Show logs]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -77%
  • loadNewAccount/total: -77%
  • bridgeUserActions/bridge_load_page: -15%
  • bridgeUserActions/bridge_load_asset_picker: -24%
  • bridgeUserActions/bridge_search_token: -22%
  • bridgeUserActions/total: -27%

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

  • 🟡 loadNewAccount/FCP: p75 2.6s
  • 🟡 confirmTx/FCP: p75 2.7s
  • 🟡 bridgeUserActions/FCP: p75 2.6s
Startup Benchmarks · Samples: 100
Benchmarkchrome-browserifychrome-webpackfirefox-browserifyfirefox-webpack
startupStandardHome🟢 [Show logs]🟢 [Show logs]🟢 [Show logs]🟢 [Show logs]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -25%
  • startupStandardHome/load: -15%
  • startupStandardHome/domContentLoaded: -16%
  • startupStandardHome/firstPaint: -22%
  • startupStandardHome/firstReactRender: -10%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/loadScripts: -20%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -22%
  • startupStandardHome/load: -17%
  • startupStandardHome/domContentLoaded: -17%
  • startupStandardHome/domInteractive: -12%
  • startupStandardHome/firstPaint: -49%
  • startupStandardHome/backgroundConnect: -38%
  • startupStandardHome/firstReactRender: -23%
  • startupStandardHome/loadScripts: -17%
  • startupStandardHome/setupStore: -13%
  • startupStandardHome/numNetworkReqs: -44%
  • startupStandardHome/uiStartup: -12%
  • startupStandardHome/domInteractive: -60%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/setupStore: -17%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -17%
  • startupStandardHome/domInteractive: -68%
  • startupStandardHome/initialActions: +14%
  • startupStandardHome/setupStore: -64%
  • startupStandardHome/numNetworkReqs: -37%
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-browserify
onboardingImportWallet🟢 [Show logs]
onboardingNewWallet🟢 [Show logs]
assetDetails🟡 [Show logs]
solanaAssetDetails🟡 [Show logs]
importSrpHome🟡 [Show logs]
sendTransactions🟡 [Show logs]
swap🟡 [Show logs]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -83%
  • onboardingImportWallet/metricsToWalletReadyScreen: -40%
  • onboardingImportWallet/doneButtonToHomeScreen: -78%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +28%
  • onboardingImportWallet/total: -43%
  • onboardingNewWallet/srpButtonToPwForm: -78%
  • onboardingNewWallet/skipBackupToMetricsScreen: -66%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +12%
  • onboardingNewWallet/doneButtonToAssetList: -33%
  • onboardingNewWallet/total: -33%
  • solanaAssetDetails/assetClickToPriceChart: -63%
  • solanaAssetDetails/total: -63%
  • importSrpHome/openAccountMenuAfterLogin: -68%
  • importSrpHome/homeAfterImportWithNewWallet: -67%
  • importSrpHome/total: -58%
  • sendTransactions/openSendPageFromHome: -20%
  • sendTransactions/selectTokenToSendFormLoaded: -23%
  • sendTransactions/reviewTransactionToConfirmationPage: +34%
  • sendTransactions/total: +31%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +31%
  • swap/total: +11%

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

  • 🟡 assetDetails/INP: p75 240ms
  • 🟡 assetDetails/FCP: p75 2.6s
  • 🟡 solanaAssetDetails/FCP: p75 2.6s
  • 🟡 importSrpHome/FCP: p75 2.5s
  • 🟡 sendTransactions/FCP: p75 2.4s
  • 🟡 swap/FCP: p75 2.5s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-browserify
dappPageLoad🟢 [Show logs]
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.32 MiB (100%)
  • ui: 8.39 MiB (100%)
  • common: 12.5 MiB (100%)

Comment thread ui/pages/unlock-page/unlock-page.component.tsx
Comment thread ui/pages/onboarding-flow/setup-passkey/setup-passkey.tsx Outdated
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented Apr 28, 2026

Builds ready [707bc60]
⚡ Performance Benchmarks (Total: 🟢 7 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 71bd826 | Date: 10/14/58243 | Pipeline: 25065585653 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-browserify
loadNewAccount🟡 [Show logs]
confirmTx🟡 [Show logs]
bridgeUserActions🟡 [Show logs]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -55%
  • loadNewAccount/total: -55%
  • bridgeUserActions/bridge_load_page: -20%
  • bridgeUserActions/bridge_load_asset_picker: -27%
  • bridgeUserActions/bridge_search_token: -28%
  • bridgeUserActions/total: -27%

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

  • 🟡 loadNewAccount/FCP: p75 2.5s
  • 🟡 confirmTx/FCP: p75 2.5s
  • 🟡 bridgeUserActions/FCP: p75 2.6s
Startup Benchmarks · Samples: 100
Benchmarkchrome-browserifychrome-webpackfirefox-browserifyfirefox-webpack
startupStandardHome🟢 [Show logs]🟢 [Show logs]🟢 [Show logs]🟢 [Show logs]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -25%
  • startupStandardHome/load: -14%
  • startupStandardHome/domContentLoaded: -16%
  • startupStandardHome/firstPaint: -42%
  • startupStandardHome/backgroundConnect: +13%
  • startupStandardHome/firstReactRender: -21%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/loadScripts: -20%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -21%
  • startupStandardHome/load: -16%
  • startupStandardHome/domContentLoaded: -16%
  • startupStandardHome/domInteractive: -11%
  • startupStandardHome/firstPaint: -26%
  • startupStandardHome/backgroundConnect: -34%
  • startupStandardHome/firstReactRender: -30%
  • startupStandardHome/loadScripts: -16%
  • startupStandardHome/setupStore: -13%
  • startupStandardHome/numNetworkReqs: -44%
  • startupStandardHome/domInteractive: -22%
  • startupStandardHome/backgroundConnect: +16%
  • startupStandardHome/firstReactRender: +11%
  • startupStandardHome/initialActions: +33%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -19%
  • startupStandardHome/load: -11%
  • startupStandardHome/domContentLoaded: -11%
  • startupStandardHome/domInteractive: -70%
  • startupStandardHome/initialActions: -43%
  • startupStandardHome/loadScripts: -11%
  • startupStandardHome/setupStore: -64%
  • startupStandardHome/numNetworkReqs: -37%
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-browserify
onboardingImportWallet🟢 [Show logs]
onboardingNewWallet🟢 [Show logs]
assetDetails🟡 [Show logs]
solanaAssetDetails🟡 [Show logs]
importSrpHome🟡 [Show logs]
sendTransactions🟡 [Show logs]
swap🟡 [Show logs]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -86%
  • onboardingImportWallet/metricsToWalletReadyScreen: -34%
  • onboardingImportWallet/doneButtonToHomeScreen: -75%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +17%
  • onboardingImportWallet/total: -45%
  • onboardingNewWallet/srpButtonToPwForm: -77%
  • onboardingNewWallet/skipBackupToMetricsScreen: -66%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +19%
  • onboardingNewWallet/doneButtonToAssetList: -25%
  • onboardingNewWallet/total: -26%
  • assetDetails/assetClickToPriceChart: -43%
  • assetDetails/total: -43%
  • solanaAssetDetails/assetClickToPriceChart: -68%
  • solanaAssetDetails/total: -68%
  • importSrpHome/loginToHomeScreen: -13%
  • importSrpHome/openAccountMenuAfterLogin: -67%
  • importSrpHome/homeAfterImportWithNewWallet: -68%
  • importSrpHome/total: -61%
  • sendTransactions/openSendPageFromHome: -38%
  • sendTransactions/selectTokenToSendFormLoaded: -39%
  • sendTransactions/reviewTransactionToConfirmationPage: +33%
  • sendTransactions/total: +29%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +31%
  • swap/total: +10%

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

  • 🟡 assetDetails/FCP: p75 2.5s
  • 🟡 solanaAssetDetails/FCP: p75 2.5s
  • 🟡 importSrpHome/FCP: p75 2.4s
  • 🟡 sendTransactions/FCP: p75 2.0s
  • 🟡 swap/FCP: p75 2.1s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-browserify
dappPageLoad🟢 [Show logs]
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.32 MiB (100%)
  • ui: 8.39 MiB (100%)
  • common: 12.5 MiB (100%)

(firstTimeFlowType === FirstTimeFlowType.import ||
firstTimeFlowType === FirstTimeFlowType.create)
) {
navigate(ONBOARDING_SETUP_PASSKEY_ROUTE, { replace: 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.

should not allow in sidepanel mode

Comment thread ui/pages/onboarding-flow/create-password/create-password.tsx Outdated
Comment thread ui/selectors/selectors.js
Comment thread ui/pages/unlock-page/unlock-page.component.tsx
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 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 259b5ea. Configure here.

</Button>
</Box>
</form>
)}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Passkey unlock view missing form wrapper breaks keyboard submission

Low Severity

When showPasswordUnlockForm is false, the passkey view is rendered as a plain Box instead of a form. The outer Box with asChild (line 809) expects to merge its props — including data-testid="unlock-page" — into its single child. The password branch is a <form> so asChild works naturally, but the passkey branch is a non-form <Box> that still receives the form-related context from the parent. More importantly, the "Unlock with biometrics" button will never be reachable via Enter/keyboard submission since there is no <form> and the button is type="button".

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 259b5ea. Configure here.


if (isFirefox || isSocialLoginFlow) {
if (isPasskeyFeatureAvailable && !isSocialLoginFlow) {
navigate(ONBOARDING_SETUP_PASSKEY_ROUTE, { replace: true });
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant isSocialLoginFlow guard masks intent of passkey check

Low Severity

isPasskeyFeatureAvailable && !isSocialLoginFlow is redundant — getIsPasskeyFeatureAvailable already includes !getIsSocialLoginFlow(state) internally. This same redundancy appears in the unlock page container where isPasskeyActive combines getIsPasskeyFeatureAvailable(state) with !isSocialLoginFlow. The double-checking obscures the actual invariant and could mislead future maintainers into thinking the inner check might be absent.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 259b5ea. Configure here.

@sonarqubecloud
Copy link
Copy Markdown

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 Bot commented Apr 28, 2026

Builds ready [259b5ea]
⚡ Performance Benchmarks (Total: 🟢 7 pass · 🟡 8 warn · 🔴 0 fail)

Baseline (latest main): 71bd826 | Date: 10/14/58243 | Pipeline: 25068486781 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-browserify
loadNewAccount🟡 [Show logs]
confirmTx🟡 [Show logs]
bridgeUserActions🟡 [Show logs]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -53%
  • loadNewAccount/total: -53%
  • bridgeUserActions/bridge_load_page: -29%
  • bridgeUserActions/bridge_load_asset_picker: -33%
  • bridgeUserActions/bridge_search_token: -28%
  • bridgeUserActions/total: -29%

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

  • 🟡 loadNewAccount/FCP: p75 2.4s
  • 🟡 confirmTx/FCP: p75 2.5s
  • 🟡 bridgeUserActions/FCP: p75 2.4s
Startup Benchmarks · Samples: 100
Benchmarkchrome-browserifychrome-webpackfirefox-browserifyfirefox-webpack
startupStandardHome🟢 [Show logs]🟢 [Show logs]🟢 [Show logs]🟢 [Show logs]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -24%
  • startupStandardHome/load: -13%
  • startupStandardHome/domContentLoaded: -15%
  • startupStandardHome/firstPaint: -49%
  • startupStandardHome/firstReactRender: -10%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/loadScripts: -18%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -21%
  • startupStandardHome/load: -16%
  • startupStandardHome/domContentLoaded: -16%
  • startupStandardHome/firstPaint: -40%
  • startupStandardHome/backgroundConnect: -37%
  • startupStandardHome/firstReactRender: -23%
  • startupStandardHome/loadScripts: -16%
  • startupStandardHome/numNetworkReqs: -44%
  • startupStandardHome/uiStartup: -13%
  • startupStandardHome/domInteractive: -63%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/setupStore: -17%
  • startupStandardHome/numNetworkReqs: -37%
  • startupStandardHome/uiStartup: -18%
  • startupStandardHome/load: -11%
  • startupStandardHome/domContentLoaded: -11%
  • startupStandardHome/domInteractive: -71%
  • startupStandardHome/initialActions: -43%
  • startupStandardHome/loadScripts: -11%
  • startupStandardHome/setupStore: -64%
  • startupStandardHome/numNetworkReqs: -37%
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-browserify
onboardingImportWallet🟢 [Show logs]
onboardingNewWallet🟢 [Show logs]
assetDetails🟡 [Show logs]
solanaAssetDetails🟡 [Show logs]
importSrpHome🟡 [Show logs]
sendTransactions🟡 [Show logs]
swap🟡 [Show logs]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -85%
  • onboardingImportWallet/metricsToWalletReadyScreen: -47%
  • onboardingImportWallet/doneButtonToHomeScreen: -76%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +27%
  • onboardingImportWallet/total: -42%
  • onboardingNewWallet/srpButtonToPwForm: -77%
  • onboardingNewWallet/skipBackupToMetricsScreen: -65%
  • onboardingNewWallet/doneButtonToAssetList: -27%
  • onboardingNewWallet/total: -28%
  • assetDetails/assetClickToPriceChart: -49%
  • assetDetails/total: -49%
  • solanaAssetDetails/assetClickToPriceChart: -65%
  • solanaAssetDetails/total: -65%
  • importSrpHome/loginToHomeScreen: -11%
  • importSrpHome/openAccountMenuAfterLogin: -82%
  • importSrpHome/homeAfterImportWithNewWallet: -67%
  • importSrpHome/total: -60%
  • sendTransactions/openSendPageFromHome: -23%
  • sendTransactions/selectTokenToSendFormLoaded: -17%
  • sendTransactions/reviewTransactionToConfirmationPage: +34%
  • sendTransactions/total: +32%
  • swap/openSwapPageFromHome: -96%
  • swap/fetchAndDisplaySwapQuotes: +31%
  • swap/total: +11%

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

  • 🟡 assetDetails/FCP: p75 2.4s
  • 🟡 solanaAssetDetails/FCP: p75 2.4s
  • 🟡 importSrpHome/FCP: p75 2.4s
  • 🟡 sendTransactions/FCP: p75 2.5s
  • 🟡 swap/FCP: p75 2.5s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-browserify
dappPageLoad🟢 [Show logs]
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 5.32 MiB (100%)
  • ui: 8.39 MiB (100%)
  • common: 12.5 MiB (100%)

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants