~/talk

150 000 nodes in a Virtual DOM? No problem!

Talkat Øredev 2025 · 2025-11-05..11-07· [frontend-architecture, web-performance]
slides:none on file

A document viewer is implemented in Elm using a Virtual DOM and manages pages that start near 250,000 nodes and are reduced to about 115,000 nodes through node removal and smarter rendering. Key tactics are preprocessing to precompute virtual nodes, replacing list virtualization with full render plus laziness/memoization on grouped chapter state, eliminating inline SVGs and extra wrappers, and using content-visibility: auto to avoid full layout work. The result is a working app that runs smoothly even under 20x CPU slowdown.

AI-written summary · about

  1. 0:00Introduction
  2. 2:33Large legal docs rendering
  3. 5:06Virtual DOM reconciliation costs
  4. 7:18Performance for real users
  5. 9:21List virtualization limits
  6. 11:31Removing list virtualization
  7. 13:56Algorithmic improvements
  8. 15:21Pre-processing static elements
  9. 19:16Performance gains from pre-processing
  10. 19:37DOM size reduction
  11. 22:53Further DOM simplification
  12. 23:37Grouped state updates
  13. 25:48CSS engine bottleneck
  14. 27:37CSS layout with content visibility
  15. 29:00Final performance results
  16. 29:42Q&A
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.