Skip to content

feat: replace Activity list in asset page#40542

Merged
n3ps merged 26 commits intomainfrom
n3ps/asset-page-activity-list
Mar 4, 2026
Merged

feat: replace Activity list in asset page#40542
n3ps merged 26 commits intomainfrom
n3ps/asset-page-activity-list

Conversation

@n3ps
Copy link
Contributor

@n3ps n3ps commented Mar 2, 2026

Description

Reuse the new ActivityList (v2) component on the token/asset detail page, replacing the old UnifiedTransactionList. The ActivityList now accepts an optional filter (tokenAddress, chainId)

  • Server-side chain filter for EVM transactions
  • Client-side token filtering for API, local, and non-EVM transactions
  • Remove dead unified transaction-list component and its associated SCSS and orphaned selectors and constants

Open in GitHub Codespaces

Changelog

CHANGELOG entry: feat: replace activity list in asset page

Related issues

Fixes:

Manual testing steps

  1. Go to this a token page associated with a wallet transaction
  2. Scroll to Activity

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
Changes the asset detail activity feed to a new, filterable ActivityList and removes the legacy transaction list implementation, which could affect which transactions appear (or pagination/virtualization behavior) on asset pages.

Overview
Replaces the asset detail page’s activity section with the multichain ActivityList (v2), passing a per-asset filter (CAIP chainId + native/token scope) instead of rendering the old UnifiedTransactionList.

Updates ActivityList to accept an optional filter, applying chain/asset filtering across API EVM results, local pending groups, and non‑EVM transactions; the API query hook now supports server-side EVM chain narrowing and disables querying when no EVM networks apply. Virtualization is adjusted to account for scroll margin.

Removes the legacy transaction-list and unified-transaction-list components (and related SCSS, tests, snapshots, and the viewMore i18n string), plus deletes an unused multichain transactions selector and a dead TransactionKind constant. Adds/updates unit tests and snapshots for the new filtering and query behavior.

Written by Cursor Bugbot for commit 4c52ee4. This will update automatically on new commits. Configure here.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 2, 2026

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-core-extension-ux Core Extension UX team label Mar 2, 2026
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 2, 2026

✨ Files requiring CODEOWNER review ✨

🔑 @MetaMask/accounts-engineers (1 files, +6 -17)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 account-overview/
          • 📄 account-overview-tabs.test.tsx +6 -17

👨‍🔧 @MetaMask/core-extension-ux (8 files, +6 -2886)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 transaction-list/
          • 📁 __snapshots__/
            • 📄 transaction-list.test.js.snap +0 -333
            • 📄 index.js +0 -1
            • 📄 index.scss +0 -42
            • 📄 transaction-list.component.js +0 -875
            • 📄 transaction-list.stories.js +0 -21
            • 📄 transaction-list.test.js +0 -472
            • 📄 unified-transaction-list.component.js +0 -1125
      • 📁 multichain/
        • 📁 account-overview/
          • 📄 account-overview-tabs.test.tsx +6 -17


// Token-specific filtering (for asset page)
const { tokenAddress } = filter ?? {};
if (tokenAddress) {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

  1. New optional filtering

@n3ps n3ps changed the title feat: re-use new activity list in asset page feat: reuse new activity list in asset page Mar 2, 2026
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 2, 2026

Builds ready [5d4aa87]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account30228132016319320
total30228132016319320
Confirm Txconfirm_tx6109608361492661156149
total6109608361492661156149
Bridge User Actionsbridge_load_page2422342476247247
bridge_load_asset_picker25520534249270342
bridge_search_token72870374815737748
total1230111513238113051323
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14231229184711014661613
load1192100515499512281379
domContentLoaded118499715439512221359
domInteractive2816114202583
firstPaint164661145126214328
backgroundConnect21419138723218247
firstReactRender2113169162133
initialActions107124
loadScripts98880213459210221161
setupStore1474981630
numNetworkReqs312294192282
Power User HomeuiStartup17601318424247317122359
load1105949182716210981538
domContentLoaded1088939181916010851493
domInteractive3518201263490
firstPaint222701474195242328
backgroundConnect3502382401285310650
firstReactRender22154862337
initialActions104112
loadScripts89174816071548791265
setupStore1474571523
numNetworkReqs62371742965151
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2202192232219223
srpButtonToSrpForm9693102496102
confirmSrpToPwForm21212202122
pwFormToMetricsScreen15151501515
metricsToWalletReadyScreen16151811818
doneButtonToHomeScreen1158800138220412851382
openAccountMenuToAccountListLoaded7099703272168372167216
total87128500892315887858923
Onboarding New WalletcreateWalletToSocialScreen2192172212220221
srpButtonToPwForm1071021103109110
createPwToRecoveryScreen889089
skipBackupToMetricsScreen36353713737
agreeButtonToOnboardingSuccess16151701617
doneButtonToAssetList869475124429211311244
total1264861162929415211629
Asset DetailsassetClickToPriceChart38373913939
total38373913939
Solana Asset DetailsassetClickToPriceChart27262812728
total27262812728
Import Srp HomeloginToHomeScreen20611943220010321532200
openAccountMenuAfterLogin45454604646
homeAfterImportWithNewWallet2447240825144825142514
total4592449947429646074742
Send TransactionsopenSendPageFromHome17161911819
selectTokenToSendFormLoaded21192322223
reviewTransactionToConfirmationPage8578538623859862
total8998989001900900
SwapopenSwapPageFromHome12210215420128154
fetchAndDisplaySwapQuotes56554600640380262676403
total57774702655781163806557
🌐 Dapp Page Load Benchmarks

Current Commit: 5d4aa87 | Date: 3/2/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±42ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 738ms (±39ms) 🟢 | historical mean value: 726ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 81ms (±11ms) 🟢 | historical mean value: 82ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 42ms 1.02s 1.36s 1.09s 1.36s
domContentLoaded 738ms 39ms 711ms 1.03s 776ms 1.03s
firstPaint 81ms 11ms 64ms 180ms 92ms 180ms
firstContentfulPaint 81ms 11ms 64ms 180ms 92ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: 58 Bytes (0%)
  • ui: -18.54 KiB (-0.22%)
  • common: -15 Bytes (0%)

The ActivityList component uses @tanstack/react-query's useInfiniteQuery
which behaves differently in CI vs local environments. In CI, nock's
disableNetConnect() immediately rejects the API request, causing the
query to resolve to error state (isInitialLoading=false), rendering the
empty state. Locally, the query may stay in loading state during
snapshot capture.

Mocking ActivityList makes the snapshot deterministic since asset-page
tests are for AssetPage, not ActivityList internals.

Co-authored-by: Francis Nepomuceno <n3ps@users.noreply.github.com>
@cursor cursor bot temporarily deployed to pr-comment March 2, 2026 21:44 Inactive
@cursor cursor bot temporarily deployed to pr-comment March 2, 2026 22:14 Inactive
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 2, 2026

Builds ready [5771551]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account30127032826325328
total30127032826325328
Confirm Txconfirm_tx6104609361231161016123
total6104609361231161016123
Bridge User Actionsbridge_load_page27224830221282302
bridge_load_asset_picker22318029642241296
bridge_search_token7267237292729729
total1217119312411712181241
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14131177195612214481615
load1190999169710712271383
domContentLoaded1183994165810312211365
domInteractive2815129192475
firstPaint1547049384212280
backgroundConnect21218725913215240
firstReactRender20135862131
initialActions107123
loadScripts987806145410110261164
setupStore156151151625
numNetworkReqs312293202284
Power User HomeuiStartup3236148710987211336569307
load12971101182714913351673
domContentLoaded12801088173114113151630
domInteractive43212153339120
firstPaint224901734176283356
backgroundConnect11512618336154710424383
firstReactRender25165872738
initialActions106113
loadScripts1057877149613510901375
setupStore1564571729
numNetworkReqs81341452395118
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2192192200219220
srpButtonToSrpForm95949619596
confirmSrpToPwForm22212312323
pwFormToMetricsScreen17151911819
metricsToWalletReadyScreen16151701617
doneButtonToHomeScreen1287126813151812911315
openAccountMenuToAccountListLoaded723272297235272357235
total8914889589281489288928
Onboarding New WalletcreateWalletToSocialScreen2192172212221221
srpButtonToPwForm1111111110111111
createPwToRecoveryScreen999099
skipBackupToMetricsScreen36363703737
agreeButtonToOnboardingSuccess17171701717
doneButtonToAssetList903563118522711001185
total1301952157722414941577
Asset DetailsassetClickToPriceChart40354544445
total40354544445
Solana Asset DetailsassetClickToPriceChart28272912929
total28272912929
Import Srp HomeloginToHomeScreen19861898216710320312167
openAccountMenuAfterLogin40394214042
homeAfterImportWithNewWallet25942429289316826592893
total44994369462410445754624
Send TransactionsopenSendPageFromHome16131921819
selectTokenToSendFormLoaded20192002020
reviewTransactionToConfirmationPage8538498594852859
total90188492013908920
SwapopenSwapPageFromHome106991145107114
fetchAndDisplaySwapQuotes4671456047427747304742
total4783466348798248374879
🌐 Dapp Page Load Benchmarks

Current Commit: 5771551 | Date: 3/2/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±42ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 736ms (±39ms) 🟢 | historical mean value: 725ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 81ms (±11ms) 🟢 | historical mean value: 82ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 42ms 1.02s 1.35s 1.07s 1.35s
domContentLoaded 736ms 39ms 715ms 1.03s 754ms 1.03s
firstPaint 81ms 11ms 64ms 172ms 92ms 172ms
firstContentfulPaint 81ms 11ms 64ms 172ms 92ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: -36 Bytes (0%)
  • ui: -8.52 KiB (-0.1%)
  • common: -10.26 KiB (-0.09%)

Co-authored-by: Francis Nepomuceno <n3ps@users.noreply.github.com>
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 4, 2026

Builds ready [699f96b]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account28826932120289321
total28826932120289321
Confirm Txconfirm_tx6071602461103560986110
total6071602461103560986110
Bridge User Actionsbridge_load_page24823126813253268
bridge_load_asset_picker26717633959322339
bridge_search_token77673083851837838
total1291115614088713301408
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14111199173110214651614
load118899914359412381358
domContentLoaded118096614319312301346
domInteractive2817137202478
firstPaint1496737374207269
backgroundConnect20919128717211249
firstReactRender19124352029
initialActions108113
loadScripts99077612299310421158
setupStore1273141521
numNetworkReqs312288192283
Power User HomeuiStartup199513839155106519682385
load11991034178016012361617
domContentLoaded11821027177015712241608
domInteractive3820182313497
firstPaint190741219142251318
backgroundConnect4772546780912332488
firstReactRender25165172939
initialActions106114
loadScripts969826155514910071365
setupStore18878102033
numNetworkReqs71361662680131
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2182172191219219
srpButtonToSrpForm101921129112112
confirmSrpToPwForm22222202222
pwFormToMetricsScreen16151711717
metricsToWalletReadyScreen17151811818
doneButtonToHomeScreen63359168038661680
openAccountMenuToAccountListLoaded2919290129411729312941
total3929387039623339543962
Onboarding New WalletcreateWalletToSocialScreen2212202231221223
srpButtonToPwForm1221121369129136
createPwToRecoveryScreen10101001010
skipBackupToMetricsScreen37363813838
agreeButtonToOnboardingSuccess19181901919
doneButtonToAssetList686510993177713993
total1103913139417011311394
Asset DetailsassetClickToPriceChart12810914515143145
total12810914515143145
Solana Asset DetailsassetClickToPriceChart14712616413154164
total14712616413154164
Import Srp HomeloginToHomeScreen2097205121413521182141
openAccountMenuAfterLogin72481102377110
homeAfterImportWithNewWallet28812632318621330753186
total51394798580638153255806
Send TransactionsopenSendPageFromHome24212822528
selectTokenToSendFormLoaded21182422224
reviewTransactionToConfirmationPage8728708752875875
total9199119276920927
SwapopenSwapPageFromHome1151091245114124
fetchAndDisplaySwapQuotes290028962906429062906
total3053302031003430713100
🌐 Dapp Page Load Benchmarks

Current Commit: 699f96b | Date: 3/4/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±44ms) 🟡 | historical mean value: 1.06s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 737ms (±40ms) 🟢 | historical mean value: 746ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±11ms) 🟢 | historical mean value: 82ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 44ms 1.03s 1.36s 1.06s 1.36s
domContentLoaded 737ms 40ms 716ms 1.02s 749ms 1.02s
firstPaint 80ms 11ms 68ms 176ms 88ms 176ms
firstContentfulPaint 80ms 11ms 68ms 176ms 88ms 176ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.45 KiB (0.03%)
  • ui: -17.31 KiB (-0.21%)
  • common: 4.38 KiB (0.04%)

@n3ps n3ps requested a review from ameliejyc March 4, 2026 16:22
Copy link

@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 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

@sonarqubecloud
Copy link

sonarqubecloud bot commented Mar 4, 2026

Quality Gate Failed Quality Gate failed

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

See analysis details on SonarQube Cloud

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 4, 2026

Builds ready [4c52ee4]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2672652681267268
total2672652681267268
Confirm Txconfirm_tx606960666073360736073
total606960666073360736073
Bridge User Actionsbridge_load_page2172112297218229
bridge_load_asset_picker2082022196211219
bridge_search_token6996937044700704
total112211151133711211133
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14861229179911115421680
load12481037147710113081435
domContentLoaded1240103014739813051409
domInteractive3018125192676
firstPaint178751276174204371
backgroundConnect22720042725233255
firstReactRender20124562133
initialActions2010224
loadScripts103484212709610881207
setupStore1373961524
numNetworkReqs312286192684
Power User HomeuiStartup17351330292321118032092
load11551017203815611571564
domContentLoaded11401009202515511451548
domInteractive36181602633103
firstPaint215761568159269315
backgroundConnect31526597875318370
firstReactRender24145182742
initialActions106113
loadScripts91879317401479201273
setupStore1473451624
numNetworkReqs58371692559132
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2192192201219220
srpButtonToSrpForm97969819898
confirmSrpToPwForm22212302323
pwFormToMetricsScreen16151601616
metricsToWalletReadyScreen16161601616
doneButtonToHomeScreen63460270943618709
openAccountMenuToAccountListLoaded291629102928729152928
total3923388639883939103988
Onboarding New WalletcreateWalletToSocialScreen2262202336232233
srpButtonToPwForm1131131130113113
createPwToRecoveryScreen999099
skipBackupToMetricsScreen35353603536
agreeButtonToOnboardingSuccess17161701717
doneButtonToAssetList53549959536529595
total9418921002409411002
Asset DetailsassetClickToPriceChart1171111318121131
total1171111318121131
Solana Asset DetailsassetClickToPriceChart13811219133163191
total13811219133163191
Import Srp HomeloginToHomeScreen21171888248321722282483
openAccountMenuAfterLogin493165136065
homeAfterImportWithNewWallet27412462307822029003078
total49074581519221850275192
Send TransactionsopenSendPageFromHome20182322023
selectTokenToSendFormLoaded19182001920
reviewTransactionToConfirmationPage8468448482847848
total8858848851885885
SwapopenSwapPageFromHome1261221303130130
fetchAndDisplaySwapQuotes289528902902428962902
total3022301230421130263042
🌐 Dapp Page Load Benchmarks

Current Commit: 4c52ee4 | Date: 3/4/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±40ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 730ms (±37ms) 🟢 | historical mean value: 742ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±14ms) 🟢 | historical mean value: 82ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 40ms 1.01s 1.34s 1.07s 1.34s
domContentLoaded 730ms 37ms 707ms 1.01s 762ms 1.01s
firstPaint 80ms 14ms 64ms 204ms 88ms 204ms
firstContentfulPaint 80ms 14ms 64ms 204ms 88ms 204ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 2.66 KiB (0.05%)
  • ui: -14.08 KiB (-0.17%)
  • common: 4.54 KiB (0.04%)

@n3ps n3ps changed the title feat: replace activity list in asset page feat: replace Activity list in asset page Mar 4, 2026
@n3ps n3ps requested a review from gantunesr March 4, 2026 18:34
@n3ps n3ps added this pull request to the merge queue Mar 4, 2026
Merged via the queue into main with commit c0eefcd Mar 4, 2026
340 of 346 checks passed
@n3ps n3ps deleted the n3ps/asset-page-activity-list branch March 4, 2026 19:34
@github-actions github-actions bot locked and limited conversation to collaborators Mar 4, 2026
@metamaskbot metamaskbot added the release-13.22.0 Issue or pull request that will be included in release 13.22.0 label Mar 4, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.22.0 Issue or pull request that will be included in release 13.22.0 size-XL team-core-extension-ux Core Extension UX team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants