Conversation
|
Size Change: +4.1 kB (0%) Total Size: 1.08 MB
ℹ️ View Unchanged
|
|
Baseline before any changes https://github.com/WordPress/gutenberg/runs/4012470808 |
|
Thanks so much for setting this up and reviewing #35817 @gwwar Performance check after commit changes: #35967 (commits) https://github.com/WordPress/gutenberg/runs/4014766222 I think there's a slight drop in performance if I'm reading things right? BeforeAfter |
|
So querying for selectedId in the parent affects block focus time. You can test this locally with a post that has ~900 blocks. Trying to focus from one paragraph to another will lag by about a second, as we see here: More detailed explanation of why is in #35706. But the TL;DR is that by default if a parent updates in React all children re-render regardless of if props change. |
|
My other List View performance PR landed in #35230 ✨ I'm going to rebase with trunk to see the perf effects. Ideally changes here shouldn't slow down focus too much after the rebase. |
…t only when a block is selected outside the block list. Using an `useEffect` to loop through parent nodes, and expand them when necessary.
203379c to
b2947ee
Compare
Ouch. Okay I was definitely focussing on the wrong stat 😆 Thanks for the explanation and for doing the heavy lifting on performance checks. |
|
Excellent, it looks like with windowing, we shouldn't see the terrible focus slowdown. I'd recommend manually testing to verify, but I think we can query for selectedId in the parent component again. Details |
| setExpandedState( { | ||
| type: 'expand', | ||
| clientId, | ||
| } ); |
There was a problem hiding this comment.
Two recommendations here:
- Let's make a new action so we can dispatch a single one instead of many
- It might be worth exploring if we need to keep track of focus or not. (Is there any other state we can query?) I'd timebox this.
There was a problem hiding this comment.
Let's make a new action so we can dispatch a single one instead of many
Good idea. I'll make a start next week. Thanks again, and great work.
|
After pushing the latest changes from #35817 on top of #35230 A big improvement on #35967 (comment) Way to go @gwwar |

WIP alternative #35817
Spinning up a branch with some perf tests enabled, so we can see how different approaches work out.
After we get a baseline run, @ramonjd you're welcome to push to this branch.