A new Functional UI



desert cactusdesert cactus

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.

Type Safe

Shpadoinkle facilitates type safe UI code. Everything from client server communication with Servant, to compile time checked asset paths, is designed with types in mind.

background transition

Hello World

Shpadoinkle components are expressed as functions, no classes, inheritance, or JSX style new syntax. Purity of view logic is guaranteed by the type system.

Live Shpadoinkle Editor

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.

Live Shpadoinkle Editor

An Application

Using event handlers, and pure functions we can compose applications without any further abstraction.

Live Shpadoinkle Editor
background transition