Shpadoinkle is a new way to program user interfaces with Haskell.

To begin using it, go to Getting Started.


Shpadoinkle is fast because it 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.


With Shpadoinkle, there is no need to associate model update code with DOM locations. This avoids elaborate passing of messages and payloads. Components are highly composable.


Shpadoinkle UIs are composed of components with no side-effects. So, runtime errors are exceedingly rare. Code is easy to test because model updates are pure functions.