@notjustsilicon

This is a super useful walkthrough of the underlying system. Thank you very much! Based on the video, here is a summary of the steps that happen under the hood when cljs is evaluated with the help of nREPL:
  1. The user evaluates code in the editor.
  2. The code is delivered to nREPL.
  3. A middleware (shadow.cljs.devtools.server.nrepl/middleware or cider.piggieback/wrap-cljs-repl if using Figwheel) grabs the code and rather than sending it to Clojure for compilation and evaluation it is sent to the...
  4. ClojureScript compiler, which instead emits JavaScript.
  5. The ShadowCLJS server (or Figwheel server), which has a web socket open to the browser runtime, receives this js and sends it to the browser.
  6. The evaluation is carried out by a runtime evaluator, which when appropriate modifies the state of the browser (application) and also sends the evaluation result back to the...
  7. server (ShadowCLJS or Figwheel), which forwards it to...
  8. nREPL through which finally the...
  9. editor REPL receives the evaluation result for the user to inspect.

@9to5Magic

Thanks so much for doing this. I've been trying to connect to the browser repl from Neovim using Conjure and just getting confused. The explanation of how nrepl connects to the various repls will hopefully help me to get it going.

@eopjohnson7466

I liked all the questions on the internal plumbing and the brief real-world activities, like Tap, or the having to reloading the browser to allow shadow-cljs to connect. I also appreciated the clipping of the white space, to crank up the speed of the conversation. I have virtually no hands-on experience with Clojure but have read a book,  and have a background in JavaScript and felt I was able to 900% follow along with what you were doing, with PEZ explanations and your intentional questions that were very much the same things I was wondering. 👍🏼

@daryoushmehrtash7601

Very helpful.   Thanks.

@joshuaeichler-summers2173

Great video by the way!

Thanks for making it

@MohammodnazmuSakiB

Why prefer shadow-cljs over deps.edn?