It's not that difficult to write a library that runs on both.
But there are differences in the runtimes, of course.
Some examples:
https://github.com/stuartsierra/component https://github.com/plumatic/schema (uses .cljx, the precursor to .cljc)
(ns com.stuartsierra.component (:require [com.stuartsierra.dependency :as dep] [com.stuartsierra.component.platform :as platform]))
And that this:
#?(:clj (defmethod clojure.core/print-method SystemMap [system ^java.io.Writer writer] (.write writer "#<SystemMap>")) :cljs (extend-protocol IPrintWithWriter SystemMap (-pr-writer [this writer opts] (-write writer "#<SystemMap>"))))
It's not that difficult to write a library that runs on both.
But there are differences in the runtimes, of course.
Some examples:
https://github.com/stuartsierra/component https://github.com/plumatic/schema (uses .cljx, the precursor to .cljc)