Improve plugins pane performance in settings #2737
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes
I extracted parts of the plugin display component that are only displayed when it's expanded (keyword, bottom part with author, version, directory etc.) into 2 separate controls. Now they render lazily, only after the plugin has been expanded. Before this change, only custom plugin settings were rendering lazily.
Performance improvement
Time required to render my list of 31 plugins:
Before (700 ms):

After (400 ms):

Testing
Notes
This feels wrong to do, but I haven't managed to make virtualization work with plugins being able to expand, which changes their size. With virtualization enabled, it seems to work fine when using the scroll wheel, but if I try to use the scrollbar, the settings window freezes. This PR is the best working solution I have found.