RS-X is a reactive framework that enables you to think in a more declarative way about your data and operations:
- You define your data model
- You define your operations via expressions
- You bind the expressions to your data model
- You can now just manipulate the data, and the expressions will update automatically
With RS-X, you don’t need to wire everything through useState, useEffect, or derived state.
Your data model itself becomes reactive, and React simply renders the result.
What changes with RS-X in React
Instead of thinking in terms of:
- syncing state
- effects
- memoized selectors
You work directly with your data model.
When the model changes:
- dependent expressions update automatically
- React re-renders only where needed
No extra glue code.
Why this is different
- No need to mirror your data into React state
- No
useEffectchains to keep things in sync - No derived state bugs
- You update the model → the UI follows
RS-X tracks dependencies at the expression level, not the component level.
Async is first-class
RS-X also handles asynchronous data naturally:
- Promises in your model are resolved reactively
- Expressions update when async values arrive
- No loading-state orchestration required
How it fits into React
RS-X doesn’t replace React — it simplifies what React has to manage.
React stays focused on rendering.
RS-X handles:
- reactivity
- dependency tracking
- expression evaluation
Why I built this
I wanted:
- reactive data without a global store
- fewer hooks and less boilerplate
- a model-driven way of thinking
- predictable updates without over-rendering
React support makes that approach practical in real applications.
You can see it in action on StackBlitz: React demo
Feedback is very welcome.
— Robert
Top comments (0)