Reframing Single Page Apps for the Future

By Kenneth Kalmer

Elevator Pitch

Building a rich single page app is really hard. re-frame, a ClojureScript wrapper over react, together with a beautifully simple flow of immutable derived data, makes this an absolute joy. It also sports a toolchain that is the envy of any developer who’s seen it, but can’t use it.

Description

Facebook did something beautiful when they built react. The combination of reactive programming, functional programming and immutable data has truly taken the web by storm.

What does it look like when you’re using a simple programming language, and powerful toolchain, that enshrines these values to build your next react app? What if you don’t need to have these conflicting ideals in one code base?

re-frame is a wrapper (over a wrapper) over react and gives developers a simple deterministic way to deliver rich single page applications. Being impressively buzzword compliant, it brings together the best of react, redux, Elm and other ideas that have taken the SPA world by storm. re-frame delivers a data oriented approach to designing and building your next application.

ClojureScript is an implementation of Clojure that targets JavaScript runtimes, both browser and Node. ClojureScript is a dynamic functional language with an impressive toolchain that is the envy of any developer that has seen it, but can’t use it. You get true hot code reloading, advanced optimisations thanks to Google’s Closure Compiler, the safety of immutable data, the flexibility of dynamic typing, and great JavaScript interop, all packaged up in a wonderfully simple experience. ClojureScript does not shy away from the fact that it gets compiled down to JS, instead it offers all the escape hatches you’d ever need to interop seamlessly and build on the work of other developers

Notes

I’ve been building re-frame apps for about a year now, and have deployed several to production too. It made react accessible in a way that react itself couldn’t

Given that LISP is a foreign syntax to most of the audience, special attention will be given to introducing the syntax gradually without alienating the audience.

Getting started instructions will be given too, as it is much simpler than starting a flavour of the month project by assembling a gazillion npm packages by hand.