New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize Builder's rendering of features with many options #89

merged 5 commits into from Oct 13, 2018


None yet
1 participant

dhleong commented Oct 13, 2018

Fixes #14

dhleong added some commits Oct 13, 2018

Refactor and simplify limited-select widget
Refs #14

Significantly improves render times, dropping React from ~519ms down to
~400ms, and views from ~457ms down to a much more palatable ~150ms.

The key here was reducing a lot of cruft and overhead from insisting on
using the reagent-forms, which it really was obnoxiously unnecessary
here. Instead, we just replicate some of the plumbing using normal
re-frame components, which has the added bonus of simplifying a lot of

We ought to be able to further optimize this by virtualizing the list of
displayed elements, now that we're not shackled to reagent-forms.
Virtualize scrollable limited-select widgets
Refs #14

This drops View rendering further down from ~150ms to just ~50ms,
with React crushed from ~400ms down to ~120ms.

So this is pretty great, and we didn't have to resort to dropdowns!
There are still some visual niggles that it'd be nice to fix (in
particular, the bottoms of lists seem to get cut off a bit) but this
seems like a great technique to use here. We probably won't even need to
collapse the features (though we might want to in a future change for a
more glanceable visual).
Remove old, unused reagent-forms limited-select widget
We could always refactor our new one into a separate namespace if needed

@dhleong dhleong merged commit 31f8fb3 into master Oct 13, 2018

2 checks passed

continuous-integration/travis-ci/pr The Travis CI build passed
continuous-integration/travis-ci/push The Travis CI build passed

@dhleong dhleong deleted the dhleong/optimize-many-options branch Oct 13, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment