re-frame is a functional framework for building single-page applications in ClojureScript. It provides a centralized, immutable database that serves as the single source of truth for the entire application state, enforcing a strict unidirectional data flow where events trigger state transitions and subsequent view updates.
The framework distinguishes itself through a reactive signal graph and an interceptor-based middleware pipeline. By treating application logic as a sequence of data-driven events and declarative side effects, it decouples business logic from the view layer. This architecture allows developers to manage complex state transitions and external operations through pure functions, ensuring that side effects are executed by a separate interpreter rather than through imperative calls.
The system includes a comprehensive suite of capabilities for managing application architecture, including reactive data derivation, subscription-based view reconciliation, and event-driven state management. It supports advanced development workflows such as event tracing, state checkpointing, and the ability to stub side effects for isolated testing.
The project is designed for integration with React, utilizing virtual DOM reconciliation to efficiently update user interfaces. It provides a robust set of utilities for handling cross-cutting concerns, managing complex dataflow graphs, and coordinating asynchronous operations within a predictable, sequential event pipeline.
How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.
re-frame is a functional framework for building single-page applications in ClojureScript. It provides a centralized, immutable database that serves as the single source of truth for the entire application state, enforcing a strict unidirectional data flow where events trigger state transitions and subsequent view updates.
The main features of day8/re-frame are: Single Page Applications, Centralized State Stores, ClojureScript-React Bridges, Centralized State Management, Single-Page Applications, ClojureScript Implementations, Application Architecture and Logic, Application State Syncing.
Open-source alternatives to day8/re-frame include: effector/effector — Effector is a reactive state management library designed for building complex, event-driven applications. It functions… zerobias/effector — Effector is a reactive state management library and data flow orchestrator designed for building complex, event-driven… vuejs/vuex — Vuex is a centralized state management library for Vue.js applications. It provides a single source of truth for… reagent-project/reagent — Reagent is a framework for building web user interfaces using ClojureScript and React.js. It enables a functional… ngrx/platform — This project is a state management framework for Angular applications that provides a predictable state container. It… bailicangdu/react-pxq — react-pxq is a React Redux boilerplate and state-driven UI framework designed for building single-page applications.…
Effector is a reactive state management library designed for building complex, event-driven applications. It functions as a data flow engine that models application logic as a directed acyclic graph, ensuring that state updates propagate automatically through interconnected nodes. By utilizing atomic state updates and declarative unit composition, the library maintains data consistency and provides a predictable execution model for managing application state. The project distinguishes itself through its framework-agnostic architecture, which decouples business logic from user interface implem
Effector is a reactive state management library and data flow orchestrator designed for building complex, event-driven applications. It models application logic as a directed acyclic graph, where state updates and asynchronous side effects propagate automatically through declarative pipelines. By decoupling business logic from user interface layers, it allows developers to maintain state in independent containers that communicate via standard interfaces, ensuring the system remains framework-agnostic. The library distinguishes itself through its robust support for isolated execution scopes, w
Vuex is a centralized state management library for Vue.js applications. It provides a single source of truth for application data, ensuring consistent state across a component tree through a reactive data store. The system organizes the global state tree into independent, namespaced modules to prevent naming collisions and maintain code organization. It distinguishes between synchronous mutations for predictable state transitions and asynchronous actions for handling complex operations. The library includes cached getters for derived state, store lifecycle hooks for mutation interception, an
Reagent is a framework for building web user interfaces using ClojureScript and React.js. It enables a functional programming approach to declarative UI design, where HTML structures and component hierarchies are defined using vector-based Hiccup syntax instead of JSX. The project differentiates itself through a reactive state management system based on atoms. It tracks which components dereference specific state atoms to trigger automatic re-renders and provides state cursors to isolate updates to specific paths of a larger state atom. It also includes utilities for wrapping native JavaScrip