re-com gives Reagent the widgets a desktop class SPA needs
A ClojureScript library of reusable components for Reagent
At a glance
- What is it?
- re-com is a ClojureScript component library for Reagent that provides dropdowns, date pickers, popovers and tabs plus the layout components to arrange them, and it makes no attempt at mobile, which it says plainly in its own documentation.
- Who is it for?
- re-com suits a ClojureScript team building a desktop or tablet style single page application on Reagent, especially one that wants Material Design icons and a Bootstrap look without assembling a component set from several libraries.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 23 days ago.
- What is it written in?
- Mainly Clojure, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A desktop focus, stated in the documentation as a warning
The README carries a section titled Warning: No Mobile Focus, and the content is one sentence: none of the components have been designed with mobile in mind, followed by the observation that the project said it had a desktop app focus. That honesty is the most useful thing in the document for an evaluator, because it defines the scope before you spend an afternoon discovering it. The stated aim is to provide the UI basics needed to build a desktop class single page application, and the library delivers exactly that set: familiar widgetry components such as dropdowns, date pickers, popovers and tabs, plus layout components that arrange widgets vertically and horizontally, place them within splitters, and put borders around their children, which the README says can be nested arbitrarily to create sophisticated layouts. The audience is a ClojureScript team on Reagent who wants a coherent component set rather than a pile of unrelated libraries.
Bootstrap for the layout, Material Design Icons for the glyphs
The visual language is a deliberate mixture rather than a single design system. The README describes it as a mostly Bootstrap look, mixed with some Material Design Icons. The consequence for a consuming application is that you inherit Bootstrap's CSS dependency, and the README says so when it walks through the setup: bootstrap is needed, assumedly via a CDN, and there is a link to the 3.3.5 stylesheet on cdnjs. The icon font and the re-com stylesheet are referenced from the assets folder, and the ordering matters, since re-com.css has to appear after bootstrap.css for the overrides to take effect. The Roboto font families are also referenced, and the README notes that this can be overridden relatively easily. So the visual result is Bootstrap 3 with Material Design glyphs, which is a specific look that is not what a team starting fresh in 2026 would choose by default.
The demo app is the documentation, and the source links are built in
The README's advice is to start by looking at the demo, and it describes what the demo provides: detailed documentation for each component and interactive pages showing component use and flexibility. The navigation trick is worth knowing about. When the demo app is running, look to the right of each page title and there are hyperlinks that take you to the associated source code, which is a convenient way to reach either the components themselves or the demo code. That means the demo is not just a gallery, it is the index into the implementation. The repository layout reinforces this, with src/re-com holding the library itself and the components, src/re-demo holding the demo app that documents the components and shows how to use them, and test/ holding cljs.test suites for many components, with examples such as box_test.cljs and selection_list_test.cljs. There is also a docs/ directory with notes about development tools and release procedures, and a scripts/ directory whose utilities include add-at-macro for adding the at macro to legacy codebases.
The build runs on babashka, not on a long JVM session
The commands section lists three programs you need installed, npm, clojure and babashka, and then the workflow is short. The repository is fetched with git clone and you change into the re-com directory.
git clone https://github.com/day8/re-com.gitcd re-comThe demo is prepared with a single task.
bb watchThat task does a clean and a compile, and you wait until [:demo] Build completed. is displayed in the console, which indicates the dev HTTP server is ready, and then open http://localhost:3449/ in the browser. The tests have their own entry point, bb test, which cleans, compiles the tests and then compiles in release mode as a basic optimized build check. The release compile in the test task is a neat trick, because it means the test run doubles as a check that the library still builds under advanced optimizations. Deployment to an S3 bucket is bb deploy-aws, and the README notes it only works if you have the right credentials in your environment.
Adding re-com to an application is a dependency and three link tags
For a fast start, the README points at the re-frame-template project, with the +re-com option when using it, and re-com itself is published on Clojars, so it goes into the project.clj dependencies. You then require the re-com.core namespace, which exposes all the API functions documented in the re-demo example app. The assets have to be included: the run/resources/public/assets folder holds the CSS, fonts and JavaScript you will need, and the README links to it as a model for your index.html. On top of the Bootstrap link come the icon font stylesheet and the re-com stylesheet, in that order, and then the Roboto font links. The font markup is given as two separate link tags for the Roboto family and the Roboto Condensed family.
<link rel="stylesheet" href="assets/css/material-design-iconic-font.min.css">
<link rel="stylesheet" href="assets/css/re-com.css">One thing you do not need to add is React itself, because the README notes that Reagent comes bundled with a matching version of ReactJS.
The gap list is the honest measure of what is missing
The README ends with a section listing the components that are not there, and it is short enough to be worth quoting rather than paraphrasing. Menus, where there is a dropdown but no cascading menus. An accordion. Maybe a dockable left hand side navbar. Drag and drop. And an entry simply labelled anim. That list is more informative than the feature list, because it tells you what a project built on re-com will have to add. A cascading menu and a dockable sidebar are both structural, meaning they are the kind of component where a substitute from another library usually does not drop in, and drag and drop is the hardest of the group to reimplement well. The last entry is telling in a different way, since an animation component is not so much missing as deliberately absent.
Bundle size and the demo
The README is upfront about code size, saying the project has not been worried too much about it because other design goals have taken precedence. The illustration given is the main demo app, which includes every component plus all the demo code and a good deal of explanatory text, coming to about 167K compressed with :optimizations :advanced, or 700K uncompressed, and that figure includes ReactJS plus the ClojureScript libraries and runtime, so everything. The README then adds a correction: those numbers no longer match the demo app, because the demo was changed to show off some of the debug features and the project backed away from fully advanced, minified compilation. So the number in the documentation is stale in both directions, and the honest reading is that the library ships what a desktop focused component set needs and the surrounding demo code is not the shipping artefact. For a team with a bundle budget, the 700K uncompressed figure is the one to reason from, and the missing component list predicts where more will be added.
Editorial conclusion
re-com suits a ClojureScript team building a desktop or tablet style single page application on Reagent, especially one that wants Material Design icons and a Bootstrap look without assembling a component set from several libraries. It is the wrong choice for a mobile first product, because the README states plainly that no component has been designed with mobile in mind, and it is the wrong choice if bundle size is a primary constraint, because the project says it has not been too worried about code size. Before adopting it, look at the missing components list, which includes menus, accordion, drag and drop, and decide whether to fill those gaps yourself. The last push was on 2026-09-30 and the current release is v2.29.5 from the same day.
Frequently asked questions
What is re-com and which framework does it target?
re-com is a ClojureScript library of reusable UI components for Reagent. It provides widgetry such as dropdowns, date pickers, popovers and tabs, layout components that arrange and border their children, and a mostly Bootstrap look mixed with Material Design Icons.
How do I run the re-com demo app?
Clone the repository, change into the re-com directory, and run bb watch, which does a clean and a compile. Wait for [:demo] Build completed. in the console and then open http://localhost:3449/. Running the tests is bb test, and deploying to an S3 bucket is bb deploy-aws with the right credentials in the environment.
Does re-com work on mobile?
The README has a section titled Warning: No Mobile Focus and states that none of the components have been designed with mobile in mind, because the project has a desktop app focus. It also says code size has not been a priority, citing the demo app at about 167K compressed with advanced optimizations.
Which components does re-com not have?
The README lists the missing ones: menus, since there is a dropdown but no cascading menus, an accordion, maybe a dockable left hand side navbar, drag and drop, and an entry labelled anim. A separate project, re-com-tailwind, provides an edition of re-com compatible with tailwindcss.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/day8-re-com)Was this useful?