Skip to content

feat: add wallet collapse functionality to all wallet types [superseded by #39645]#39583

Closed
georgewrmarshall wants to merge 1 commit intomainfrom
refactor/permission-cell-options-modal
Closed

feat: add wallet collapse functionality to all wallet types [superseded by #39645]#39583
georgewrmarshall wants to merge 1 commit intomainfrom
refactor/permission-cell-options-modal

Conversation

@georgewrmarshall
Copy link
Copy Markdown
Contributor

@georgewrmarshall georgewrmarshall commented Jan 27, 2026

Description

This PR explored adding collapsible wallet sections to the MultichainAccountList component. After implementation and testing, we discovered that PR #39645 implements a more robust solution to the same problem.

Why PR #39645 is preferred:

  • Better handling of virtualized list height recalculation
  • More comprehensive collapse functionality (includes pinned section)
  • Cleaner integration with the virtualizer without forcing remounts
  • Uses getItemKey in virtualizer config for better React reconciliation

This PR is being closed in favor of #39645, which provides the same end-user functionality with a superior technical implementation.

Original implementation details preserved below for reference:


Implemented collapsible wallet sections in the MultichainAccountList component, extending the collapse functionality that was previously only available for hidden accounts to all wallet types (Entropy, Keyring, Snap).

Changes in this PR:

  • Added expandedWallets state to track collapse state per wallet
  • Made wallet headers clickable buttons with expand/collapse arrows
  • Forced VirtualizedList remount on expand/collapse via key prop
  • Added tests for the collapse functionality

Open in GitHub Codespaces

Changelog

CHANGELOG entry: null (superseded by #39645)

Related issues

Superseded by: #39645
Related: https://consensyssoftware.atlassian.net/browse/MDP-678

Manual testing steps

See PR #39645 for testing steps.

Screenshots/Recordings

Before

Wallet headers were not interactive - all wallets were always expanded.

before720.mov

After

Wallet headers are now clickable buttons with collapse/expand arrows. Each wallet can be independently collapsed to hide its accounts.

collapse.after720.mov

🤖 Generated with Claude Code

@georgewrmarshall georgewrmarshall requested a review from a team as a code owner January 27, 2026 22:36
@github-actions
Copy link
Copy Markdown
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@georgewrmarshall georgewrmarshall self-assigned this Jan 27, 2026
@georgewrmarshall georgewrmarshall added the team-design-system All issues relating to design system in Extension label Jan 27, 2026
@georgewrmarshall georgewrmarshall force-pushed the refactor/permission-cell-options-modal branch from 6851344 to 4120f55 Compare January 27, 2026 23:20
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Jan 27, 2026

✨ Files requiring CODEOWNER review ✨

🔑 @MetaMask/accounts-engineers (2 files, +104 -5)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain-accounts/
        • 📁 multichain-account-list/
          • 📄 multichain-account-list.test.tsx +37 -0
          • 📄 multichain-account-list.tsx +67 -5

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Jan 27, 2026

Builds ready [4120f55]
UI Startup Metrics (1321 ± 124 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13211065162912413941596
load--1135915142311911991383
domContentLoaded--1129911141411911941374
domInteractive--2715125192483
firstPaint--143661133117174284
backgroundConnect--23621728212241262
firstReactRender--16103341923
initialActions--105112
loadScripts--90970111951169751152
setupStore--1362851623
numNetworkReqs--191377161366
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--272715396256121932055633
load--1151942162215412871430
domContentLoaded--1129931161114712561360
domInteractive--40175085433109
firstPaint--229701387221249506
backgroundConnect--66328440366976832416
firstReactRender--24165672740
initialActions--103112
loadScripts--891708135714010021140
setupStore--1554071931
numNetworkReqs--884220438103185
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--8326621200988931008
load--68859387373762815
domContentLoaded--68358886473753809
domInteractive--241585162272
firstPaint--1046125343128196
backgroundConnect--41181542846115
firstReactRender--15103451725
initialActions--108113
loadScripts--68058686272746807
setupStore--1173851325
numNetworkReqs--191376171369
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--1305989185022114921691
load--721613102498734958
domContentLoaded--711607101798722953
domInteractive--36181752734104
firstPaint--1516572293183284
backgroundConnect--15813352260151208
firstReactRender--22174742330
initialActions--102111
loadScripts--708605100997720946
setupStore--1243641419
numNetworkReqs--914125046101199
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--14271140193318515321869
load--1149968170513712231441
domContentLoaded--1148967170513712231440
domInteractive--67332304291164
firstPaint--------
backgroundConnect--65252765655197
firstReactRender--13104341316
initialActions--103122
loadScripts--1118954167812411881319
setupStore--144201221135
numNetworkReqs--211182181578
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--28171926562764930454253
load--13961084440748613982437
domContentLoaded--13951084440748613982437
domInteractive--173471362207177413
firstPaint--------
backgroundConnect--49211419524157251406
firstReactRender--21145472329
initialActions--203122
loadScripts--13431042436946613622389
setupStore--12613776157153523
numNetworkReqs--82272394484193
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--16621342227418817881928
load--14231161189313715341681
domContentLoaded--14221161189313715341681
domInteractive--912924444130166
firstPaint--------
backgroundConnect--842631759134198
firstReactRender--15106961521
initialActions--102122
loadScripts--13741145178511614341584
setupStore--125144161133
numNetworkReqs--211183191581
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--30022025915687531724421
load--15301248308032815332419
domContentLoaded--15301247308032815332419
domInteractive--128321288159127288
firstPaint--------
backgroundConnect--51110727144297921270
firstReactRender--22145162733
initialActions--203123
loadScripts--14801223297030114872385
setupStore--1317715161163573
numNetworkReqs--79282694882190
19--------
📊 Page Load Benchmark Results

Current Commit: 4120f55 | Date: 1/27/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±42ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 722ms (±38ms) 🟢 | historical mean value: 724ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±10ms) 🟢 | historical mean value: 80ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 42ms 1.00s 1.34s 1.07s 1.34s
domContentLoaded 722ms 38ms 695ms 1.00s 748ms 1.00s
firstPaint 75ms 10ms 60ms 148ms 84ms 148ms
firstContentfulPaint 75ms 10ms 60ms 148ms 84ms 148ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: 877 Bytes (0.01%)
  • common: 20 Bytes (0%)

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Jan 28, 2026

Builds ready [2e83626]
UI Startup Metrics (1348 ± 119 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13481082191811914021573
load--1150929161211412061349
domContentLoaded--1143910160311411981338
domInteractive--291790182577
firstPaint--1716842874208320
backgroundConnect--24822830215252287
firstReactRender--18114461934
initialActions--106113
loadScripts--91168913501119671086
setupStore--1363861627
numNetworkReqs--191377161366
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--19071510244720219692371
load--1065938164412310831343
domContentLoaded--1050931163912310661338
domInteractive--36171752935113
firstPaint--182721478148226287
backgroundConnect--32927961871324539
firstReactRender--23155272439
initialActions--103113
loadScripts--81770313281168371106
setupStore--1585171725
numNetworkReqs--70391923967163
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--8897001137939371061
load--72862194976794869
domContentLoaded--72261794476788863
domInteractive--271596182379
firstPaint--1086436453122222
backgroundConnect--3919148224484
firstReactRender--1910118122032
initialActions--104113
loadScripts--71961594275785855
setupStore--1363461628
numNetworkReqs--201381181373
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--1248830184320714151583
load--71461097689733955
domContentLoaded--70460496789723943
domInteractive--34171242433103
firstPaint--1396438274179297
backgroundConnect--16113350957156243
firstReactRender--22183432429
initialActions--103111
loadScripts--70160295887721934
setupStore--1142731315
numNetworkReqs--844023449131168
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--14471173200218315511852
load--1166967170914312471423
domContentLoaded--1165966170814312461423
domInteractive--76332924891155
firstPaint--------
backgroundConnect--712422553106182
firstReactRender--14104781339
initialActions--103122
loadScripts--1125951168112911791397
setupStore--2252214310109
numNetworkReqs--211182171575
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--27432015527571027574569
load--13371048306842412722607
domContentLoaded--13371047306842412722606
domInteractive--12436892128120343
firstPaint--------
backgroundConnect--32512017533542451096
firstReactRender--20143442328
initialActions--214123
loadScripts--12711023288134112392346
setupStore--1857832220320699
numNetworkReqs--60301874176171
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--16571349219518518191996
load--14091176186113515001650
domContentLoaded--14091176186113515001649
domInteractive--913121544126185
firstPaint--------
backgroundConnect--772621949118173
firstReactRender--14116661425
initialActions--103122
loadScripts--13641154173811314441550
setupStore--2042513912130
numNetworkReqs--211185181579
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--312220879733112331634512
load--18061305772691717962934
domContentLoaded--18051304772691717952934
domInteractive--119331082135111292
firstPaint--------
backgroundConnect--3181111039232343930
firstReactRender--2316123112632
initialActions--207123
loadScripts--17481276769989617632757
setupStore--1678805222263660
numNetworkReqs--60311693971167
19--------
📊 Page Load Benchmark Results

Current Commit: 2e83626 | Date: 1/28/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 979ms (±42ms) 🟢 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 679ms (±39ms) 🟢 | historical mean value: 724ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 74ms (±13ms) 🟢 | historical mean value: 80ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 979ms 42ms 948ms 1.29s 1.01s 1.29s
domContentLoaded 679ms 39ms 656ms 965ms 695ms 965ms
firstPaint 74ms 13ms 60ms 188ms 84ms 188ms
firstContentfulPaint 74ms 13ms 60ms 188ms 84ms 188ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: 877 Bytes (0.01%)
  • common: 20 Bytes (0%)

setExpandedWallets((current) => ({
...current,
// Toggle: if currently false, set to true; otherwise set to false (default expanded)
[walletId]: current[walletId] === false,
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.

Cosmetic: But I think using !value is pretty neat for "toggles"? But I think we're not doing this here because by default, expanded can be either true or undefined? (since expandedWallets is not initialized with all existing wallet IDs).

Am I getting that right? IMO that would be clearer if were dealing with boolean only

result.push(...accounts);
// Only add accounts if wallet is expanded (default is expanded)
const isWalletExpanded =
expandedWallets[walletId as AccountWalletId] !== false;
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.

That would also avoid this kind of explicit check to !== false with something that looks like a boolean 😅

type: 'wallet-header';
key: string;
text: string;
walletId: string;
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.

What about using a AccountWalletId directly to avoid type-casting later on?


if (item.type === 'wallet-header') {
const isWalletExpanded =
expandedWallets[item.walletId as AccountWalletId] !== false;
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.

Regarding my other comment about AccountWalletId, we would not need any type-cast like this one (if we go with my suggestion)

@georgewrmarshall georgewrmarshall force-pushed the refactor/permission-cell-options-modal branch from 2e83626 to ac89136 Compare January 29, 2026 00:18
@github-actions github-actions bot added size-S and removed size-M labels Jan 29, 2026
Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

// Only show accounts if wallet is expanded
if (isWalletExpanded) {
result.push(...accounts);
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

New wallets appear collapsed instead of expanded by default

Medium Severity

The expandedWallets state is initialized only once on mount with existing wallet IDs set to true. If a new wallet is added to the wallets prop after mount, it won't exist in expandedWallets, causing expandedWallets[walletId] to return undefined. Since the check if (isWalletExpanded) treats undefined as falsy, new wallets appear collapsed instead of expanded by default—contradicting the PR's stated behavior. The check should use expandedWallets[walletId] !== false to treat undefined as expanded.

Additional Locations (1)

Fix in Cursor Fix in Web

@georgewrmarshall georgewrmarshall force-pushed the refactor/permission-cell-options-modal branch from ac89136 to daa423b Compare January 29, 2026 00:43
@georgewrmarshall georgewrmarshall force-pushed the refactor/permission-cell-options-modal branch from daa423b to b8a632f Compare January 29, 2026 00:53
- Add expandedWallets state with proper boolean initialization
- Add handleWalletToggle callback for toggling wallet expansion
- Create new wallet-header ListItem type for collapsible headers
- Integrate collapse logic into list building (only show accounts when expanded)
- Add wallet-header rendering with arrow icon
- Import virtualized-list component from main
- Use Object.keys() pattern for cleaner type assertions

This integrates the wallet collapse functionality with the new
virtualized list structure from main.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Jan 29, 2026

Builds ready [732fa4c]
UI Startup Metrics (1338 ± 124 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13381089162412414221541
load--1146916141112312331361
domContentLoaded--1140911140412212271354
domInteractive--2716100202491
firstPaint--157671185121192284
backgroundConnect--23521428913239266
firstReactRender--16104041824
initialActions--1010213
loadScripts--920692118312110101132
setupStore--1363351624
numNetworkReqs--221578171571
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--245615547903116923735529
load--1140973175615712391463
domContentLoaded--1120963174915112151449
domInteractive--42202343938148
firstPaint--203741551160246349
backgroundConnect--54628935386074451873
firstReactRender--23164752533
initialActions--104112
loadScripts--87972814591409531183
setupStore--1563351726
numNetworkReqs--1335433257164258
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--823655112394875998
load--68257591078743802
domContentLoaded--67757090278738798
domInteractive--241582162174
firstPaint--1095763571141208
backgroundConnect--38181302541112
firstReactRender--15103551727
initialActions--103112
loadScripts--67456889977737796
setupStore--1164051222
numNetworkReqs--221585171576
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--1320873254426214921744
load--74162711071147471062
domContentLoaded--72962211021157381049
domInteractive--39181562840114
firstPaint--161661058144179290
backgroundConnect--18113657793168483
firstReactRender--23173742431
initialActions--101011
loadScripts--72762010931137361039
setupStore--1253841418
numNetworkReqs--1485532260175270
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--15021154223316616091771
load--12031007200313412791415
domContentLoaded--12021006200313412791415
domInteractive--853431954113197
firstPaint--------
backgroundConnect--65243055080159
firstReactRender--15104571537
initialActions--103122
loadScripts--1169994197412612371344
setupStore--176235281263
numNetworkReqs--231281181876
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--25391752418640727173200
load--12481050222216612801578
domContentLoaded--12471050222216712801578
domInteractive--1325052291132381
firstPaint--------
backgroundConnect--278931510223293837
firstReactRender--21146052329
initialActions--213123
loadScripts--12091030209815312381543
setupStore--1328728165154571
numNetworkReqs--81382324591195
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--16991399229118918582033
load--14591205179613915541756
domContentLoaded--14581205179614015541756
domInteractive--913023547132152
firstPaint--------
backgroundConnect--812621251136182
firstReactRender--14112621519
initialActions--103112
loadScripts--14111182168311315031637
setupStore--183364431159
numNetworkReqs--231290191982
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--29872138811579431614532
load--16301223662262916542760
domContentLoaded--16301223662262916542760
domInteractive--181345153522120380
firstPaint--------
backgroundConnect--36111817572984121002
firstReactRender--21153642328
initialActions--203123
loadScripts--15801208660460816002531
setupStore--1908880236294732
numNetworkReqs--79382644790201
19--------
📊 Page Load Benchmark Results

Current Commit: 732fa4c | Date: 1/29/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±38ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 716ms (±35ms) 🟢 | historical mean value: 724ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±12ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 38ms 1.01s 1.30s 1.07s 1.30s
domContentLoaded 716ms 35ms 696ms 976ms 754ms 976ms
firstPaint 76ms 12ms 60ms 180ms 84ms 180ms
firstContentfulPaint 76ms 12ms 60ms 180ms 84ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: 919 Bytes (0.01%)
  • common: 20 Bytes (0%)

@georgewrmarshall georgewrmarshall changed the title feat: add wallet collapse functionality to all wallet types feat: add wallet collapse functionality to all wallet types [superseded by #39645] Jan 29, 2026
@georgewrmarshall
Copy link
Copy Markdown
Contributor Author

Closing this PR in favor of #39645, which implements a more robust solution to the wallet collapse functionality. PR #39645 handles virtualized list height recalculation better and includes additional improvements like collapsible pinned sections.

Thank you to everyone who reviewed this PR! The exploration here was valuable, and the final implementation in #39645 benefits from the lessons learned.

@github-actions github-actions bot locked and limited conversation to collaborators Jan 29, 2026
@metamaskbot metamaskbot added the INVALID-PR-TEMPLATE PR's body doesn't match template label Jan 29, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

INVALID-PR-TEMPLATE PR's body doesn't match template size-M team-design-system All issues relating to design system in Extension

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants