Performance

virtualScroll()#

content-visibility: auto virtualization, or { mode: 'window' } for DOM recycling (100k rows → ~30 nodes, scrollToIndex())

lazy()#

viewport-based lazy loading with skeleton

Effect lanes#

effect(fn, { flush: 'micro' | 'frame' }) coalesces bursts of writes into one run per microtask / frame; flush() drains them synchronously

Hydration strategies with arguments#

data-aegis-load="visible(300px)", "idle(1500)", "interaction(click,keydown)" — one shared IntersectionObserver, the waking event is replayed after mount

stats()#

flushes, effect runs, live scopes/effects, cache sizes; dev.profile() marks every flush in the Performance panel

Event delegation, opt-in#

configure({ delegateEvents: ['click', 'input', 'keydown'] }): one document listener per type, handlers stay on the element with native bubbling order and stopPropagation; @click.direct for widgets that swallow events

Layout as signals#

size(el), inView(el), viewport() (observers, never getBoundingClientRect inside an effect)