Four years ago, I published the first version of Outboard,
my iOS app for saving and organizing places, written in ClojureScript on
React Native. While the experience of building a functional,
reactive UI in ClojureScript was a dream, the experience of duct-taping the
various fast-moving bits of Javascript build pipelines and compilation systems
was not. Over the course of the four years since then, React Native has been
through ten “minor” versions, each with major breaking changes, making
upgrading to the current version a nearly impossible task. By contrast, all of
my ClojureScript code worked perfectly on new ClojureScript releases, so I
decided to simply lift the app code out, build a new React Native base
underneath it at the current version, and put it back on top.
Continue reading
In building the web frontend for Outboard, I
am using Apple’s MapKit JS,
which is delivered via CDN and not included in my application’s bundle locally.
Under ClojureScript’s advanced compilation, this means there are places where
type hinting for externs is
necessary.
Continue reading
Once you’ve grokked the Re-Frame philosophy
for building truly reactive applications on React in ClojureScript, you will
want to apply it everywhere. One obvious and ubiquitous application of effects
is asynchronous HTTP requests, and of course there is
an officially sanctioned library for
handling these. One problem: it relies on an AJAX library that only works with
the browser XHR implementation. So what can we do in React Native-based
Clojurescript apps?
Continue reading