Skip to content

feat(perps): update perps controller to latest on extension#43356

Open
abretonc7s wants to merge 12 commits into
mainfrom
TAT-3307-feat-update-perps-controller
Open

feat(perps): update perps controller to latest on extension#43356
abretonc7s wants to merge 12 commits into
mainfrom
TAT-3307-feat-update-perps-controller

Conversation

@abretonc7s

@abretonc7s abretonc7s commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Description

Updates Extension to @metamask/perps-controller@^8.0.0 and aligns Perps market filters with the v8 category contract.

Key changes

  • Dynamic market filters: VALID_MARKET_FILTERS now derives from the controller's MARKET_CATEGORIES instead of a hardcoded list — adding a new category in core requires no UI code change (only an i18n label key).
  • Generic filtering: the per-category switch cases in market-list are collapsed into a generic default using getMarketTypeFilter(m) === filter.
  • Legacy deeplink compat: normalizeMarketFilter maps old plural forms (stocksstock, commoditiescommodity) so previously-shared URLs still resolve. Aligned with mobile (feat(perps): update perps controller to latest on mobile metamask-mobile#31248). Can be removed once no legacy deeplinks are in circulation.
  • Jest integration config: jest.integration.config.js now maps @metamask/perps-controller to the existing CJS mock (same pattern as jest.config.js). Needed because shared/constants/perps.ts now imports MARKET_CATEGORIES from the controller, which transitively pulls in @nktkas/hyperliquid@noble/hashes (ESM-only). Jest cannot transform ESM in node_modules by default.

Changelog

CHANGELOG entry: null

Related issues

Fixes: TAT-3307
Related: MetaMask/metamask-mobile#31248 (same v8 upgrade on mobile)

Manual testing steps

  1. Run yarn jest shared/lib/deep-links/routes/perps.test.ts ui/pages/perps/market-list/index.test.tsx ui/pages/perps/perps-market-detail-page.test.tsx ui/__mocks__/perps/perps-controller/index.test.ts --no-coverage
  2. Run the validation recipe from the section below.

Screenshots/Recordings

Not applicable: dependency/state contract update.

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.

@github-actions

github-actions Bot commented Jun 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.

@mm-token-exchange-service mm-token-exchange-service Bot added the team-perps Perps team label Jun 9, 2026
@mm-token-exchange-service

mm-token-exchange-service Bot commented Jun 9, 2026

Copy link
Copy Markdown

✨ Files requiring CODEOWNER review ✨

👨‍🔧 @MetaMask/perps (12 files, +183 -165)
  • 📁 shared/
    • 📁 lib/
      • 📁 deep-links/
        • 📁 routes/
          • 📄 perps.ts +8 -10
  • 📁 test/
    • 📁 e2e/
      • 📁 page-objects/
        • 📁 pages/
          • 📁 perps/
            • 📄 perps-market-list-page.ts +1 -1
  • 📁 ui/
    • 📁 __mocks__/
      • 📁 perps/
        • 📁 perps-controller/
          • 📄 index.test.ts +24 -2
          • 📄 index.ts +44 -5
    • 📁 components/
      • 📁 app/
        • 📁 perps/
          • 📄 constants.ts +2 -89
          • 📄 mocks.ts +10 -10
          • 📄 utils.ts +1 -1
    • 📁 pages/
      • 📁 perps/
        • 📁 market-list/
          • 📁 components/
            • 📁 filter-select/
              • 📄 filter-select.tsx +22 -8
            • 📄 index.test.tsx +31 -6
            • 📄 index.tsx +21 -32
          • 📄 perps-layout.test.tsx +9 -0
          • 📄 perps-market-detail-page.test.tsx +10 -1

📜 @MetaMask/policy-reviewers (4 files, +20 -0)
  • 📁 lavamoat/
    • 📁 webpack/
      • 📁 mv3/
        • 📁 beta/
          • 📄 policy.json +5 -0
        • 📁 experimental/
          • 📄 policy.json +5 -0
        • 📁 flask/
          • 📄 policy.json +5 -0
        • 📁 main/
          • 📄 policy.json +5 -0

Tip

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


🧪 @MetaMask/qa (1 files, +1 -1)
  • 📁 test/
    • 📁 e2e/
      • 📁 page-objects/
        • 📁 pages/
          • 📁 perps/
            • 📄 perps-market-list-page.ts +1 -1

@abretonc7s

abretonc7s commented Jun 9, 2026

Copy link
Copy Markdown
Contributor Author
Run Duration Model Nudges Grade Cost
49b8906f ? gpt-5.5 / codex 0 ungraded $unknown
Worker report

TAT-3307 Report

Ticket: TAT-3307

Summary

Updated MetaMask Extension to @metamask/perps-controller@^8.0.0 and aligned Perps market-category handling with the v8 singular category contract. The extension now accepts canonical stock / commodity filters while preserving legacy deeplink aliases for stocks / commodities.

Changes

  • package.json, yarn.lock: upgraded @metamask/perps-controller to 8.0.0.
  • shared/constants/perps.ts: added v8 market filters and legacy filter normalization.
  • shared/lib/deep-links/routes/perps.ts, shared/lib/deep-links/routes/perps-asset.ts: canonicalized Perps deeplink filter values and updated docs.
  • ui/pages/perps/market-list/*: updated market filtering to use getMarketTypeFilter and singular dropdown option IDs.
  • ui/components/app/perps/constants.ts, ui/components/app/perps/mocks.ts, ui/components/app/perps/utils.ts: aligned HIP-3 categories and mock data with v8 market types.
  • test/mocks/metamask-perps-controller.js, ui/__mocks__/perps/perps-controller/*: updated Perps controller test/mock surfaces for v8 category helpers.
  • lavamoat/**/policy.json, attribution.txt: regenerated dependency security policy and attributions.

Test Plan

  • yarn lint:changed && yarn verify-locales --quiet && yarn circular-deps:check
  • yarn jest shared/lib/deep-links/routes/perps.test.ts ui/pages/perps/market-list/index.test.tsx ui/pages/perps/perps-market-detail-page.test.tsx ui/__mocks__/perps/perps-controller/index.test.ts --no-coverage
  • node temp/recipe/runtime/coverage-analyze.js
  • ../metamask-recipe-runner/bin/metamask-recipe run temp/tasks/feat/tat-3307-0609-103547/artifacts/recipe.json --adapter extension --artifacts-dir temp/tasks/feat/tat-3307-0609-103547/artifacts/recipe-run --project-root /Users/deeeed/dev/metamask/metamask-extension-2 --json --cdp-port 7666 --launch-existing-dist

Evidence Fit

AC Proof mode Primary evidence Notes
AC1: extension uses latest Perps controller state artifacts/perps-controller-upgrade-proof.json, artifacts/recipe-run/trace.json Asserts package range ^8.0.0, installed version 8.0.0, and lockfile resolution.
AC2: extension uses v8 singular market categories state artifacts/perps-controller-upgrade-proof.json, Jest suites Asserts getMarketTypeFilter, stock/commodity, and v8 category list; UI/deeplink tests cover canonical and legacy filter behavior.

Screenshots and video were intentionally omitted because the acceptance proof is dependency/state contract validation, not visible UI layout.

Evidence Artifacts

  • artifacts/recipe.json
  • artifacts/recipe-run/summary.json
  • artifacts/recipe-run/trace.json
  • artifacts/recipe-run/artifact-manifest.json
  • artifacts/perps-controller-upgrade-proof.json
  • artifacts/recipe-quality.json

Self-Review Fixes

  • ui/__mocks__/perps/perps-controller/index.ts:1095 — added the missing optional isHip3 field to the mock PerpsMarketData shape so v8 helper types compile.
  • attribution.txt:3288 — removed trailing whitespace introduced by regenerated attribution content.
  • lavamoat/build-system/policy.json:6908 — reverted unrelated local Darwin optional resolver binding churn back to the Linux binding from main.
  • ui/pages/perps/market-list/components/filter-select/filter-select.tsx:35 — added labeled dropdown options for accepted v8 pre-ipo, index, and etf filters, with market-list query-param regression coverage.
  • ui/pages/perps/market-list/index.test.tsx:241 — replaced the unsupported it.each call with typed tuple-backed Jest tests so yarn lint:tsc passes.
  • ui/components/app/perps/constants.ts:114 — removed newly orphaned local HIP-3 category type/map/helper after market filtering moved to getMarketTypeFilter.
  • artifacts/recipe-coverage.md:1 — added the state-only recipe coverage matrix and normalized task evidence/checklist metadata so the manifest gate no longer misclassifies checklist boilerplate as visual proof requirements.

@abretonc7s abretonc7s changed the title chore: prepare farmslot publication pkg-49b8906f-mq66im7h feat(perps): update perps controller to latest on extension Jun 9, 2026
@abretonc7s abretonc7s marked this pull request as ready for review June 9, 2026 07:53
@abretonc7s abretonc7s requested review from a team as code owners June 9, 2026 07:53
@socket-security

socket-security Bot commented Jun 9, 2026

Copy link
Copy Markdown

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

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​metamask/​perps-controller@​6.3.0 ⏵ 8.0.080 +1310083 +197 +1100

View full report

@metamaskbotv2

metamaskbotv2 Bot commented Jun 9, 2026

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

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 27191960476 | 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: -55%
  • loadNewAccount/total: -55%
  • bridgeUserActions/bridge_load_page: -72%
  • bridgeUserActions/bridge_load_asset_picker: -55%
  • bridgeUserActions/bridge_search_token: -31%
  • bridgeUserActions/total: -43%
  • loadNewAccount/load_new_account: -52%
  • loadNewAccount/total: -52%
  • bridgeUserActions/bridge_load_page: +42%
  • bridgeUserActions/bridge_load_asset_picker: -35%
  • bridgeUserActions/bridge_search_token: -32%
  • bridgeUserActions/total: -18%

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

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

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -21%
  • startupStandardHome/load: -24%
  • startupStandardHome/domContentLoaded: -24%
  • startupStandardHome/domInteractive: -38%
  • startupStandardHome/firstPaint: -12%
  • startupStandardHome/backgroundConnect: -18%
  • startupStandardHome/loadScripts: -24%
  • startupStandardHome/setupStore: -14%
  • startupStandardHome/numNetworkReqs: -67%
  • startupPowerUserHome/uiStartup: -35%
  • startupPowerUserHome/load: -18%
  • startupPowerUserHome/domContentLoaded: -19%
  • startupPowerUserHome/domInteractive: -40%
  • startupPowerUserHome/firstPaint: -31%
  • startupPowerUserHome/backgroundConnect: -64%
  • startupPowerUserHome/firstReactRender: +25%
  • startupPowerUserHome/loadScripts: -19%
  • startupPowerUserHome/setupStore: +32%
  • startupPowerUserHome/numNetworkReqs: -73%
  • startupStandardHome/uiStartup: +14%
  • startupStandardHome/load: +14%
  • startupStandardHome/domContentLoaded: +14%
  • startupStandardHome/domInteractive: -44%
  • startupStandardHome/backgroundConnect: +29%
  • startupStandardHome/firstReactRender: +50%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/loadScripts: +13%
  • startupStandardHome/setupStore: -47%
  • startupStandardHome/numNetworkReqs: -39%
  • startupPowerUserHome/uiStartup: -27%
  • startupPowerUserHome/domInteractive: -59%
  • startupPowerUserHome/backgroundConnect: -78%
  • startupPowerUserHome/firstReactRender: +41%
  • startupPowerUserHome/setupStore: -36%
  • startupPowerUserHome/numNetworkReqs: -78%

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

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

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/importWalletToSocialScreen: +10%
  • onboardingImportWallet/srpButtonToSrpForm: -65%
  • onboardingImportWallet/confirmSrpToPwForm: -10%
  • onboardingImportWallet/pwFormToMetricsScreen: +537%
  • onboardingImportWallet/metricsToWalletReadyScreen: -34%
  • onboardingImportWallet/doneButtonToHomeScreen: -63%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -23%
  • onboardingImportWallet/total: -45%
  • onboardingNewWallet/createWalletToSocialScreen: +11%
  • onboardingNewWallet/srpButtonToPwForm: -76%
  • onboardingNewWallet/createPwToRecoveryScreen: +1056%
  • onboardingNewWallet/skipBackupToMetricsScreen: -65%
  • assetDetails/assetClickToPriceChart: -55%
  • assetDetails/total: -55%
  • solanaAssetDetails/assetClickToPriceChart: -84%
  • solanaAssetDetails/total: -84%
  • importSrpHome/loginToHomeScreen: -24%
  • importSrpHome/openAccountMenuAfterLogin: -78%
  • importSrpHome/homeAfterImportWithNewWallet: -81%
  • importSrpHome/total: -73%

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

  • 🟡 assetDetails/FCP: p75 1.8s
  • 🟡 importSrpHome/INP: p75 240ms
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.8s
  • 🟡 sendTransactions/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: +17%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: -515 Bytes (0%)
  • common: 5.02 KiB (0.04%)

@abretonc7s

Copy link
Copy Markdown
Contributor Author

farmslot run summary

Run Duration Model Nudges Grade Cost
c2e8fdf1 ? gpt-5.5 0 ungraded (-) $unknown

Changed files:

  • shared/lib/deep-links/routes/perps.ts
  • ui/pages/perps/market-list/index.tsx
Worker report
# Author File Triage Action
1 github-actions[bot] conversation OUT_OF_SCOPE CLA status only; no code change requested.
2 mm-token-exchange-service[bot] conversation OUT_OF_SCOPE CODEOWNER routing notice; no code change requested.
3 abretonc7s conversation OUT_OF_SCOPE Worker report/context; no review change requested.
4 socket-security[bot] conversation OUT_OF_SCOPE Dependency scan advisory for intended Perps controller update; no code change requested.
5 metamaskbotv2[bot] conversation OUT_OF_SCOPE Build artifact and benchmark report; no code change requested.

No live inline review comments or requested-changes reviews were returned for PR #43356.

GitHub replies: none sent — live fetch returned no inline review comments or requested-changes review threads to reply to or resolve.

Summary:

  • Total comments: 5
  • REAL: 0
  • FALSE POSITIVE: 0
  • OUT OF SCOPE: 5

Comment thread ui/pages/perps/market-list/index.tsx Outdated
Comment thread ui/__mocks__/perps/perps-controller/index.ts
Comment thread shared/constants/perps.ts
Comment thread shared/constants/perps.ts Outdated
Comment thread shared/lib/deep-links/routes/perps.ts
Comment thread ui/pages/perps/market-list/components/filter-select/filter-select.tsx Outdated
Comment thread ui/pages/perps/market-list/index.tsx Outdated
Comment thread ui/pages/perps/market-list/index.tsx
@abretonc7s

Copy link
Copy Markdown
Contributor Author
Run Duration Model Nudges Grade Cost
61328c21 ? opus (claude) 0 ungraded $unknown
Worker report

PR #43356 — Review Comments Report

PR: feat(perps): update perps controller to latest on extension
Branch: TAT-3307-feat-update-perps-controller

Context

Updates Extension to @metamask/perps-controller@^8.0.0. The v8 package now exports the canonical MARKET_CATEGORIES constant (["crypto","stock","pre-ipo","index","etf","commodity","forex"]), the MarketTypeFilter type, and the getMarketTypeFilter helper. Reviewers asked the UI filter logic to be driven by that controller contract rather than hardcoded lists/switch cases, and questioned client-side normalization.

Triage

# Author File:Line Triage Action
1 aganglada shared/constants/perps.ts:56 FALSE POSITIVE normalizeMarketFilter + legacy aliases needed: PR explicitly keeps legacy deeplink aliases (stocksstock, commoditiescommodity) working for externally-crafted URLs. Justified in reply.
2 aganglada shared/constants/perps.ts:33 REAL VALID_MARKET_FILTERS now derived from the controller's MARKET_CATEGORIES instead of a hardcoded category list — categories come from core.
3 aganglada shared/lib/deep-links/routes/perps.ts:68 FALSE POSITIVE Normalization maps legacy alias query params (tab=stocks) to canonical filters before navigating; needed for backward-compat deeplinks. Justified in reply.
4 aganglada ui/pages/perps/market-list/components/filter-select/filter-select.tsx:38 REAL Options array built dynamically from MARKET_CATEGORIES; a new controller category auto-appears (only an i18n label key is needed).
5 michalconsensys ui/pages/perps/market-list/index.tsx:121 REAL filterByType switch collapsed: category filters matched generically via getMarketTypeFilter(m) === filter; new categories work with no code change.
6 aganglada ui/pages/perps/market-list/index.tsx:121 REAL Same fix as #5 — generic, category-driven filtering.
7 michalconsensys ui/mocks/perps/perps-controller/index.ts:787 FALSE POSITIVE This is the self-contained manual mock module standing in for the package; it must declare the contract itself. (Unused/legacy; not wired into build or jest — build uses the real package, jest uses test/mocks/metamask-perps-controller.js.)
8 aganglada ui/pages/perps/market-list/index.tsx:148 REAL (partial) Removed redundant VALID_MARKET_FILTERS.includes() re-validation (normalizeMarketFilter already returns only valid filters or null). Normalization kept for directly-typed legacy URLs; justified in reply.

Bot/conversation comments (CLA, codeowners, socket-security, metamaskbot builds, farmslot run summaries) are informational/automated — no action.

Validation

  • yarn lint:changed — PASS (3 changed files)
  • yarn verify-locales --quiet — PASS ("No invalid entries!")
  • yarn circular-deps:check — PASS
  • Unit tests: market-list/index.test.tsx + deep-links/routes/perps.test.ts — 42 passed
  • Coverage: VERDICT FAIL only on app/scripts/.../transaction-controller-init.ts (new 60%) — a file pulled in by the step-3 merge of origin/main (PR refactor: remove legacy transaction controller constructor options #43192), NOT part of this PR's review fixes. All files changed by these fixes are ≥80%.

Summary

  • Total comments triaged: 8 inline review comments (5 REAL, 3 FALSE POSITIVE, 0 OUT OF SCOPE)
  • Commit SHA for fixes: c92b738dea
  • Files changed:
    • shared/constants/perps.ts
    • ui/pages/perps/market-list/components/filter-select/filter-select.tsx
    • ui/pages/perps/market-list/index.tsx
  • All 8 review threads replied to and resolved.

Recipe re-validation

PASS — inherited recipe TAT-3307 Perps controller v8 upgrade proof passed against the post-merge branch.

Merge-main status

Clean — merged origin/main, no conflicts.

@abretonc7s

Copy link
Copy Markdown
Contributor Author
Run Duration Model Nudges Grade Cost
6e981d41 ? opus / claude 0 ungraded $unknown
Worker report

PR #43356 — Review Comments Report

PR: feat(perps): update perps controller to latest on extension
Branch: TAT-3307-feat-update-perps-controller

State on entry

All 8 inline review comments were already addressed in code (commit c92b738dea), replied to, and thread-resolved by the parent run (61328c21, opus). Verified live via GitHub API:

  • 8/8 threads isResolved: true
  • 8/8 have author replies dated 2026-06-09 10:32–10:33 UTC
  • Current HEAD reflects every fix

No conversation comment was actionable. No CHANGES_REQUESTED reviews exist.

This run added no new comment-driven code changes. It committed one outstanding CI-greenness fix.

Comment triage

# Author File:Line Triage Action
1 aganglada shared/constants/perps.ts:56 FALSE POSITIVE Legacy aliases retained intentionally; replied + resolved.
2 aganglada shared/constants/perps.ts REAL VALID_MARKET_FILTERS derives from MARKET_CATEGORIES; resolved.
3 aganglada shared/lib/deep-links/routes/perps.ts:68 FALSE POSITIVE Legacy deeplink tab normalization confirmed; resolved.
4 aganglada ui/pages/perps/market-list/components/filter-select/filter-select.tsx REAL Options built from ['all', ...MARKET_CATEGORIES]; resolved.
5 michalconsensys ui/pages/perps/market-list/index.tsx REAL Per-category switch collapsed to generic default; resolved.
6 aganglada ui/pages/perps/market-list/index.tsx REAL Valid set driven by controller categories; resolved.
7 michalconsensys ui/__mocks__/perps/perps-controller/index.ts:787 FALSE POSITIVE Manual mock contract kept self-contained; resolved.
8 aganglada ui/pages/perps/market-list/index.tsx:145 REAL Removed redundant valid-filter re-check; resolved.

This run's actual change

ui/pages/perps/perps-layout.test.tsx — added MARKET_CATEGORIES to the Jest mock of @metamask/perps-controller.

This fixes import-time test failure from spreading ...MARKET_CATEGORIES in shared/constants/perps.ts. Mock values match the real package:
["crypto","stock","pre-ipo","index","etf","commodity","forex"].

Commit: b92d63e91b

Validation results

  • CI parity gate (lint:changed + verify-locales + circular-deps:check): PASS
  • Affected unit tests: PASS
  • Coverage: PASS
  • Recipe re-validation (recipe.json, perps-controller v8 upgrade proof): PASS
  • Merge-main status: clean

Summary

  • Total comments: 8 — 5 REAL, 3 FALSE POSITIVE, 0 OUT OF SCOPE
  • All addressed + resolved by parent run 61328c21 in commit c92b738dea
  • This run changed: ui/pages/perps/perps-layout.test.tsx
  • Recipe re-validation: PASS
  • Merge-main: clean

@metamaskbotv2

metamaskbotv2 Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor
Builds ready [b92d63e] [reused from c92b738]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 16 pass · 🟡 9 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 27202438440 | 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: -57%
  • loadNewAccount/total: -57%
  • bridgeUserActions/bridge_load_page: -68%
  • bridgeUserActions/bridge_load_asset_picker: -55%
  • bridgeUserActions/bridge_search_token: -31%
  • bridgeUserActions/total: -43%
  • loadNewAccount/load_new_account: -51%
  • loadNewAccount/total: -51%
  • bridgeUserActions/bridge_load_asset_picker: -44%
  • bridgeUserActions/bridge_search_token: -35%
  • bridgeUserActions/total: -30%
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -22%
  • startupStandardHome/load: -26%
  • startupStandardHome/domContentLoaded: -25%
  • startupStandardHome/domInteractive: -38%
  • startupStandardHome/firstPaint: -17%
  • startupStandardHome/backgroundConnect: -20%
  • startupStandardHome/loadScripts: -25%
  • startupStandardHome/setupStore: -14%
  • startupStandardHome/numNetworkReqs: -67%
  • startupPowerUserHome/uiStartup: -32%
  • startupPowerUserHome/load: -14%
  • startupPowerUserHome/domContentLoaded: -13%
  • startupPowerUserHome/domInteractive: -37%
  • startupPowerUserHome/firstPaint: -22%
  • startupPowerUserHome/backgroundConnect: -62%
  • startupPowerUserHome/firstReactRender: +25%
  • startupPowerUserHome/loadScripts: -13%
  • startupPowerUserHome/setupStore: +24%
  • startupPowerUserHome/numNetworkReqs: -72%
  • startupStandardHome/uiStartup: +12%
  • startupStandardHome/load: +12%
  • startupStandardHome/domContentLoaded: +12%
  • startupStandardHome/domInteractive: -50%
  • startupStandardHome/backgroundConnect: +21%
  • startupStandardHome/firstReactRender: +50%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/loadScripts: +12%
  • startupStandardHome/setupStore: -51%
  • startupStandardHome/numNetworkReqs: -37%
  • startupPowerUserHome/uiStartup: -19%
  • startupPowerUserHome/load: +14%
  • startupPowerUserHome/domContentLoaded: +14%
  • startupPowerUserHome/domInteractive: -50%
  • startupPowerUserHome/backgroundConnect: -70%
  • startupPowerUserHome/firstReactRender: +50%
  • startupPowerUserHome/loadScripts: +14%
  • startupPowerUserHome/setupStore: -35%
  • startupPowerUserHome/numNetworkReqs: -77%

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

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

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -58%
  • onboardingImportWallet/confirmSrpToPwForm: +10%
  • onboardingImportWallet/pwFormToMetricsScreen: +547%
  • onboardingImportWallet/metricsToWalletReadyScreen: -41%
  • onboardingImportWallet/doneButtonToHomeScreen: -50%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -23%
  • onboardingImportWallet/total: -44%
  • onboardingNewWallet/srpButtonToPwForm: -78%
  • onboardingNewWallet/createPwToRecoveryScreen: +986%
  • onboardingNewWallet/skipBackupToMetricsScreen: -67%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: -23%
  • assetDetails/assetClickToPriceChart: -26%
  • assetDetails/total: -26%
  • solanaAssetDetails/assetClickToPriceChart: -71%
  • solanaAssetDetails/total: -71%
  • importSrpHome/loginToHomeScreen: -22%
  • importSrpHome/openAccountMenuAfterLogin: -76%
  • importSrpHome/homeAfterImportWithNewWallet: -81%
  • importSrpHome/total: -73%

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

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

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +20%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: -1.33 KiB (-0.01%)
  • common: 5.05 KiB (0.04%)

The perps-market-detail-page test mock was missing MARKET_CATEGORIES,
causing TypeError. Integration tests lacked the moduleNameMapper for
@metamask/perps-controller, failing on ESM parse of @noble/hashes.
@abretonc7s abretonc7s requested a review from a team as a code owner June 9, 2026 12:07
@metamaskbotv2

metamaskbotv2 Bot commented Jun 9, 2026

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

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 27205034728 | 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: -58%
  • loadNewAccount/total: -58%
  • bridgeUserActions/bridge_load_page: -73%
  • bridgeUserActions/bridge_load_asset_picker: -56%
  • bridgeUserActions/bridge_search_token: -32%
  • bridgeUserActions/total: -44%
  • loadNewAccount/load_new_account: -48%
  • loadNewAccount/total: -48%
  • bridgeUserActions/bridge_load_page: -21%
  • bridgeUserActions/bridge_load_asset_picker: -42%
  • bridgeUserActions/bridge_search_token: -24%
  • bridgeUserActions/total: -30%
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -22%
  • startupStandardHome/load: -24%
  • startupStandardHome/domContentLoaded: -24%
  • startupStandardHome/domInteractive: -41%
  • startupStandardHome/backgroundConnect: -13%
  • startupStandardHome/loadScripts: -23%
  • startupStandardHome/setupStore: -14%
  • startupStandardHome/numNetworkReqs: -67%
  • startupPowerUserHome/uiStartup: -31%
  • startupPowerUserHome/load: -11%
  • startupPowerUserHome/domContentLoaded: -11%
  • startupPowerUserHome/domInteractive: -40%
  • startupPowerUserHome/firstPaint: -21%
  • startupPowerUserHome/backgroundConnect: -60%
  • startupPowerUserHome/firstReactRender: +29%
  • startupPowerUserHome/loadScripts: -10%
  • startupPowerUserHome/setupStore: +24%
  • startupPowerUserHome/numNetworkReqs: -73%
  • startupStandardHome/domInteractive: -52%
  • startupStandardHome/backgroundConnect: +19%
  • startupStandardHome/firstReactRender: +33%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/setupStore: -51%
  • startupStandardHome/numNetworkReqs: -37%
  • startupPowerUserHome/uiStartup: -30%
  • startupPowerUserHome/domInteractive: -68%
  • startupPowerUserHome/backgroundConnect: -70%
  • startupPowerUserHome/firstReactRender: +33%
  • startupPowerUserHome/setupStore: -45%
  • startupPowerUserHome/numNetworkReqs: -74%

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

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

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -64%
  • onboardingImportWallet/pwFormToMetricsScreen: +570%
  • onboardingImportWallet/metricsToWalletReadyScreen: -27%
  • onboardingImportWallet/doneButtonToHomeScreen: -30%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -99%
  • onboardingImportWallet/total: -47%
  • onboardingNewWallet/srpButtonToPwForm: -77%
  • onboardingNewWallet/createPwToRecoveryScreen: +1035%
  • onboardingNewWallet/skipBackupToMetricsScreen: -67%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +17%
  • assetDetails/assetClickToPriceChart: -19%
  • assetDetails/total: -19%
  • solanaAssetDetails/assetClickToPriceChart: -75%
  • solanaAssetDetails/total: -75%
  • importSrpHome/loginToHomeScreen: -41%
  • importSrpHome/openAccountMenuAfterLogin: -77%
  • importSrpHome/homeAfterImportWithNewWallet: -76%
  • importSrpHome/total: -70%

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

  • 🟡 sendTransactions/FCP: p75 2.1s
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/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: +27%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: -1.33 KiB (-0.01%)
  • common: 5.05 KiB (0.04%)

@abretonc7s abretonc7s enabled auto-merge June 9, 2026 13:50

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

Please, make sure the unit tests that could be component view test, such ui/pages/perps/market-list/index.test.tsx are "converted" into CV test. Obviously the test coverage target should the the same and if there is something not possible under cv test framework, then relay on simple, more focus unit test

FYI, there is a cv test skill you can leverage and just focus on detailing the expected coverage to the AI

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

Extension changes (jest config change) look good

Comment on lines +12 to +18
moduleNameMapper: {
// Stub @metamask/perps-controller so integration suites can resolve it
// without transforming its ESM-only transitive deps (@nktkas/hyperliquid →
// @noble/hashes). Mirrors the unit jest config mapping.
'^@metamask/perps-controller$':
'<rootDir>/test/mocks/metamask-perps-controller.js',
},

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.

Just a heads-up that this will soon become unnecessary, as core and extension jest have plans to migrate to ESM-only.

Comment thread attribution.txt

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.

Attributions can be updated in RC branches. Removing this huge diff can be useful for reducing pr size and focusing reviewer effort.

@abretonc7s abretonc7s added this pull request to the merge queue Jun 9, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jun 9, 2026
@aganglada aganglada added this pull request to the merge queue Jun 9, 2026
@HowardBraham HowardBraham added the retry-ci Tells GitHub Actions to retry failed jobs, label removed automatically before the retry label Jun 9, 2026
@github-actions github-actions Bot removed the retry-ci Tells GitHub Actions to retry failed jobs, label removed automatically before the retry label Jun 9, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jun 9, 2026
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.

7 participants