Learn Reagent

Why ClojureScript and Reagent?


Remove complexities from your code.

CLJS ⁝ Reagent
  (ns counter
    (:require [reagent.core :as r]))

  (def click-count (r/atom 0))

  (defn counting-component
      "The state has a value: " @click-count
       {:type "button"
        :value "Click me!"
        :on-click #(swap! click-count inc)}]])
JS ⁝ React
  import React, { Component } from 'react'

  class Counter extends Component {
    constructor(props) {
      this.state = { clickCount: 0 };
      this.incCounter = this.incCounter.bind(this);

    incCounter() {
      this.setState(prevState => ({
        clickCount: prevState.clickCount + 1

    render() {
      const { clickCount } = this.state
      return (
          The state has a value: {clickCount}
            value="Click me!"

  export default Counter


Effortless integration via shadow-cljs
with JavaScript and npm.

  npm install --save firebase
  (ns fb.init
    (:require ["firebase/app" :as firebase]))

  (defn firebase-init
      #js {:apiKey      "your-api-key"
           :authDomain  "your-auth-domain"
           :databaseURL "your-database-url"
           :projectId   "your-project-id"}))
  import firebase from 'firebase/app';

  const firebaseInit = firebase.initializeApp({
    apiKey:      'your-api-key',
    authDomain:  'your-auth-domain',
    databaseURL: 'your-database-url',
    projectId:   'your-project-id'
  export default firebaseInit;


Sturdy build tools.
ClojureScript uses Google Closure Tools
for code minification and tree shaking.
Who else uses Closure Library?


Clear and in detail error messages with shadow-cljs,
leaving no room for confusion or doubt.

error messages in shadow-cljs


Convenient plugins for all major editors.



Build GIGGIN an app that shows local gigs and updates in real-time.

Screenshot of Giggin app


 Reagent components

 Form 1, 2, and 3 components

 Reagent Atoms

 Immutable Data Structures

 List comprehension


 Threading macros


 JavaScript & npm interop

Best Practice

The code has been reviewed by:

Daniel Compton
 Daniel Compton
 core contributor re-frame
Thomas Heller
 Thomas Heller
 creator shadow-cljs
Juho Teperi
 Juho Teperi
 core contributor reagent




 30 HD Reagent videos

 +3h HD Content

 Immutable Data Structures

 List comprehension


 Threading macros

 AJAX requests

 JavaScript & npm interop

 Firebase DB & Authentication

 Production Build & Deployment

Reagent + re-frame


 94 HD videos (30 Reagent and 64 re-frame)

 +13h HD videos (+3h Reagent and +10h re-frame)

 Everything in Reagent and additionally:

 re-frame course

 application state db — app-db

 effects — db & fx

 cofx & inject-cofx

 dispatching events




 re-frame http-fx & 10x


 db vs. fx


What will I learn?

The focus is on ClojureScript and Reagent. We'll not touch any CSS nor create any endpoints, everything is taken care of.

Are these courses right for my skill level?

If you have any experience with Web Development (HTML, CSS, JS) you won't have any problems picking up ClojureScript with Reagent. You will be surprised how much simpler, in setup and use, it is compared to JavaScript.

How long do I have access to the course?

How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.

What if I am unsatisfied with the course?

We believe that after watching some of the Free videos you will get pretty good feel about the course. That said, if after watching few more videos from the Pro course you are unsatisfied with your purchase, get in touch—we are able to provide full refund.

How long are the courses?

Free is 1h 07m and Pro is 3h 14m minutes.

How is this course different?

Where most of the courses focus on some parts of a language or a library, this course is presented in the form of building an app. We focus on building and shipping things—learning by doing.

Does this course support Open Source?

Yes! By buying this course you are supporting Open Source Projects. 10% of profits will be transferred to Clojurists Together to fund critical Clojure and ClojureScript open source projects.

Is it best practice?

Yes! The content of the course has been reviewed by experts: Juho Teperi (GitHubTwitter), Thomas Heller (GitHubTwitter), and Daniel Compton (GitHubTwitter).

Who created this course?

Jacek Schae (GitHubTwitter) is a software developer based in Switzerland. During his quest to write better software he found Clojure and ... was puzzled. How come such a small amount of people in Web Dev talks about it? Since then he couldn't stop thinking how he could support the Clojure community to spread the word about all sublime ideas in Clojure.

I have another question …

Please get in touch!


What people are saying about the course?

I watched the first 6 videos now and I'm really liking it. Your explanations are very good, and I like how you show multiple ways of doing things (map vs list comprehension)

Up until this point no Clojure experience is necessary as every thing introduced is explained. I even went for the pro package :)

Shidima source: reddit

Had a brief look at @JacekSchae's free course on ClojureScript and Reagent, quality materials there. Go see it now https://www.jacekschae.com/learn-reagent-free … Cool thing is that part of the Pro course price goes to support OSS projects in @cljtogether org

Roman Liutikov source: twitter

… Thanks for a great course. I have toyed with clojurescript but needed a bit more guidance around best practice before actually using it in anger.

In particular, I would not have known shadow-cljs was such a great choice over lein.

Connecting with firebase sealed the deal for me. Already got a real app underway. …

Rory C. source: email

… Helped a non-frontend person like me get up to speed in the world of frontend apps.

Thanks for putting together a great set of video tutorials to get started with Reagent and wow audiences with the power of React! …

Avram A. source: email

I finished the course a couple of days ago. Just wanted to say I found it awesome.

One thing I would have liked to see is more of the workflow using the repl. On the one hand I really appreciated how straight forward it seemed you getting to every point, but on the other hand I'd like to see the 'experimentation' on the repl while evolving an app.

Thanks for the great experience.

Diego R. Q. source: email

Awesome course on Reagent/ClojureScript https://www.jacekschae.com/learn-reagent-free … following this surprised me, with new knowledge, easy & cool ways I can approach ReactJS with functional clojurescript magic.

Kudos @JacekSchae #reactjs + #Clojure = Wonders

Dan Jay source: twitter

@JacekSchae's Learn Reagent course is wonderful! The course is approachable for beginners, can help round-out the edges for regular cljs users, and can be used as a common resource for production-ready teams. Highly recommended. https://www.learnreagent.com/

Matthew Jaoudi source: twitter

Starting a ClojureScript project finally clicked with me as I was following along the amazing https://www.learnreagent.com/ course. Thanks @JacekSchae for the great work! #clojure #reagent

Ben Thouret source: twitter

Thank you @JacekSchae to spreading the world with fabulous #Clojure #Reagent #CLJS tutorials ! I'm new in Clojure and just finish your course http://learnreagent.com last week and learned so much ! Masterpiece...Really !

Mike Salihi source: twitter

Learning a lot about Reagent and re-frame with these courses: https://www.learnreagent.com https://www.learnreframe.com Would highly recommend them! #clojurescript #react #shadow-cljs cc @JacekSchae

Marc Jeanson source: twitter