No Signals or Subscriptions
Full-tree re-renders on state change, lit-html diffs the DOM. Simple. Predictable. Zero framework overhead.
Lightweight & Predictable
Full-tree rendering with DOM diffing. Entity-based. No signals. No magic.

Full-tree re-renders on state change, lit-html diffs the DOM. Simple. Predictable. Zero framework overhead.
Each entity type defines its own render() method. Compose UIs by invoking api.render(id) to render entities declaratively.
Types as arrays of behaviors. Add logging, guards, or any cross-cutting concern without wrapper hell or HOCs.
All state lives in the store. No refs, no lifecycle hooks, no framework-level memory leaks.
Router, forms, tables, select dropdowns, virtual lists—all entity-based, all customizable, all testable.
Pure JavaScript. No JSX required (though supported). No compiler. No magic. Just functions and events.