how I've made use of Clojure's clojure<>clojurescript code sharing functionality in practice (ie. cljc files):
library-like things, that have use in both clj and cljs
(ex. a bespoke sorting function, combinatorics, etc.)
library-like things, that paper over minor differences between clj and cljs
(ex. generating a random uuid, some math stuff)
for app-like projects, sharing some code between front and back-end
particularly "domain" related stuff, like schemas, some functions
for app-like projects, where we've taken a "feature-based" code organization approach, where we co-colocate clj and cljs functions that are related to the same feature, but they each run in their respective run-time (front- vs back- )