Hi, are any of you using cljsrn
to develop apps for clients, who are technology agnostic, or are you mostly in a job where Clojure(Script) stack is already accepted and cljsrn
is just another tool in your arsenal?
I’m asking because I see a lot of job ads for react native, and most of them are on a standard JavaScript stack.
So if you’ve convinced your clients to develop the app in cljsrn
, how did you go about it?
Thanks
I am using it for an app I’m developing as a side project. I bet it would be hard to talk someone into it because of the sharp edges on the tooling. For me it’s all worth it because using re-frame has basically just wiped out my largest class of bugs.
Hi Josh! Are you using uncontrolled components when dealing with inputs? I like to use controlled components by default but I'm getting a flickery/buggy cursor. Found a combo of dispatch-sync
and reagent.core/flush
to make it work but I don't like it.
Hey, sorry I didn’t see this! I always miss the Threads notification in Slack. Here’s how I handle flickering components: https://increasinglyfunctional.com/2019/03/28/why-clojurescript-react-native-text-input-slow.html
You first need to explain why ClojureScript is the (much) better tool for the job, and after that ReactNative just follows;
@joshmiller I would say with the latest improvements around https://github.com/bhauman/react-native-figwheel-bridge (which I use) + other alternatives like shadow-cljs, krell (which I haven’t used) the tooling isn’t all that bad; what sharp edges have you run into?
Most of it is just React Native’s fault in my experience. The whole world changes out from under you all the time, so you need to be able to diagnose bugs in three different environments: native (Obj-C/Swift/Java/Kotlin), JS, and CLJS. The Krell approach of doing as little as possible and letting Metro handle it is good because it eliminates a source of mismatch, but you still have to understand where all the tools fit together to diagnose it when it blows up.
@joshmiller yes, I agree; you need expertise end-to-end; React Native itself has been way more stable in the last 1 year compared to what it was 3-4 years ago though; (I first started doing RN + cljs back in 2016, so relatively speaking things are way more stable now 🙂 )