Skip to content

Admin: Open large lists faster - #705

Merged
lehni merged 4 commits into
mainfrom
feature/fast-large-lists
Oct 25, 2026
Merged

lehni merged 4 commits into
mainfrom
feature/fast-large-lists

Conversation

@lehni

@lehni lehni commented Oct 25, 2026

Copy link
Copy Markdown
Contributor

In a section with 300 inlined list items with 3 nested items each, rendering all rows went from 27 s to 2 s (measured with the rows rendered over several frames), and 1.5 s when they render at once. 30 items open in 160–210 ms.

  • Keep the forms that items derive from their schema, so items don't render again with each render of their list
  • Provide the layouts of sections and items instead of forwarding them as slots, which made every component on their way render again
  • Style affixes and draggables with modifiers instead of descendant :has(), which made the browser restyle every input whenever rows were added
  • Register no route claims for sources with inlined items

Progressive rendering of the rows (#686) is left out: errors and routes inside items that haven't rendered yet find no component, see #686.

lehni added 4 commits October 25, 2026 09:12
- Create inlined forms and clipboard copies once, so items don't render again with each render of their list
…g them as slots

- Forwarded slots made every component on their way render again with each render of the list
- Sections and list and object items provide their layout through `schemaLayoutKey`, which the schema below them renders in its main pane
- Descendant `:has()` selectors made the browser check every input again whenever elements were added, three times slower on a list of 900 rows
- Add `dito-affixes--hover` and `dito-draggable--chosen` instead
- They have no route, so the claims don't need to ask them
@lehni
lehni merged commit 697e796 into main Oct 25, 2026
8 checks passed
@lehni
lehni deleted the feature/fast-large-lists branch October 25, 2026 08:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant