Figwheel provides a fantastic developer experience and if you're not using it already I highly encourage you to give it a shot. I found that in most cases live code reloading is sufficient for my workflow, but there are occasions where I do want to have an actual REPL available.

This mostly comes up when I'm working with code that's not directly tied to rendering UI components and it can quickly devolve into println debugging.

You probably noticed that Figwheel starts a REPL in the terminal when it runs. However, this REPL is not terribly useful in practice. What would be better is to have a REPL that's connected to the editor, such as Cursive or Emacs, so that you can evaluate the code you're working on the same way you would with Clojure.

Luckily, getting this to work turns out to be a pretty simple affair. First thing we need to do is to make sure that the Figwheel config in project.clj has the :nrepl-port key set as seen below:

:figwheel {:http-server-root "public" :server-port 3449 :nrepl-port 7002 ;;start nREPL on port 7002 :css-dirs ["resources/public/css"] :ring-handler yourapp/handler}

When you run lein figwheel the nREPL server will become available and you can connect your editor to it at localhost:7002 , or whatever port you've specifcied. Once the nREPL is connected you'll have to run the following commands there:

user> (use 'figwheel-sidecar.repl-api) user> (cljs-repl)