I’m rebuilding our app (Java/Wicket, ~170KLOC) in Clojure/Script (currently ~33KLOC) using Re-frame. I find the Re-frame approach to be just so much simpler and more powerful for UI development than anything I’ve ever used in Java or JavaScript (or even tools like Visual Basic) that I’d have a tough time going back.
I don’t use many libs from the npm ecosystem because I don’t find much of a need to. So far it’s just React (via Re-frame/Reagent), a drag-and-drop lib, and a WYSIWYG editor lib.
Runtime performance is not an issue. Our app feels pretty snappy even in mobile browsers.
One thing I would really miss with a JS front-end is the ability to share code between the UI and back-end. About a third of our code is written in CLJC and it’s vital to our app architecture that we’re able to execute the same business logic in both the front- and back-end.
Hope this helps.