Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
The most popular approach for building frontend with ClojureScript is using React. You can use it via a wrapper library called Reagent and describe UI components as pure functions returning Clojure data structures.
Instead, you can use a tool called Babashka. It is a native Clojure interpreter that implements a sufficient subset of Clojure and goes with a bunch of prepacked libs to work with the filesystem, command line arguments, json. All these packed in a standalone binary, that you can deploy anywhere and run Clojure without JVM.
So you can see, there are really a lot of choices but none of them dominates, which means they all have flaws. You can read a good article from Niki Tonsky where Clojure UI problems are discussed. Also to address the problems Niki Tonsky started the development of a new UI for Clojure, called Humble UI. So now we have one more option :)
Ah, and there is also a new version of Clojure in active development - ClojureDart. It is a port of Clojure language to Dart with the primary goal of using Flutter framework and getting a native mobile and desktop UI.
But they exist. For example Status company where I met Clojure for the first time and worked for a few years has a mature blockchain-based mobile messenger written in ClojureScript with ReactNative.
Mobile development is also possible with Clojure. The stack you can use here is ClojureScript + ReactNative. Though it is not as popular as frontend or backend.
The most popular approach for building frontend with ClojureScript is using React. You can use it via a wrapper library called Reagent and describe UI components as pure functions returning Clojure data structures.
One more approach - to write an app in ClojureScript + Microsoft’s version of react-native for windows or macOS.