Shpadoinkle-backend-snabbdom: Use the high-performance Snabbdom virtual dom library written in JavaScript.

[ bsd3, library, web ] [ Propose Tags ]

Snabbdom is a battle-tested virtual DOM library for JavaScript. It's extremely fast, lean, and modular. Snabbdom's design makes Snabbdom a natural choice for a Shpadoinkle rendering backend, as it has a similar core philosophy of "just don't do much" and is friendly to purely functional binding.

[Skip to Readme]
Versions [faq],,,
Change log
Dependencies base (>=4.12.0 && <4.16), exceptions, file-embed (>=0.0.11 && <0.1), ghcjs-dom (>=0.9.4 && <0.20), jsaddle (>=0.9.7 && <0.20), monad-control, mtl (>=2.2.2 && <2.3), Shpadoinkle, text (>=1.2.3 && <1.3), transformers-base, unliftio (>=0.2.12 && <0.3) [details]
License BSD-3-Clause
Author Isaac Shapira
Category Web
Source repo head: git clone
Uploaded by fresheyeball at 2021-01-06T19:50:50Z
Distributions NixOS:
Downloads 210 total (20 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]


[Index] [Quick Jump]


Maintainer's Corner

For package maintainers and hackage trustees

Readme for Shpadoinkle-backend-snabbdom-

[back to package description]

Shpadoinkle Backend Snabbdom

Goldwater Haddock BSD-3 built with nix Hackage Hackage Deps Hackage CI

This package contains a script to setup the Snabbdom virtual dom library as a backend to render Shpadoinkle applications.

Snabbdom consists of an extremely simple, performant, and extensible core that is only ≈ 200 SLOC. It offers a modular architecture with rich functionality for extensions through custom modules. To keep the core simple, all non-essential functionality is delegated to modules.

These design decisions made Snabbdom a good fit for Shpadoinkle's first high-performance pure JavaScript backend. Right now Snabbdom is being provided using CloudFlare content delivery network (CDN) and is not included in this repo. This is great for getting started fast and having a transparent developer experience where you can simply switch to the backend of your choosing. However, this is not a stable long term approach as the CDN artifact could be removed at any time. If you wish to use Snabbdom in production, I recommend either:

  • Proactively monitoring the CDN endpoints
  • Wrap SnabbdomT in your own newtype and overriding the setup method in the Backend instance with a mechanism where you provide Snabbdom's JavaScript artifacts yourself.