Skip to content

feat: tab transitions#40611

Merged
n3ps merged 6 commits intomainfrom
n3ps/tab-transition-css
Mar 6, 2026
Merged

feat: tab transitions#40611
n3ps merged 6 commits intomainfrom
n3ps/tab-transition-css

Conversation

@n3ps
Copy link
Contributor

@n3ps n3ps commented Mar 4, 2026

Description

Adds subtle directional sliding animation to the home tabs using CSS view transitions.

Progressive enhancement and applied only to supported browsers.

Open in GitHub Codespaces

Changelog

CHANGELOG entry: feat: tab transitions

Related issues

Fixes:

Manual testing steps

  1. Switch between tabs

Screenshots/Recordings

Before

After

tabs.mov

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

Low Risk
Low risk UI-only change that adds an opt-in tab switch animation using the View Transition API, with a Firefox fallback and reduced-motion support.

Overview
Adds an opt-in animated prop to Tabs that uses the browser View Transition API to animate tab content with a directional slide (forward/back) when switching tabs, falling back to an immediate update when unsupported or on Firefox.

Introduces new tabs.scss with the tab-content view-transition animations (including prefers-reduced-motion handling) and enables the animation for the account overview home tabs by passing animated.

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

@github-actions
Copy link
Contributor

github-actions bot commented Mar 4, 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 4, 2026
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 4, 2026

✨ Files requiring CODEOWNER review ✨

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

👨‍🔧 @MetaMask/core-extension-ux (1 files, +1 -0)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 account-overview/
          • 📄 account-overview-tabs.tsx +1 -0

@n3ps n3ps marked this pull request as ready for review March 4, 2026 19:27
@n3ps n3ps requested review from a team as code owners March 4, 2026 19:27
@n3ps n3ps enabled auto-merge March 4, 2026 19:27
@github-actions github-actions bot added the size-M label Mar 4, 2026
@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 4, 2026

Builds ready [73f334e]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2732682805275280
total2732682805275280
Confirm Txconfirm_tx6072599961174361126117
total6072599961174361126117
Bridge User Actionsbridge_load_page28223534846328348
bridge_load_asset_picker17714922729190227
bridge_search_token71970973510720735
total12151093144413412901444
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup13541133173610114081538
load114094814589011831306
domContentLoaded113393014248911771280
domInteractive2815133212480
firstPaint183631194149209326
backgroundConnect19718324311199221
firstReactRender19125072035
initialActions2014225
loadScripts9517561245899991106
setupStore1263961322
numNetworkReqs312297202286
Power User HomeuiStartup223113727225110523584647
load1166992224120711651619
domContentLoaded1149987211619711481607
domInteractive37191432735104
firstPaint230702139262251374
backgroundConnect56325135856484571862
firstReactRender22155462333
initialActions105112
loadScripts94479218371879471406
setupStore1556291633
numNetworkReqs69311603077140
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2222212252224225
srpButtonToSrpForm95949619696
confirmSrpToPwForm22222202222
pwFormToMetricsScreen16151601616
metricsToWalletReadyScreen17162011820
doneButtonToHomeScreen60559163517603635
openAccountMenuToAccountListLoaded2933291129511629472951
total391839103930939303930
Onboarding New WalletcreateWalletToSocialScreen2192182211221221
srpButtonToPwForm1091071112110111
createPwToRecoveryScreen989199
skipBackupToMetricsScreen35343613636
agreeButtonToOnboardingSuccess16151711717
doneButtonToAssetList61357369248613692
total100396110824910071082
Asset DetailsassetClickToPriceChart13710517227157172
total13710517227157172
Solana Asset DetailsassetClickToPriceChart1111081142112114
total1111081142112114
Import Srp HomeloginToHomeScreen21381898265528922572655
openAccountMenuAfterLogin46335684756
homeAfterImportWithNewWallet27842613298315828932983
total46964563493717049374937
Send TransactionsopenSendPageFromHome24183052730
selectTokenToSendFormLoaded20182322223
reviewTransactionToConfirmationPage8478448492847849
total8908858996889899
SwapopenSwapPageFromHome31253643536
fetchAndDisplaySwapQuotes268526842687126862687
total271727102722527202722
🌐 Dapp Page Load Benchmarks

Current Commit: 73f334e | Date: 3/4/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.07s (±41ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 755ms (±37ms) 🟢 | historical mean value: 740ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 84ms (±11ms) 🟢 | historical mean value: 82ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.07s 41ms 1.04s 1.36s 1.11s 1.36s
domContentLoaded 755ms 37ms 726ms 1.02s 787ms 1.02s
firstPaint 84ms 11ms 68ms 184ms 88ms 184ms
firstContentfulPaint 84ms 11ms 68ms 184ms 88ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -98.87 KiB (-1.84%)
  • ui: -9.97 KiB (-0.12%)
  • common: 90.44 KiB (0.81%)

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.

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 5, 2026

Builds ready [4e934ee]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account27326429211272292
total27326429211272292
Confirm Txconfirm_tx604060376043260416043
total604060376043260416043
Bridge User Actionsbridge_load_page26124227413270274
bridge_load_asset_picker19515424029206240
bridge_search_token73570679536759795
total1177108313098312351309
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14501252181910515081631
load1214102614458912541383
domContentLoaded1206101214248712491370
domInteractive3017110182672
firstPaint1637141379227274
backgroundConnect22019026717227255
firstReactRender2112113112230
initialActions2016214
loadScripts100581912128610381173
setupStore1363751623
numNetworkReqs322291192881
Power User HomeuiStartup17201436220815517862032
load11721052181615611561586
domContentLoaded11541042178914711431555
domInteractive3719138243596
firstPaint193721710173253318
backgroundConnect30927344728318354
firstReactRender2516103122544
initialActions106114
loadScripts92982315671429111301
setupStore1785891840
numNetworkReqs58361582854141
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2182182190218219
srpButtonToSrpForm94939519495
confirmSrpToPwForm21212202222
pwFormToMetricsScreen15151501515
metricsToWalletReadyScreen16161701617
doneButtonToHomeScreen63360566924638669
openAccountMenuToAccountListLoaded2935291029732529402973
total3997389641178440544117
Onboarding New WalletcreateWalletToSocialScreen2202172211220221
srpButtonToPwForm1061051082107108
createPwToRecoveryScreen889099
skipBackupToMetricsScreen36343713737
agreeButtonToOnboardingSuccess16161601616
doneButtonToAssetList49448052216489522
total87886591019870910
Asset DetailsassetClickToPriceChart13411414712142147
total13411414712142147
Solana Asset DetailsassetClickToPriceChart987611314113113
total987611314113113
Import Srp HomeloginToHomeScreen1967192020223619662022
openAccountMenuAfterLogin40354644146
homeAfterImportWithNewWallet28552722315217129453152
total49904720555931651075559
Send TransactionsopenSendPageFromHome22182842528
selectTokenToSendFormLoaded19172011920
reviewTransactionToConfirmationPage8468468460846846
total8858828882885888
SwapopenSwapPageFromHome34273953739
fetchAndDisplaySwapQuotes268726852689126872689
total271927132725627242725
🌐 Dapp Page Load Benchmarks

Current Commit: 4e934ee | Date: 3/5/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±41ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 742ms (±39ms) 🟢 | historical mean value: 740ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 82ms (±10ms) 🟢 | historical mean value: 82ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 41ms 1.02s 1.36s 1.08s 1.36s
domContentLoaded 742ms 39ms 713ms 1.03s 763ms 1.03s
firstPaint 82ms 10ms 64ms 168ms 92ms 168ms
firstContentfulPaint 82ms 10ms 64ms 168ms 92ms 168ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -97.53 KiB (-1.82%)
  • ui: -9.71 KiB (-0.12%)
  • common: 90.57 KiB (0.81%)

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 5, 2026

Builds ready [a3da540]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account2742612838281283
total2742612838281283
Confirm Txconfirm_tx603960346046560436046
total603960346046560436046
Bridge User Actionsbridge_load_page26722930129297301
bridge_load_asset_picker2192052319223231
bridge_search_token73271075216741752
total1190116712151811981215
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup14111198187510714491605
load118299815859312161366
domContentLoaded117699615789212131335
domInteractive2916162212581
firstPaint1567343279206325
backgroundConnect21119329215214241
firstReactRender20134562234
initialActions107124
loadScripts98179813809210141142
setupStore1263451522
numNetworkReqs312290192279
Power User HomeuiStartup242914329893160221934671
load12131058176716412511628
domContentLoaded11971052175516112311617
domInteractive3719173243796
firstPaint208741565163265323
backgroundConnect797266800513463752704
firstReactRender2815107133050
initialActions107114
loadScripts979838153915410061382
setupStore1654381834
numNetworkReqs72381552687124
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2202202200220220
srpButtonToSrpForm99989909999
confirmSrpToPwForm22222312323
pwFormToMetricsScreen16161601616
metricsToWalletReadyScreen17161711717
doneButtonToHomeScreen64660575664613756
openAccountMenuToAccountListLoaded2925290529592129402959
total3936388840406139204040
Onboarding New WalletcreateWalletToSocialScreen2192182211220221
srpButtonToPwForm1121071194114119
createPwToRecoveryScreen989099
skipBackupToMetricsScreen38383903939
agreeButtonToOnboardingSuccess17171801718
doneButtonToAssetList61650673478651734
total101489411338210551133
Asset DetailsassetClickToPriceChart1361281446138144
total1361281446138144
Solana Asset DetailsassetClickToPriceChart1107816632119166
total1107816632119166
Import Srp HomeloginToHomeScreen22202088246714823122467
openAccountMenuAfterLogin48385865158
homeAfterImportWithNewWallet30402771333619831503336
total53084907570630355675706
Send TransactionsopenSendPageFromHome20182322223
selectTokenToSendFormLoaded19182012020
reviewTransactionToConfirmationPage948847112412010611124
total992888116111511001161
SwapopenSwapPageFromHome35353503535
fetchAndDisplaySwapQuotes268726862688126882688
total272327192726327232726
🌐 Dapp Page Load Benchmarks

Current Commit: a3da540 | Date: 3/5/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±44ms) 🟡 | historical mean value: 1.06s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 742ms (±41ms) 🟢 | historical mean value: 742ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 82ms (±12ms) 🟢 | historical mean value: 82ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 44ms 1.03s 1.37s 1.10s 1.37s
domContentLoaded 742ms 41ms 717ms 1.04s 775ms 1.04s
firstPaint 82ms 12ms 68ms 184ms 92ms 184ms
firstContentfulPaint 82ms 12ms 68ms 184ms 92ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: 828 Bytes (0.01%)
  • common: 20 Bytes (0%)

@sonarqubecloud
Copy link

sonarqubecloud bot commented Mar 6, 2026

Quality Gate Failed Quality Gate failed

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

See analysis details on SonarQube Cloud

Copy link
Member

@gantunesr gantunesr left a comment

Choose a reason for hiding this comment

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

Approved for Accounts CO,

  • ui/components/multichain/account-overview/account-overview-tabs.tsx

@metamaskbotv2
Copy link
Contributor

metamaskbotv2 bot commented Mar 6, 2026

Builds ready [feb2d7d]
⚡ Performance Benchmarks
👆 Interaction Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Load New Accountload_new_account28226629010290290
total28226629010290290
Confirm Txconfirm_tx6078604361143061006114
total6078604361143061006114
Bridge User Actionsbridge_load_page24320627525261275
bridge_load_asset_picker22514628047263280
bridge_search_token74872277521764775
total122512121233912331233
🔌 Startup Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Standard HomeuiStartup1435120916419814841608
load1203100613958912621359
domContentLoaded119698613928912551352
domInteractive3016145242486
firstPaint162701189130217323
backgroundConnect22119431918225251
firstReactRender19134952027
initialActions106124
loadScripts99278511998710431136
setupStore1373561424
numNetworkReqs312294202583
Power User HomeuiStartup3084174012322196027915249
load12881104190416513181636
domContentLoaded12691082179015812931625
domInteractive40201312539108
firstPaint236871788234274375
backgroundConnect967279996215976192891
firstReactRender26187782843
initialActions107113
loadScripts1039868155115210621388
setupStore1766272029
numNetworkReqs91392244399179
🧭 User Journey Benchmarks
BenchmarkMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P75 (ms)P95 (ms)
Onboarding Import WalletimportWalletToSocialScreen2242192336229233
srpButtonToSrpForm96949819698
confirmSrpToPwForm22222302223
pwFormToMetricsScreen16161601616
metricsToWalletReadyScreen17171701717
doneButtonToHomeScreen66559071854715718
openAccountMenuToAccountListLoaded2920290629361229282936
total3951388740246140004024
Onboarding New WalletcreateWalletToSocialScreen2202192201220220
srpButtonToPwForm1181111255121125
createPwToRecoveryScreen999099
skipBackupToMetricsScreen36363703737
agreeButtonToOnboardingSuccess18162022020
doneButtonToAssetList4924835039498503
total89288190912896909
Asset DetailsassetClickToPriceChart12811115317144153
total12811115317144153
Solana Asset DetailsassetClickToPriceChart83808528585
total83808528585
Import Srp HomeloginToHomeScreen19731867219612620252196
openAccountMenuAfterLogin55466066060
homeAfterImportWithNewWallet2254218023837222782383
total42864112448713043604487
Send TransactionsopenSendPageFromHome23183362133
selectTokenToSendFormLoaded22192832128
reviewTransactionToConfirmationPage8538468668852866
total90988494524915945
SwapopenSwapPageFromHome442363176163
fetchAndDisplaySwapQuotes269226902693126932693
total2737271427551727542755
🌐 Dapp Page Load Benchmarks

Current Commit: feb2d7d | Date: 3/6/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: 733ms (±37ms) 🟢 | historical mean value: 741ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 82ms (±14ms) 🟢 | historical mean value: 82ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 40ms 1.02s 1.33s 1.08s 1.33s
domContentLoaded 733ms 37ms 708ms 999ms 773ms 999ms
firstPaint 82ms 14ms 64ms 184ms 96ms 184ms
firstContentfulPaint 82ms 14ms 64ms 184ms 96ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: 828 Bytes (0.01%)
  • common: 20 Bytes (0%)

@n3ps n3ps added this pull request to the merge queue Mar 6, 2026
Merged via the queue into main with commit 67b2ee0 Mar 6, 2026
353 of 356 checks passed
@n3ps n3ps deleted the n3ps/tab-transition-css branch March 6, 2026 19:45
@github-actions github-actions bot locked and limited conversation to collaborators Mar 6, 2026
@metamaskbot metamaskbot added the release-13.23.0 Issue or pull request that will be included in release 13.23.0 label Mar 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants