Continuing the series on the notable changes inCIDER 2.0, let’s talk aboutClojureScript - forever the trickier sibling in the CIDER family.I’ll start with a confession I’ve made before: I rarely use ClojureScriptmyself, which is a big part of why its support in CIDER has historically laggedbehind Clojure’s. Every “State of CIDER” survey reminds me of this, usually inthe comments section, occasionally in all caps. So in the 2.0 cycle I decidedto stop feeling vaguely guilty about it and actually do something - acrossevery layer of the stack: CIDER itself, cider-nrepl, andPiggieback.First, a strategic decisionThe most important ClojureScript change in CIDER 2.0 isn’t a feature - it’s adecision about what not to build. Some of CIDER’s most powerful tools (thedebugger, enlighten, tracing, profiling) are deeply tied to JVM runtimeintrospection, and porting them to ClojureScript would be a massive effort witha poor cost/benefit ratio. Rather than keeping them in eternal “maybe someday”limbo, we’ve explicitly scoped them as Clojure-only and focused the actual workon the things cljs users hit every day: evaluation, testing, error reporting,and clear behavior everywhere else.That last part matters more than it sounds. Historically, invoking aJVM-only command in a ClojureScript REPL would fail in some confusing way - acryptic error, a JVM-flavored result, or silence. Now the ops themselves reporta clojure-only status, and CIDER tells you plainly that the command isn’tsupported for ClojureScript. Knowing what a tool won’t do is half of trustingit.What actually got better The regular test commands (cider-test-run-ns-tests andfriends) now work in ClojureScript REPLs, asynchronous cljs.test/asynctests included. Previously CIDER just refused, and you were stuck evaluating(run-tests) by hand like an animal. Expanding your own macros (e.g.ones brought in via :refer-macros) used to silently echo the form backunexpanded - a bug filed all the way back in2017. The compilerenvironment is now threaded to the analyzer properly, and it just works. cider-nrepl now resolves theClojureScript compiler environment through a provider chain, with a dedicatedshadow-cljs provider - so the static-analysis ops keep working in a shadowREPL that never loads Piggieback. The new cider-tap viewer works with ClojureScripttoo: a runtime helper buffers tapped values and the JVM side streams them toEmacs. (Tapped cljs values aren’t inspectable - they live in the JS runtime -but you see them as they happen.) ClojureScript stack frames now render theirns/fn properly instead of degrading to nil/nil, and unqualified core varsresolve against cljs.core rather than falling back to clojure.core(which quietly broke things like indentation metadata). A recent ClojureScript on the classpath (whoseClosure compiler wants JDK 21+) no longer crashes cider-nrepl at startup onan older JDK - you get a Clojure-only session instead of no session. Piggieback itself got a round of bug fixes in the0.6.x/0.7.0 releases - it’s easy to forget it exists (which is rather thepoint of it), but it powers most cljs REPLs CIDER talks to.The documentation kept pace too: the newfull-stack Clojure + ClojureScript guidecovers the two-REPLs-one-project setup that trips up nearly everyone, and theClojureScript docs got ageneral refresh.An unexpected assistFun aside: this is the area where AI coding agents helped me the most duringthe 2.0 cycle. My ClojureScript experience is limited, but between theexcellent bug reports from the community and the ability to quickly prototypeand test fixes against real shadow-cljs and figwheel setups, problems that hadbeen “someone who knows cljs should look at this someday” for years finally gotfixed. Make of that what you will.What’s nextI keep pondering some form of “native” shadow-cljs support, given thatshadow-cljs is what most ClojureScript users actually run these days. That’sstill very much in the hammock phase, so don’t hold me to it - but thedirection is clear: fewer moving parts, clearer errors, and honesty aboutwhat’s supported.If you’re a ClojureScript user, I’d genuinely love to hear how 2.0 feels inyour daily work - the feedback loop is what keeps this improving. Keep hacking!Articles in the Series CIDER 2.0: Sky is the Limit Simplifying Session Management in CIDER Stepping Through Macros in CIDER Making CIDER More Discoverable Modernizing CIDER's Completion Closing the Find-Usages Gap in CIDER Sharpening CIDER's Debugging Tools Leveling Up CIDER's ClojureScript Support