When should I learn Redux?
When should I use Redux?
Can Redux only be used with React?
Do I need to have a particular build tool to use Redux?
How do I share state between two reducers? Do I have to use combineReducers?
Do I have to use the switch statement to handle actions?
Do I have to put all my state into Redux? Should I ever use React's setState()?
Can I put functions, promises, or other non-serializable items in my store state?
How do I organize nested or duplicate data in my state?
Can or should I create multiple stores? Can I import my store directly, and use it in components myself?
Is it OK to have more than one middleware chain in my store enhancer? What is the difference between next and dispatch in a middleware function?
How do I subscribe to only a portion of the state? Can I get the dispatched action as part of the subscription?
Why should type be a string, or at least serializable? Why should my action types be constants?
Is there always a one-to-one mapping between reducers and actions?
How can I represent “side effects” such as AJAX calls? Why do we need things like “action creators”, “thunks”, and “middleware” to do async behavior?
What async middleware should I use? How do you decide between thunks, sagas, observables, or something else?
Should I dispatch multiple actions in a row from one action creator?
What are the benefits of immutability?
Why is immutability required by Redux?
What approaches are there for handling data immutability? Do I have to use Immutable.JS?
Using Immutable.JS with Redux
Why should I use an immutable-focused library such as Immutable.JS?
Why should I choose Immutable.JS as an immutable library?
What are the issues with using Immutable.JS?
Is Immutable.JS worth the effort?
What are some opinionated Best Practices for using Immutable.JS with Redux?
What should my file structure look like? How should I group my action creators and reducers in my project? Where should my selectors go?
How should I split my logic between reducers and action creators? Where should my “business logic” go?
Why should I use action creators?
Where should websockets and other persistent connections live?
How well does Redux “scale” in terms of performance and architecture?
Won't calling “all my reducers” for each action be slow?
Do I have to deep-clone my state in a reducer? Isn't copying my state going to be slow?
How can I reduce the number of store update events?
Will having “one state tree” cause memory problems? Will dispatching many actions take up memory?
Will caching remote data cause memory problems?
Why doesn't Redux pass the state and action to subscribers?
Why doesn't Redux support using classes for actions and reducers?
Why does the middleware signature use currying?
Why does applyMiddleware use a closure for dispatch?
Why doesn't combineReducers include a third argument with the entire state when it calls each reducer?
Why doesn't mapDispatchToProps allow use of return values from getState() or mapStateToProps()?
Why isn't my component re-rendering, or my mapStateToProps running?
Why is my component re-rendering too often?
How can I speed up my mapStateToProps?
Why don't I have this.props.dispatch available in my connected component?
Should I only connect my top component, or can I connect multiple components in my tree?
Are there any larger, “real” Redux projects?
How can I implement authentication in Redux?