redux-xstate-poc
redux-eggs
redux-xstate-poc | redux-eggs | |
---|---|---|
6 | 2 | |
89 | 71 | |
- | - | |
2.6 | 3.8 | |
over 2 years ago | 9 months ago | |
TypeScript | TypeScript | |
- | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
redux-xstate-poc
-
JavaScript State Machines and Statecharts
Very doable, but not the most ideal syntax, since `createSlice` is focused on "here's an action / thing that happened, here's the reducer that handles that".
On the flip side, you can also use XState state machines as Redux reducers. A state machine is, after all, a function that takes a current state value + some event, and returns a new state.... exactly the same as a reducer function!
David and I have been saying for a while that we'd like to have a more official integration between XState and Redux. A while back, Matt Pocock put together an proof of concept for what a `createXStateSlice` might look like [1]. I actually sat down with David a couple weeks ago and we did some further design discussions about the possibility of using the `@xstate/fsm` package (a smaller version of XState's logic) as a starting point, and generating RTK actions based on that. No code yet, but it seems feasible.
[0] https://dev.to/davidkpiano/redux-is-half-of-a-pattern-1-2-1h...
[1] https://github.com/mattpocock/redux-xstate-poc
-
The new wave of React state management
Fun fact: one of the XState devs did a proof-of-concept showing how to use XState state machines as Redux reducers and integrate the side effects handling as a middleware:
https://github.com/mattpocock/redux-xstate-poc
We'd like to work together to turn that into a more official integration sometime soon.
- Writing React components with State Machines.
-
What does a large XState / Robot3 / FSM-based application architecture look like?
One of the XState devs recently posted https://github.com/mattpocock/redux-xstate-poc , an example of how you can integrate XState into a Redux app for use as a Redux slice reducer + side effects middleware
- @xstate/redux: Official proposal for an XState middleware for Redux
redux-eggs
-
The new wave of React state management
We have docs on code splitting reducers and other Redux logic here:
- https://redux.js.org/usage/code-splitting
There have been some different community packages for helping with that process, but some of them seem to have become outdated (only worked with React-Redux v5, etc). I did see a new one at https://github.com/fostyfost/redux-eggs that seemed like it had potential, but I haven't had a chance to try any of them myself.
I also once saw someone play around with the idea of using React's still-not-technically-final Suspense support to help ensure that a lazy-loaded component that relies on a code-split reducer doesn't actually get rendered until that reducer's state is available. Don't have the link handy atm, but if someone wants it ping me and I can go figure out where that was described.
Also, the new RTK "listener" middleware was specifically designed to replace almost all saga usages, and you can dynamically add more listeners at runtime via dispatch an `addListener()` action:
- https://redux-toolkit.js.org/api/createListenerMiddleware
- https://blog.isquaredsoftware.com/2022/05/presentations-evol...
-
Why using Redux is inefficient for small/mid-sized apps?
I did see a recent package called https://github.com/fostyfost/redux-eggs which looked like it did the same kind of "add and remove modular chunks of Redux code" use case, but I haven't had time to try it out.
What are some alternatives?
yieldmachine - Components for State Machines, using Generator Functions
redux-dynamic-modules - Modularize Redux by dynamically loading reducers and middlewares.
devtools - Replay.io DevTools
react-native-redux-toolkit-starter-app - 📱🚀A POWERFUL React Native starter kit to bootstrap the start of your mobile app development
vuex - 🗃️ Centralized State Management for Vue.js.
Dn-FamiTra
redux-essentials-example-app - Example app for the Redux Essentials tutorial
rfcs - RFCs for XState and Stately tools
redux-templates - Official Redux templates for Vite, Create-React-App, and more
redux-easy-mode - A very easy to understand and use set of tools for Redux. Includes action builders, reducer builders, side-effect middleware, and async actions.
algo_v - A collection of sorting algorithms, complete with visualizations, designed to help learn and practice algorithms. 📊