A small, simple, and immutable ORM for managing relational data in Redux stores.
Redux-ORM is a small, immutable Object-Relational Mapping library for managing relational data within a Redux store. It simplifies handling normalized state by providing a declarative API to define models, relationships, and queries, reducing the complexity of writing reducers for interconnected data. It solves the problem of maintaining consistency and performance when dealing with relational data in Redux applications.
Frontend developers building Redux applications with complex, relational state structures, such as dashboards, CRUD interfaces, or data-intensive web apps.
Developers choose Redux-ORM because it offers a specialized, lightweight ORM tailored for Redux, with built-in immutability and seamless integration. Its declarative model definitions and session-based updates simplify state management compared to manual reducer logic, while maintaining performance through smart memoization.
NOT MAINTAINED – A small, simple and immutable ORM to manage relational data in your Redux store.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
All updates produce new state objects, ensuring predictability and full compatibility with Redux's core principles, as highlighted in the README's philosophy section.
Models are defined using ES6 classes with clear field and relationship declarations (e.g., fk, many), reducing boilerplate for relational data, as shown in the usage examples.
Includes utilities like createReducer and createSelector that simplify reducer logic and enable smart memoization for queries, directly integrating with Redux workflows.
Selectors recompute only when accessed state branches change, improving performance in React apps by preventing unnecessary re-renders, as demonstrated in the React integration section.
The ORM abstraction is explicitly admitted to be less performant than writing reducers by hand, adding latency for high-frequency updates in complex applications.
It increases the build size of your project, which is a caveat mentioned in the README, making it unsuitable for lightweight or performance-critical deployments.
Minor versions before v1.0.0 can include breaking changes, as noted in the changelog section, posing a risk for production codebases without careful version pinning.