Skip to content

refactor: consolidate Home page into single hook-based component#44293

Merged
DDDDDanica merged 4 commits into
mainfrom
perf/home-refactor
Jul 10, 2026
Merged

refactor: consolidate Home page into single hook-based component#44293
DDDDDanica merged 4 commits into
mainfrom
perf/home-refactor

Conversation

@DDDDDanica

@DDDDDanica DDDDDanica commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Description

Consolidates the Home page from three files (home.component.tsx, home.container.tsx, index.ts) into a single [ui/pages/home/home.tsx](ui/pages/home/home.tsx).

The new Home component uses hooks directly (useSelector, useDispatch, useNavigate, useLocation) instead of the old container/presentational split. Redirect logic remains in [useHomeRedirects.ts](ui/pages/home/useHomeRedirects.ts).

Changelog

CHANGELOG entry: null

Related issues

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

Manual testing steps

  1. Go to this page...

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

Medium Risk
Home is the default wallet landing page with redirects, notification-popup closing, and many modals; behavior should be equivalent but the structural change warrants manual smoke testing.

Overview
Collapses the Home page from home.component.tsx, home.container.tsx, and index.ts into one home.tsx that reads Redux and router state via hooks (useSelector, useDispatch, useNavigate, useLocation) and local helpers useHomeState / useHomeActions. AppHeader and DappConnectionControlBar move into Home (including connected-sites / connected-accounts branches) instead of wrapping the presentational component in the container.

Routing stops lazy-loading Home through index.ts and imports ../home/home.tsx directly on the default route. Storybook is rewritten to drive scenarios through Redux (createHomeStoryStore, .storybook/test-data) rather than long prop lists; tests merge into home.test.tsx targeting the unified export.

Jest console baselines are updated (more Reselect input-stability warnings in confirmation integration tests; removal of home.container.test.tsx entry). Minor whitespace-only change in unlock-page.container.ts.

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

@DDDDDanica DDDDDanica self-assigned this Jul 9, 2026
@DDDDDanica DDDDDanica added the team-extension-platform Extension Platform team label Jul 9, 2026
@github-actions

github-actions Bot commented Jul 9, 2026

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.

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 refactors the Home page to a single hook-based component, removing the previous container/presentational split while keeping redirect behavior encapsulated in useHomeRedirects.

Changes:

  • Consolidates Home into ui/pages/home/home.tsx, wiring Redux/router behavior directly via hooks.
  • Updates routing to lazy-load the new Home entrypoint and removes the old index.ts re-export.
  • Refreshes unit tests and Storybook stories to target the new component.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
ui/pages/routes/routes.component.tsx Updates lazy import to point at the new Home component module.
ui/pages/home/index.ts Removes the old default export re-export (container-based entrypoint).
ui/pages/home/home.tsx Adds the consolidated, hook-based Home component implementation.
ui/pages/home/home.test.tsx Updates tests to render the new hook-based Home with Redux/router providers.
ui/pages/home/home.stories.tsx Adds updated Storybook stories backed by Redux state overrides.
ui/pages/home/home.container.tsx Removes the old container component implementation.
ui/pages/home/home.container.test.tsx Removes tests for the deleted container layer.
ui/pages/home/home.component.tsx Removes the old presentational Home component.
ui/pages/home/home.component.stories.tsx Removes the old stories for the presentational Home component.

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

Comment thread ui/pages/home/home.tsx Outdated
@metamask-ci

metamask-ci Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

✨ Files requiring CODEOWNER review ✨

👨‍🔧 @MetaMask/core-extension-ux (9 files, +644 -692)
  • 📁 ui/
    • 📁 pages/
      • 📁 home/
        • 📄 home.component.stories.tsx +0 -140
        • 📄 home.component.test.tsx +0 -138
        • 📄 home.component.tsx +0 -197
        • 📄 home.container.test.tsx +0 -59
        • 📄 home.container.tsx +0 -157
        • 📄 home.stories.tsx +167 -0
        • 📄 home.test.tsx +187 -0
        • 📄 home.tsx +290 -0
        • 📄 index.ts +0 -1

@metamask-ci

metamask-ci Bot commented Jul 9, 2026

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

Baseline (latest main): 1716549 | Date: 6/29/2026 | Pipeline: 28987822396 | 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: -22%
  • loadNewAccount/total: -22%
  • loadNewAccount/inp: -34%
  • loadNewAccount/fcp: -23%
  • loadNewAccount/lcp: +54%
  • loadNewAccount/cls: -100%
  • confirmTx/longTaskTotalDuration: -21%
  • confirmTx/longTaskMaxDuration: -27%
  • confirmTx/tbt: -40%
  • confirmTx/inp: -18%
  • confirmTx/fcp: -21%
  • confirmTx/lcp: -11%
  • bridgeUserActions/bridge_load_page: -16%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/longTaskTotalDuration: -42%
  • bridgeUserActions/longTaskMaxDuration: -35%
  • bridgeUserActions/tbt: -86%
  • bridgeUserActions/inp: -40%
  • bridgeUserActions/fcp: -15%
  • loadNewAccount/load_new_account: +434%
  • loadNewAccount/total: +434%
  • loadNewAccount/inp: -26%
  • loadNewAccount/fcp: -62%
  • loadNewAccount/lcp: +970%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/lcp: +961%
  • bridgeUserActions/bridge_load_page: +50%
  • bridgeUserActions/bridge_load_asset_picker: +27%
  • bridgeUserActions/bridge_search_token: +39%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +39%
  • bridgeUserActions/inp: -14%
  • bridgeUserActions/fcp: -62%
  • bridgeUserActions/lcp: +983%
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/numNetworkReqs: +35%
  • startupStandardHome/domInteractive: -25%
  • startupStandardHome/setupStore: +38%
  • startupStandardHome/fcp: -24%
  • startupPowerUserHome/domInteractive: -12%
  • startupPowerUserHome/backgroundConnect: -11%
  • startupPowerUserHome/firstReactRender: +18%
  • startupPowerUserHome/setupStore: -91%
  • startupPowerUserHome/fcp: -13%

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

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

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/metricsToWalletReadyScreen: -18%
  • onboardingImportWallet/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -98%
  • onboardingImportWallet/longTaskCount: -60%
  • onboardingImportWallet/longTaskTotalDuration: -88%
  • onboardingImportWallet/longTaskMaxDuration: -90%
  • onboardingImportWallet/tbt: -99%
  • onboardingImportWallet/total: -85%
  • onboardingNewWallet/doneButtonToAssetList: -14%
  • onboardingNewWallet/longTaskCount: -50%
  • onboardingNewWallet/longTaskTotalDuration: -64%
  • onboardingNewWallet/longTaskMaxDuration: -37%
  • onboardingNewWallet/tbt: -79%
  • onboardingNewWallet/total: -13%
  • solanaAssetDetails/assetClickToPriceChart: -61%
  • solanaAssetDetails/total: -61%
  • solanaAssetDetails/inp: -31%
  • importSrpHome/homeAfterImportWithNewWallet: -25%
  • importSrpHome/longTaskCount: -35%
  • importSrpHome/longTaskTotalDuration: -38%
  • importSrpHome/longTaskMaxDuration: -15%
  • importSrpHome/tbt: -39%
  • importSrpHome/total: -21%
  • importSrpHome/inp: -30%
  • importSrpHome/lcp: -61%
  • importSrpHome/cls: -47%
  • sendTransactions/openSendPageFromHome: -33%
  • sendTransactions/selectTokenToSendFormLoaded: -46%
  • sendTransactions/reviewTransactionToConfirmationPage: +31%
  • sendTransactions/longTaskCount: -20%
  • sendTransactions/longTaskTotalDuration: -18%
  • sendTransactions/total: +31%
  • sendTransactions/inp: -28%
  • sendTransactions/fcp: -10%
  • sendTransactions/lcp: -11%
  • sendTransactions/cls: +21%
  • swap/openSwapPageFromHome: -23%
  • swap/fetchAndDisplaySwapQuotes: +104%
  • swap/longTaskMaxDuration: +15%
  • swap/total: +102%
  • swap/cls: -63%

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

  • 🟡 assetDetails/FCP: p75 2.0s
  • 🟡 assetDetails/FCP: p75 1.8s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 1.8s
  • 🟡 swap/FCP: p75 1.8s
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: -26%
  • dappPageLoad/domContentLoaded: -22%
  • dappPageLoad/firstPaint: -14%
  • dappPageLoad/firstContentfulPaint: -14%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 296.81 KiB (2.69%)
  • ui: 78.34 KiB (0.45%)
  • common: 0 Bytes (0%)
  • other: 107 Bytes (0.01%)
  • contentScripts: 3.22 KiB (0.18%)
  • zip: 213.34 KiB (0.8%)

@DDDDDanica
DDDDDanica marked this pull request as ready for review July 9, 2026 12:21
@DDDDDanica
DDDDDanica requested a review from a team as a code owner July 9, 2026 12:21
Comment thread ui/pages/routes/routes.component.tsx Outdated
import('../../components/multichain/pages/gator-permissions/review-permissions/review-gator-permissions-page.tsx'),
);
const Home = mmLazy(() => import('../home/index.ts'));
const Home = mmLazy(() => import('../home/home.tsx'));

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.

does home component need to be lazy loaded?

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.

I guess we always load the home page? so it's probably faster to load it eagerly

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.

Comment thread ui/pages/home/home.tsx Outdated
export default function Home() {
const navigate = useNavigate();
const location = useLocation();
const { trackEvent } = useContext(MetaMetricsContext);

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.

Can we use useAnalytics instead?

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.

Second this

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.

Will wait for #43899 and resolve merge conflict

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 be added here db07078

@metamask-ci

metamask-ci Bot commented Jul 9, 2026

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

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

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
confirmTx
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -21%
  • loadNewAccount/total: -21%
  • loadNewAccount/inp: -26%
  • bridgeUserActions/bridge_load_page: -33%
  • bridgeUserActions/longTaskCount: +67%
  • bridgeUserActions/longTaskTotalDuration: +42%
  • bridgeUserActions/inp: -14%
  • bridgeUserActions/lcp: +15%
  • loadNewAccount/load_new_account: +51%
  • loadNewAccount/total: +51%
  • loadNewAccount/inp: -18%
  • loadNewAccount/lcp: +1144%
  • confirmTx/confirm_tx: +15%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +15%
  • confirmTx/lcp: +1150%
  • bridgeUserActions/bridge_load_page: +117%
  • bridgeUserActions/bridge_load_asset_picker: +84%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +174%
  • bridgeUserActions/inp: -14%
  • bridgeUserActions/fcp: -49%
  • bridgeUserActions/lcp: +1236%

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

  • 🟡 loadNewAccount/FCP: p75 1.9s
  • 🟡 confirmTx/FCP: p75 1.9s
Startup Benchmarks · Samples: 100

⚠️ Missing data: chrome/webpack/startupStandardHome

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: -21%
  • startupStandardHome/firstReactRender: +321%
  • startupStandardHome/setupStore: +45%
  • startupStandardHome/fcp: -21%
  • startupPowerUserHome/uiStartup: +11%
  • startupPowerUserHome/domInteractive: -34%
  • startupPowerUserHome/backgroundConnect: -26%
  • startupPowerUserHome/firstReactRender: +588%
  • startupPowerUserHome/fcp: -28%

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

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

⚠️ Missing data: chrome/webpack/userJourneyOnboardingImport, chrome/webpack/userJourneyAccountManagement

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

📈 Results compared to the previous 5 runs on main

  • onboardingNewWallet/doneButtonToAssetList: -15%
  • onboardingNewWallet/longTaskCount: -100%
  • onboardingNewWallet/longTaskTotalDuration: -100%
  • onboardingNewWallet/longTaskMaxDuration: -100%
  • onboardingNewWallet/tbt: -100%
  • onboardingNewWallet/total: -12%
  • solanaAssetDetails/assetClickToPriceChart: -68%
  • solanaAssetDetails/total: -68%
  • solanaAssetDetails/inp: -31%
  • sendTransactions/selectTokenToSendFormLoaded: -66%
  • sendTransactions/reviewTransactionToConfirmationPage: -39%
  • sendTransactions/longTaskCount: -100%
  • sendTransactions/longTaskTotalDuration: -100%
  • sendTransactions/longTaskMaxDuration: -100%
  • sendTransactions/tbt: -100%
  • sendTransactions/total: -39%
  • sendTransactions/inp: -45%
  • sendTransactions/fcp: -33%
  • sendTransactions/lcp: -28%
  • sendTransactions/cls: -40%
  • swap/fetchAndDisplaySwapQuotes: +101%
  • swap/longTaskCount: -100%
  • swap/longTaskTotalDuration: -100%
  • swap/longTaskMaxDuration: -100%
  • swap/tbt: -100%
  • swap/total: +99%
  • swap/inp: -34%
  • swap/fcp: -33%
  • swap/lcp: -18%
  • swap/cls: -63%

🌐 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 2.0s
  • 🟡 sendTransactions/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 303.72 KiB (2.75%)
  • ui: 92.92 KiB (0.54%)
  • common: 0 Bytes (0%)
  • other: 107 Bytes (0.01%)
  • contentScripts: 3.27 KiB (0.18%)
  • zip: 216.36 KiB (0.81%)

@metamask-ci

metamask-ci Bot commented Jul 9, 2026

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

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

Metricschrome-webpackfirefox-webpack
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🔴 [CI log]

Regressions (🔴 1 failure)

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: +39%
  • loadNewAccount/total: +39%
  • loadNewAccount/lcp: +15%
  • confirmTx/longTaskMaxDuration: -12%
  • confirmTx/tbt: -11%
  • bridgeUserActions/bridge_load_page: -27%
  • bridgeUserActions/bridge_load_asset_picker: -16%
  • bridgeUserActions/longTaskCount: +67%
  • bridgeUserActions/longTaskTotalDuration: +28%
  • bridgeUserActions/longTaskMaxDuration: -15%
  • bridgeUserActions/inp: -22%
  • loadNewAccount/load_new_account: +49%
  • loadNewAccount/total: +49%
  • loadNewAccount/inp: -26%
  • loadNewAccount/lcp: +1094%
  • confirmTx/confirm_tx: +11%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +11%
  • confirmTx/fcp: -49%
  • confirmTx/lcp: +1104%
  • bridgeUserActions/bridge_load_page: +67%
  • bridgeUserActions/bridge_load_asset_picker: +99%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +165%
  • bridgeUserActions/inp: -22%
  • bridgeUserActions/lcp: +1114%

🌐 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]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: +17%
  • startupStandardHome/firstPaint: -12%
  • startupStandardHome/firstReactRender: +211%
  • startupStandardHome/numNetworkReqs: +10%
  • startupStandardHome/lcp: -10%
  • startupStandardHome/domInteractive: -27%
  • startupStandardHome/firstReactRender: +291%
  • startupStandardHome/setupStore: +38%
  • startupStandardHome/fcp: -24%
  • startupPowerUserHome/domInteractive: -38%
  • startupPowerUserHome/backgroundConnect: +47%
  • startupPowerUserHome/firstReactRender: +617%
  • startupPowerUserHome/fcp: -38%

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

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

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/metricsToWalletReadyScreen: -18%
  • onboardingImportWallet/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -63%
  • onboardingImportWallet/longTaskCount: -80%
  • onboardingImportWallet/longTaskTotalDuration: -94%
  • onboardingImportWallet/longTaskMaxDuration: -92%
  • onboardingImportWallet/tbt: -100%
  • onboardingImportWallet/total: -84%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: -23%
  • onboardingNewWallet/doneButtonToAssetList: -12%
  • onboardingNewWallet/longTaskCount: -100%
  • onboardingNewWallet/longTaskTotalDuration: -100%
  • onboardingNewWallet/longTaskMaxDuration: -100%
  • onboardingNewWallet/tbt: -100%
  • onboardingNewWallet/total: -11%
  • solanaAssetDetails/assetClickToPriceChart: -53%
  • solanaAssetDetails/total: -53%
  • solanaAssetDetails/inp: -24%
  • importSrpHome/loginToHomeScreen: -19%
  • importSrpHome/openAccountMenuAfterLogin: +14%
  • importSrpHome/homeAfterImportWithNewWallet: +16%
  • importSrpHome/longTaskCount: -44%
  • importSrpHome/longTaskTotalDuration: -37%
  • importSrpHome/tbt: -31%
  • importSrpHome/lcp: -54%
  • importSrpHome/cls: -47%
  • sendTransactions/openSendPageFromHome: -27%
  • sendTransactions/selectTokenToSendFormLoaded: -49%
  • sendTransactions/reviewTransactionToConfirmationPage: +21%
  • sendTransactions/longTaskCount: -20%
  • sendTransactions/longTaskTotalDuration: -27%
  • sendTransactions/longTaskMaxDuration: -12%
  • sendTransactions/tbt: -62%
  • sendTransactions/total: +20%
  • sendTransactions/cls: -40%
  • swap/openSwapPageFromHome: -30%
  • swap/fetchAndDisplaySwapQuotes: +154%
  • swap/longTaskTotalDuration: -17%
  • swap/tbt: -78%
  • swap/total: +151%
  • swap/inp: +15%
  • swap/cls: -63%

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

  • 🟡 importSrpHome/INP: p75 280ms
  • 🟡 sendTransactions/FCP: p75 1.8s
  • 🟡 swap/FCP: p75 1.8s
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle sizes
  • background: 11.07 MiB
  • ui: 17 MiB
  • common: 0 Bytes
  • other: 998.07 KiB
  • contentScripts: 1.79 MiB
  • zip: 26.34 MiB
No matching bundle-size baseline was found in the history data, so diff values are omitted.

@sonarqubecloud

sonarqubecloud Bot commented Jul 9, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

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

See analysis details on SonarQube Cloud

@metamask-ci

metamask-ci Bot commented Jul 9, 2026

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

Baseline (latest main): 1716549 | Date: 6/29/2026 | Pipeline: 29057281029 | 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: -31%
  • loadNewAccount/total: -31%
  • loadNewAccount/inp: -43%
  • loadNewAccount/fcp: -29%
  • loadNewAccount/lcp: -21%
  • confirmTx/longTaskTotalDuration: -38%
  • confirmTx/longTaskMaxDuration: -43%
  • confirmTx/tbt: -70%
  • confirmTx/inp: -29%
  • confirmTx/fcp: -39%
  • confirmTx/lcp: -23%
  • bridgeUserActions/bridge_load_page: -51%
  • bridgeUserActions/bridge_load_asset_picker: -43%
  • bridgeUserActions/longTaskCount: -17%
  • bridgeUserActions/longTaskTotalDuration: -45%
  • bridgeUserActions/longTaskMaxDuration: -39%
  • bridgeUserActions/tbt: -94%
  • bridgeUserActions/total: -20%
  • bridgeUserActions/inp: -48%
  • bridgeUserActions/fcp: -36%
  • bridgeUserActions/lcp: -26%
  • loadNewAccount/load_new_account: +49%
  • loadNewAccount/total: +49%
  • loadNewAccount/lcp: +1126%
  • confirmTx/confirm_tx: +11%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +11%
  • confirmTx/inp: +12%
  • confirmTx/lcp: +1134%
  • bridgeUserActions/bridge_load_page: +124%
  • bridgeUserActions/bridge_load_asset_picker: +51%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +20%
  • bridgeUserActions/inp: +38%
  • bridgeUserActions/fcp: -46%
  • bridgeUserActions/lcp: +1254%

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

  • 🟡 confirmTx/FCP: p75 1.9s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/load: -21%
  • startupStandardHome/domContentLoaded: -21%
  • startupStandardHome/domInteractive: -19%
  • startupStandardHome/firstPaint: -15%
  • startupStandardHome/backgroundConnect: -23%
  • startupStandardHome/firstReactRender: +154%
  • startupStandardHome/initialActions: -33%
  • startupStandardHome/loadScripts: -21%
  • startupStandardHome/numNetworkReqs: +10%
  • startupStandardHome/longTaskCount: -33%
  • startupStandardHome/longTaskTotalDuration: -22%
  • startupStandardHome/longTaskMaxDuration: -22%
  • startupStandardHome/tbt: -19%
  • startupStandardHome/inp: -13%
  • startupStandardHome/fcp: -21%
  • startupStandardHome/lcp: +258%
  • startupStandardHome/uiStartup: -21%
  • startupStandardHome/load: -21%
  • startupStandardHome/domContentLoaded: -21%
  • startupStandardHome/domInteractive: -34%
  • startupStandardHome/backgroundConnect: -19%
  • startupStandardHome/firstReactRender: +216%
  • startupStandardHome/initialActions: -50%
  • startupStandardHome/loadScripts: -21%
  • startupStandardHome/fcp: -31%
  • startupStandardHome/lcp: -22%
  • startupPowerUserHome/domInteractive: -18%
  • startupPowerUserHome/backgroundConnect: -35%
  • startupPowerUserHome/firstReactRender: +591%
  • startupPowerUserHome/inp: -20%
  • startupPowerUserHome/fcp: -20%

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

  • 🟡 startupPowerUserHome/LCP: p75 3.4s
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/metricsToWalletReadyScreen: -12%
  • onboardingImportWallet/doneButtonToHomeScreen: -86%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -50%
  • onboardingImportWallet/longTaskCount: -80%
  • onboardingImportWallet/longTaskTotalDuration: -92%
  • onboardingImportWallet/longTaskMaxDuration: -89%
  • onboardingImportWallet/tbt: -97%
  • onboardingImportWallet/total: -83%
  • onboardingNewWallet/createPwToRecoveryScreen: +13%
  • onboardingNewWallet/skipBackupToMetricsScreen: +15%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +13%
  • onboardingNewWallet/longTaskTotalDuration: -37%
  • onboardingNewWallet/longTaskMaxDuration: -38%
  • onboardingNewWallet/tbt: -80%
  • solanaAssetDetails/assetClickToPriceChart: -58%
  • solanaAssetDetails/total: -58%
  • solanaAssetDetails/inp: -24%
  • importSrpHome/loginToHomeScreen: -18%
  • importSrpHome/openAccountMenuAfterLogin: -18%
  • importSrpHome/homeAfterImportWithNewWallet: -20%
  • importSrpHome/longTaskCount: -52%
  • importSrpHome/longTaskTotalDuration: -45%
  • importSrpHome/tbt: -43%
  • importSrpHome/total: -19%
  • importSrpHome/lcp: -56%
  • importSrpHome/cls: -47%
  • sendTransactions/openSendPageFromHome: -46%
  • sendTransactions/selectTokenToSendFormLoaded: -64%
  • sendTransactions/reviewTransactionToConfirmationPage: -56%
  • sendTransactions/longTaskCount: -100%
  • sendTransactions/longTaskTotalDuration: -100%
  • sendTransactions/longTaskMaxDuration: -100%
  • sendTransactions/tbt: -100%
  • sendTransactions/total: -56%
  • sendTransactions/inp: -36%
  • sendTransactions/fcp: -27%
  • sendTransactions/lcp: -21%
  • sendTransactions/cls: -40%
  • swap/openSwapPageFromHome: -29%
  • swap/fetchAndDisplaySwapQuotes: +109%
  • swap/longTaskCount: -100%
  • swap/longTaskTotalDuration: -100%
  • swap/longTaskMaxDuration: -100%
  • swap/tbt: -100%
  • swap/total: +107%
  • swap/inp: -18%
  • swap/fcp: -16%
  • swap/lcp: -13%
  • swap/cls: -63%

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

  • 🟡 importSrpHome/INP: p75 264ms
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 1.9s
  • 🔴 swap/INP: p75 744ms
  • 🟡 swap/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle sizes
  • background: 11.07 MiB
  • ui: 17 MiB
  • common: 0 Bytes
  • other: 998.07 KiB
  • contentScripts: 1.79 MiB
  • zip: 26.34 MiB
No matching bundle-size baseline was found in the history data, so diff values are omitted.

@DDDDDanica
DDDDDanica added this pull request to the merge queue Jul 10, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 10, 2026
@DDDDDanica
DDDDDanica added this pull request to the merge queue Jul 10, 2026
Merged via the queue into main with commit f0d9f25 Jul 10, 2026
205 of 207 checks passed
@DDDDDanica
DDDDDanica deleted the perf/home-refactor branch July 10, 2026 15:59
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 10, 2026
@metamaskbot metamaskbot added release-13.41.0 Issue or pull request that will be included in release 13.41.0 release-13.40.0 Issue or pull request that will be included in release 13.40.0 and removed release-13.41.0 Issue or pull request that will be included in release 13.41.0 labels Jul 10, 2026
@gauthierpetetin

Copy link
Copy Markdown
Contributor

Missing release label release-13.40.0 on PR. Adding release label release-13.40.0 on PR and removing other release labels(release-13.41.0), as PR was added to branch 13.40.0 when release was cut.

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

Labels

release-13.40.0 Issue or pull request that will be included in release 13.40.0 risk:medium size-XL team-extension-platform Extension Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants