HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
cljfx
cljfx
Clojure2019–2026
cljfx / cljfx

cljfx

Declarative, functional and extensible wrapper of JavaFX inspired by react and re-frame

19Distinct people
29Mentions
0Explicit recommenders
1.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Declarative, functional and extensible wrapper of JavaFX inspired by react and re-frame

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

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 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 year29 dated mentions

Observed mentions: 2019-01-01 14:03:50 UTC to 2026-04-23 17:25:42 UTC.

02462019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

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
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC725
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC505
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC303
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC606
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC404
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC110
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC211

What Hacker News says

29 sources
Awesome modern flexible framework for making GUIs. It's important to highlight that the it doesn't enforce any single model of how to hook up your GUI and state management. The built-in subscription model is fantastic, but you can do whatever suits you. A big change was added in v1.9.0 that's not really documented in the README https://github.com/cljfx/cljfx/blob/master/CHANGELOG.md#190-... With the new extension lifecycles you can pretty much design and hook up any GUI system you'd like. You can even have different GUI sub-trees have separate systems entirely. For instance I hooked up CLJFX with declarative Pathom state management using these new lifecycles: Small demo: https://github.com/kxygk/ednless/blob/master/pathomfx.clj
In Cljfx: A declarative desktop UI framework in Clojure
As an aside for Clojure users, there is a nice “declarative, functional and extensible” wrapper for JavaFX called cljfx[1] that has been around for some years now. When I tried it last time to prototype a desktop app, I found it really pleasent and simple to work with, it felt like a more modern way to build JavaFX GUIs. [1]: https://github.com/cljfx/cljfx
In Home to Anything JavaFX Related
More broadly, non-Electron apps have been uncommon for a while. I just don't work in the webspace and I need to write code that's relatively performant b/c it involves some numbercrunching. I understand it's all possible with Electron.. but it's a bit daunting to have a client-server web stack and multiple languages with some stuff in a local backend.. It's all a bit beyond me JavaFX was a nice solution that's crossplatform and near-native. It has a very nice react-like library in Clojure called `cljfx` https://github.com/cljfx/cljfx/
In FFM (Foreign Function and Memory API) Goes Final
Would be really awesome if JavaFX could work together with GraalVM and Clojure. Then I'd be in "desktop application development" nirvana, when I can ship binaries to all platforms and build the application itself with cljfx (https://github.com/cljfx/cljfx). Once every ~6 months for the last 2 years or something I've given it a try but there is always something broken or missing. Not sure what the status is right now.
In JavaFX 19
In Clojure you can use JavaFX through cljfx https://github.com/cljfx/cljfx/ I haven't used React, but I think it's very similar. You have a state atom and then a datastructure that represents the GUI and associated callbacks that modify the atom. So it ends up feeling very functional. It doesn't use hiccup, but it's a similar structure. I've got to say it was fantastic. The least painful GUI programming I've ever done. The core architecture isn't opinionated so there is a little boilerplate/plumbing to setup but then it's very smooth sailing. It even has a very handy memoization structure that allows you to seamlessly have intermediary derived states that update automatically. I release an app using it and it was very performant, used some Java CV libs and drew diagrams to the canvas and it was all very snappy. My only minor complaint was
Read the rest
that the final bundle was like 150MB, which given the scope of the app seemed a bit gross - but it's manageable. And as usual, buy default, the JVM gobbles up and doesn't release memory back to the OS which is annoying. But i think it's surmountable and In theory you could trim that all further with GraalVM. Just out of the box it's not the best for little hello-world apps
In The decline and fall of Java on the desktop
> which still hasn't caught up to modern trends (static types, asynchronism, etc...) Ignoring the fact that your modern trends aren't modern. I don't think any of these statements really are true for Lisp as a family of languages: For example Racket has typed Racket. https://docs.racket-lang.org/ts-guide/ For asynchronicity Clojure has clojure.async https://github.com/clojure/core.async > and with a very poor tooling (lack of IDE's) Lisps have fantastic support in Emacs and VSCode and are in general simple enough languages that often the heavyweight of an IDE is not needed. But if you want IDEs there are: Dr. Racket - https://docs.racket-lang.org/drracket/index.html Cursive - https://cursive-ide.com/ Emacs/Cider - https://docs.cider.mx/cider/index.html > and library ecosystem (building websites, parallelism, GUI, etc...) Websites - Reagen
Read the rest
t, a ClojureScript wrapper for React https://github.com/reagent-project/reagent GUIs - Clojure has the entirety of Java to steal GUIs from - Ex: https://github.com/cljfx/cljfx Just because the Lisp family is old and has a simple syntax does not mean it's an antiquated language or that there are not new developments going on there.
In The Clojure Mindshare (2019)

Showing the 15 most recent of 29 sources. Enable JavaScript to search and browse every indexed mention.

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.