A new Functional UI
A programming model for declarative user interface.
Shpadoinkle does little work. The renderer is modular, so you can always benefit from the latest advances in virtual DOM rendering.
Your Shpadoinkle code is high-level. You need not worry about low-level details, causality, or when DOM nodes get replaced.
Shpadoinkle avoids elaborate passing of messages and payloads. Components are highly composable with Lenses
Shpadoinkle UIs are composed of components with no side-effects. Runtime errors are exceedingly rare. Code is easy to test because model updates are pure functions.
Shpadoinkle facilities type safe UI code. Everything from client server communication with Servant, to compile time checked asset paths, is designed with types in mind.
Shpadoinkle components are expressed as functions, no classes, inheritance, or JSX style new syntax. Purity of view logic is guaranteed by the type system.
State is easy
Components are simply functions that accept a state argument to render. Event listeners provide updates to the state. No props management, digest cycle, hooks, dispatch, or other such ceremony.
Using event handlers, and pure functions we can compose applications without any further abstraction.