No Signals or SubscriptionsFull-tree re-renders on state change, lit-html diffs the DOM. Simple. Predictable. Zero framework overhead.
Entity-Based RenderingEach entity type defines its own render() method. Compose UIs by invoking api.render(id) to render entities declaratively.
Type CompositionTypes as arrays of behaviors. Add logging, guards, or any cross-cutting concern without wrapper hell or HOCs.
Zero Component StateAll state lives in the store. No refs, no lifecycle hooks, no framework-level memory leaks.
Built-in ComponentsRouter, forms, and geolocation in Web; UI primitives in [Inglorious UI](https://inglorious.dev/ui)—all entity-based, all customizable, all testable.
Transparent ArchitecturePure JavaScript. No JSX required (though supported). No compiler. No magic. Just functions and events.