Derived Values, Flowing
This, milord, is my family's axe. We have owned it for almost nine hundred years, see. Of course, sometimes it needed a new blade. And sometimes it has required a new handle, new designs on the metalwork, a little refreshing of the ornamentation ... but is this not the nine hundred-year-old axe of my family? And because it has changed gently over time, it is still a pretty good axe, y'know. Pretty good.
-- Terry Pratchett, The Fifth Elephant
reflecting on identity, flow and derived values (aka The Ship of Theseus)
re-frame is a ClojureScript framework for building user interfaces. It is has a data-oriented, functional design.
re-frame has been designed from the ground up to make developers very productive when building large Single-Page applications. That's its promise to you. For many, it has delivered on this goal, and it has been enthusiastically praised.
re-frame provides another unfair advantage - ClojureScript is a Lisp. Alan Kay once described Lisp as "Maxwell's equations of software". Paul Graham described how Lisp was a competitive advantage for his startup. When we use Lisp, we get to leverage 50 years of foliated excellence from the very best minds available. We also get to leverage a thriving ClojureScript community which delivers modern ideas and best-in-class tooling.
re-frame was created by a programmer who had been developing for two decades before the Web was even "a thing". Yeah, that old. He's seen a UI or two along the way. Still has hair.
Although re-frame leverages React, it only needs React to be a V in MVC, and no more. re-frame does not buy into the sadly-pervasive idea that Views should be causal (colocated queries, ComponentDidMount, hooks, etc). In re-frame, events are causal and views are purely reactive.
The re-frame documentation is available here.
The Current Version
Can be seen in the clojars badge above.
re-frame is MIT licenced