Reflex: Practical Functional Reactive Programming

Reflex is a fully-deterministic, higher-order Functional Reactive Programming (FRP) interface and an engine that efficiently implements that interface.

Why use Reflex

  • Full-Stack Haskell

    Share data types between frontend and server code; use generics to automatically derive JSON encoding-decoding; reuse code from server at client-side to implement complex business logic, and do prerendering at server-side using frontend code.

    Fast to prototype; thanks to strong static typing, avoid frustrating runtime errors while doing modifications.

    Haskell' advanced type-system and compile time checks help create easy to maintain apps.

  • Works on Web, Desktop, Android and iOS

    Same code can be cross compiled to Web/JavaScript, WebGTK based desktop apps, native Android and iOS apps.

  • Composability

    Reuse and compose your widgets with confidence, thanks to excellent composability support of FRP architecture.

    Widgets can handle their internal state, DOM creation, user interaction, and communication with backend. Their type signature clearly shows what inputs they need, and what output they can produce; which greatly simplifies the process of creating complex designs using simpler blocks.