fix(participants-pane): virtualize participant list for improved performance (#17011)#17012
fix(participants-pane): virtualize participant list for improved performance (#17011)#17012ajinkyap9 wants to merge 2 commits intojitsi:masterfrom
Conversation
|
Hi, thanks for your contribution! |
There was a problem hiding this comment.
Pull request overview
This PR targets the participants pane performance regression when closing/unmounting very large participant lists by introducing list virtualization (react-window) so far fewer row components are mounted at once.
Changes:
- Add a virtualized rendering path for large participant lists in
MeetingParticipantItemsusingAutoSizer+FixedSizeList. - Add a flex-based
listContainerwrapper inMeetingParticipantsto provide a stable height for virtualization and update the related inline comment.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| react/features/participants-pane/components/web/MeetingParticipants.tsx | Adds listContainer styling and wraps the list to support AutoSizer height; updates performance-related comment. |
| react/features/participants-pane/components/web/MeetingParticipantItems.tsx | Implements conditional virtualization for participant rows via react-window. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
react/features/participants-pane/components/web/MeetingParticipantItems.tsx
Show resolved
Hide resolved
react/features/participants-pane/components/web/MeetingParticipantItems.tsx
Show resolved
Hide resolved
react/features/participants-pane/components/web/MeetingParticipants.tsx
Outdated
Show resolved
Hide resolved
|
Hi @jitsi-jenkins , thank you for the reminder! I have now signed the Individual CLA. Please let me know if there’s anything else needed from my side. |
Summary
Fixes #17011
This PR implements list virtualization using
react-windowto solve the performance issue where unmounting 500+ components withuseTranslationhook was causing 10+ second UI freezes.Problem
As documented in the FIXME comment in the codebase:
Solution
FixedSizeListfromreact-windowwithAutoSizerfor dynamic sizingChanges
MeetingParticipantItems.tsxreact-windowMeetingParticipants.tsxlistContainerstyle for proper AutoSizer height; updated commentsTesting
Notes
react-windowandreact-virtualized-auto-sizerare already project dependenciesCurrentVisitorsList.tsxwhich already uses virtualization