A ClojureScript framework for building user interfaces with a data-oriented, functional design, leveraging React.
re-frame is a ClojureScript framework for building user interfaces with a data-oriented, functional design. It leverages React for rendering but focuses on events as the causal mechanism and views as purely reactive, aiming to solve the challenges of scaling Single-Page Applications while reducing technical churn. It provides a stable, mature alternative to frequently changing JavaScript frameworks.
ClojureScript developers building scalable Single-Page Applications who value functional programming, predictable state management, and long-term framework stability.
Developers choose re-frame for its data-oriented, event-driven architecture that enhances productivity and scalability, backed by the stability of ClojureScript and a design that avoids the constant churn of the JavaScript ecosystem.
A ClojureScript framework for building user interfaces, leveraging React
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Released in 2015 and used in production apps over 40K LOC, re-frame offers long-term stability that avoids the frequent churn of JavaScript frameworks, as highlighted in the README.
Its architecture separates events as causal mechanisms from reactive views, making it well-suited for large Single-Page Applications with complex state, emphasizing predictable flow.
Emphasizes immutable data and pure functions for predictable state management, reducing bugs and easing debugging, as noted in its data-oriented design philosophy.
Leverages ClojureScript's Lisp heritage for concise syntax and powerful abstractions, boosting developer efficiency, as referenced in the README's mention of Paul Graham's competitive advantage.
Requires knowledge of ClojureScript, which has a smaller community and ecosystem than JavaScript, potentially limiting library availability and increasing integration effort for external tools.
While it uses React for rendering, re-frame avoids React's causal patterns like hooks, which might conflict with teams wanting to fully leverage modern React features for component logic.
Setting up a ClojureScript project with re-frame involves more tooling and configuration than typical JavaScript setups, as indicated by the need for specific build tools and dependencies.