HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
bhauman
lein-figwheel
Clojure2014–2022
bhauman / lein-figwheel

lein-figwheel

Figwheel builds your ClojureScript code and hot loads it into the browser as you are coding!

18Distinct people
20Mentions
0Explicit recommenders
2.9KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Figwheel builds your ClojureScript code and hot loads it into the browser as you are coding!

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 10:49:33 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year20 dated mentions

Observed mentions: 2014-11-03 23:01:00 UTC to 2022-07-30 21:00:34 UTC.

02462014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC101
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC707
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC202
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC404
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC303
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC110
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
lein-figwheel Figwheel builds your ClojureScript code and hot loads it into the browser as you are coding! A new Figwheel!! There is a new Figwheel in town! Figwheel Main is a complete re-write of Figwheel and represents the latest and greatest version of Figwheel. It works great with Leiningen or the new Clojure CLI Tools. So head over to Figwheel Main to give it a try. lein-figwheel Get a quick idea of what figwheel does by watching the 6 minute flappy bird demo of figwheel. Learn even more by watching a 45 minute talk on Figwheel given at ClojureWest 2015. Read the introductory blog post. Support Figwheel If Figwheel has fundamentally redefined the way you do front-end work please take a moment and support it: Donated so far:     2015: $73     2016: $2752     2017(through October): $1979 Current version: Features Live code reloading If you write reloadable code, figwheel can facilitate automated live interactive programming. Every time you save your ClojureScript source file, the changes are sent to the browser so that you can see the effects of modifying your code in real time. Supports Node.js You can use figwheel to live code ClojureScript in Node.js! Static file server The inclusion of a static file server allows you to get a decent ClojureScript development environment up and running quickly. For convenience there is a :ring-handler option so you can load a ring handler into the figwheel server. Live CSS reloading Figwheel will reload your CSS live as well. Live JavaScript reloading Figwheel can live reload your JavaScript source files. Heads up display Figwheel has a non-intrusive heads up display that gives you feedback on how well your project is compiling. By writing a shell script you can click on files in the heads up display and they will open in your editor! Descriptive Errors with Code Context Figwheel provides descriptive compiler errors that point to where the error is in your code. These errors appear in the REPL as well as the heads up display. First Class Configuration Error Reporting It can be quite daunting, when you are configuring a tool for the first time. Figwheel currently offers best-of-class configuration error reporting that will help you if you happen to misconfigure something. Built-in ClojureScript REPL When you launch Figwheel it not only starts a live building/reloading process but it also optionally launches a CLJS REPL into your running application. This REPL shares compilation information with the figwheel builder, so as you change your code the REPL is also aware of the code changes. The REPL also has some special built-in control functions that allow you to control the auto-building process and execute various build tasks without having to stop and rerun lein-figwheel. Robust connection Figwheel's connection is fairly robust. I have experienced figwheel sessions that have lasted for days through multiple OS sleeps. You can also use figwheel like a REPL if you are OK with using print to output the evaluation results to the browser console. Message broadcast Figwheel broadcasts changes to all connected clients. This means you can see code and CSS changes take place in real time on your phone and in your laptop browser simultaneously. Respects dependencies Figwheel will not load a file that has not been required. It will also respond well to new requirements and dependency tree changes. Calculates minimal reload set Figwheel does its best to only reload what needs to be reloaded. This minimizes the surface area of dynamically reloaded code, which in turn should increase the stability of the client environment. Doesn't load code that is generating warnings If your ClojureScript code is generating compiler warnings Figwheel won't load it. This, again, is very helpful in keeping the client environment stable. This behavior is optional and can be turned off. Try Figwheel Make sure you have the latest version of leiningen installed. You can try figwheel out quickly with the flappy bird demo: git clone https://github.com/bhauman/flappy-bird-demo.git then cd into flappy-bird-demo and type lein figwheel You can now goto localhost:3449/index.html and open up src/flappy_bird_demo/core.cljs with your favorite editor and start coding. Make sure you open your browser's development console so you can get feedback about code reloads. If you would prefer to greenfield a new project you can use the figwheel leiningen template. lein new figwheel hello-world Or optionally: lein new figwheel hello-world -- --om ;; for an om based project lein new figwheel hello-world -- --reagent ;; for a reagent based project Learning ClojureScript If you are brand new to ClojureScript it is highly recommended that you do the ClojureScript Quick Start first. If you skip this you will probably suffer. There is a lot to learn when you are first learning ClojureScript, I recommend that you bite off very small pieces at first. Smaller bites than you would take when learning other languages like JavaScript and Ruby. Please don't invest too much time trying to set up a sweet development environment, there is a diverse set of tools that is constantly in flux and it's very difficult to suss out which ones will actually help you. If you spend a lot of time evaluating all these options it can become very frustrating. If you wait a while, and use simple tools you will have much more fun actually using the language itself. Quick Start If you are new to Figwheel here is a Quick Start tutorial. Working through this Quick Start will probably save you a tremendous amount of time. Getting Help You can get help at both the ClojureScript Google Group and on the #clojurescript, #lein-figwheel and #beginners Clojurians Slack Channels Usage Make sure you have the latest version of leiningen installed. Then include the following :dependencies in your project.clj file. [org.clojure/clojure "1.9.0"] [org.clojure/clojurescript "1.10.238"] Then include lein-figwheel in the :plugins s
Read the full README on GitHub

What Hacker News says

7 sources
We have a good sized clojurescript SPA in production, and it has been a real joy to work with. We are using Reagent, which when coupled with FigWheel[0] goes a long way toward mitigating slow startup, as well as "tooling" issues in general. The live reloading is a fantastic experience. Sourcemaps have been a big help for debugging in general, though we have had several instances of bugs taking a bit of effort to get to the bottom of because of some deep javascript stacktraces -- for the most part the java side of the compiler hasn't been a big deal. Many of these have been type related bugs, so we're looking into adding some schemas[1] going forward where it seems appropriate. Despite those issues, it has overall been a huge productivity boost. We've also witnessed this story only improving with time. The community truly is fantastic
Read the rest
. Lots of very smart, friendly folks doing interesting things. [0] https://github.com/bhauman/lein-figwheel [1] https://github.com/Prismatic/schema
In What Holds Me Back from ClojureScript
Oh definitely think the prediction is absurd. I didn't realize it wasn't obvious from my post. The problem I outline is not that static typing involves additional boilerplate. It's the inherent additional cognitive load it introduces. A smarter compiler isn't going to help you there. The fallacy of Elben's argument is in the assumption that there will be only advances in the field of static typing. Meanwhile, people working with dynamic languages are improving their tools at an astonishing pace. For example, working with an editor like Cursive provides many refactoring options you could only expect from a static language a few years ago. The biggest benefit though comes from interactivity though. Dynamic languages lend themselves extremely well to providing live coding environments. This allows for tools like the REPL and things like Figw
Read the rest
heel https://github.com/bhauman/lein-figwheel and this kind workflow will be difficult to match for static languages.
In The sky is not falling – about the supposed end of dynamic languages
I was mostly referring to development paradigms and methodology in my original post, but in terms of tooling, I personally haven't see any tooling on the native side even approach the increased productivity provided by the instantaneous feedback loops that countless hot-reload implementations can offer for the web. https://github.com/gaearon/babel-plugin-react-transform/ http://gaearon.github.io/react-hot-loader/ https://github.com/bhauman/lein-figwheel
In React Native for Android
Links to some of the tools used clojure and clojurescript https://github.com/clojure-emacs/clj-refactor.el (refactoring) https://github.com/clojure-emacs/cider (IDE) https://github.com/bhauman/lein-figwheel (code reloading) emacs https://github.com/magit/magit (the interface to Git) https://github.com/abo-abo/avy (jumping around) https://github.com/magnars/expand-region.el (marking stuff) https://github.com/magnars/multiple-cursors.el (placing cursors at similar stuff and editing all at once)
In Parens of the Dead
> [C]ould I start using something like ClojureScript instead of Javascript and be able to use the libraries I currently use, like I would with coffeescript? Clojure has an opinionated idea about how data should be handled and changed over time. This interacts very poorly with data binding so if your current libraries are Ember, Angular, Knockout, or the like then the answer is no. You can call into any JS library fairly easily so if you want to use jQuery, d3, three, or whatnot then it's doable but not in the "it's just javascript" way of coffeescript. On the other hand, Clojure fits into the React model like toothpaste in tubes and the community has switched almost universally (save the Hoplon guys) to one of the React wrappers. I recommend starting with Reagent [1]. Om has more mindshare but Reagent's model is considerably simpler. If y
Read the rest
ou need more structure around the app, check out Re-frame [2]. In either case you want to set up your project with figwheel [3] (lein new figwheel <project>) and add reagent/re-frame as a dependency. [1] http://holmsand.github.io/reagent/ [2] https://github.com/Day8/re-frame/ [3] https://github.com/bhauman/lein-figwheel I encourage you to give the langauge a try but I don't really recommend Clojurescript at work unless you're already working at a Clojure shop. The language is nicer than Javascript and I care enough about that to take a job working in cljs full time but the language isn't mature nor enough of a productivity boost over js (especially babelized js) to justify saddling your company with a niche language maintenance burden when you leave. If you're going to evangelize, I recommend starting in Clojure where the win over Java is much, much bigger. P.S. I use Vim for everything non-lisp but I use Emacs with Evil mode for lisps. Evil mode is bar none the best vim emulator I've used and is the only one I can stand to use on an extended basis.
In ClojureScript Unraveled

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.