Improve performance of sidebar filter UI #1232
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.
The previous implementation of the sidebar filtering was slow to respond to keystrokes for large datasets. This was because of two implementation decisions: (i) the list of available filters was computed upon every key-stroke and (ii) the matching algorithm was run against this. A subsequent key-stroke wouldn't appear until both steps had completed.
Here we improve (i) by precomputing the options at component render time, and improve (ii) by debouncing the matching algorithm and not ignoring accents. (Profiling indicated that the stripping of accents took a lot of time.) By using an Async React Select component we get a spinner UI to indicate that the result of the matching algorithm is being awaited.