One huge testament to the quality of re-frame design is that APIs and semantics have remained largely unchanged over the years. There have been a few new features added, but practically no breaking changes over the years. My team has some apps that have been in production close to half a decade now, and we just update the version to get speed improvements, features, and fixes.
Meanwhile, React ecosystem has had a ton of churn in that time. There have been lots of patterns introduced like redux, flux, hooks, and so on. If you started building an app using best practices a few years ago it’s likely to be considered legacy today. Modern React best practices also closely resemble re-frame further confirming in my mind that it got things fundamentally right from the start.
Re-frame completely insulates ClojureScript developers from the constant flux in the underlying React ecosystem. React can really be seen as just an implementation detail.
re-frame is by far my favourite way to do web-apps these days, and it’s been this way for the last 3 years. It’s brought joy, joy, joy into my heart.
Do yourself a favour and take a stab at it. Especially if, like me 3 years ago, you’re not a fan of front-end development and consider it a pile of dirty hacks.
Also, the documentation! I wish more projects had it written this well.
I recently used Clojure(Script) for the first time ever along with re-frame and reagent for a simple frontend for a side-project. I liked it all overall! I have a lot of Elm experience so it wasn’t entirely foreign to me.
One thing that I haven’t found is docs on what are all the available functions—e.g. I was wondering how to handle on mouse enter and on mouse leave events. I guess I missed it, but it looks like you can basically just the event names in kebab-case.