Note Updated 2020-12 with current resource links and guidance
When Should I Learn Redux? 🔗︎
Our recommendation is to focus on learning React itself very well first. Once you have a good grasp on React, you'll have a better understanding of why a state management library like Redux can be useful. Also, while Redux is simple in some ways, it can be complex in others, and it can have a steep-ish learning curve depending on your background.
Redux may not seem very useful with small or toy apps. The typical example is a Todo list, but that's just to illustrate the basic mechanics and data flow. At that level, the benefits of Redux aren't very apparent, and the amount of overhead will definitely seem large. But, once you understand the principles, you can consistently apply them no matter how big an app is.
If you're not sure whether you should learn Redux yet, here's some suggested resources:
- My JS Party podcast appearance in late 2020 got turned into a post called When (and when not) to reach for Redux
- Robin Wieruch has a great post called 8 things to learn in React before using Redux. He also wrote a list of Tips to learn React + Redux in 2017.
- The Redux FAQ has an entry on When should I use Redux?. The FAQ entry points to several other quotes about when you might want to use Redux, and specifically three related articles:
- Dan Abramov's post The Case for Flux, which describes when a Flux-like library is useful in general
- Dan later wrote a post called You Might Not Need Redux, which talks about the tradeoffs Redux asks you to make, and the benefits you get in return. He also emphasizes that it doesn't fit every use case.
Suggested Resources for Learning Redux 🔗︎
Once you are ready to learn Redux, start with the official docs at http://redux.js.org/ . In particular, we've rewritten the core docs tutorials from scratch in 2020, and they show our latest recommendations for how to learn and use Redux:
- "Redux Essentials" tutorial: teaches "how to use Redux, the right way", by building a real-world app using Redux Toolkit
- "Redux Fundamentals" tutorial: teaches "how Redux works, from the bottom up", by showing how to write Redux code by hand, why standard usage patterns exist, and how Redux Toolkit simplifies those patterns
Also, the Redux Style Guide docs page lists our recommended patterns and best practices for learning Redux.
We've recently created a new official package called Redux Toolkit, which is intended to help simplify common tasks like setting up a Redux store and writing immutable update logic in reducers. I highly recommend that you try it out.
The React Redux docs are available as well.
Other Redux Tutorials 🔗︎
If you want to see the original thinking behind how Redux works, watch Dan Abramov's tutorial videos on Egghead.io.
I gave a 45-minute "Redux Fundamentals" presentation at Reactathon 2018, which includes links to both the video of the talk and the slides.
I've also put the slides and exercises for my "Redux Fundamentals" workshop online. It's a greatly expanded version of the material from the Reactathon presentation.
Dave Ceddia's post A Complete React Redux Tutorial for 2019 is an extensive, friendly, and clearly-written intro to the basics of Redux and how to use it with React. (You may also want to check out his earlier posts What Does Redux Do? (and when should you use it?) and How Redux Works: A Counter-Example.)
Tania Rascia wrote Using Redux with React: Complete Tutorial with Real-World Examples, which quickly introduces Redux, React-Redux, Redux Toolkit, and the React-Redux
connect and hooks APIs
And finally, my "Idiomatic Redux" series has articles that go deeper into different Redux usage patterns, the history and intent behidn Redux's design, and what I consider to be the right ways to use Redux.
From there, my React/Redux links list has sections on Redux Reducers and Selectors, Redux Architecture, and Redux Side Effects, and a lot more.
This is a post in the Blogged Answers series. Other posts in this series:
- Jun 22, 2021 - Blogged Answers: The Evolution of Redux Testing Approaches
- Jan 18, 2021 - Blogged Answers: Why React Context is Not a "State Management" Tool (and Why It Doesn't Replace Redux)
- Jun 21, 2020 - Blogged Answers: React Components, Reusability, and Abstraction
- May 17, 2020 - Blogged Answers: A (Mostly) Complete Guide to React Rendering Behavior
- May 12, 2020 - Blogged Answers: Why I Write
- Feb 22, 2020 - Blogged Answers: Why Redux Toolkit Uses Thunks for Async Logic
- Feb 22, 2020 - Blogged Answers: Coder vs Tech Lead - Balancing Roles
- Jan 19, 2020 - Blogged Answers: React, Redux, and Context Behavior
- Jan 01, 2020 - Blogged Answers: Years in Review, 2018-2019
- Jan 01, 2020 - Blogged Answers: Reasons to Use Thunks
- Jan 01, 2020 - Blogged Answers: A Comparison of Redux Batching Techniques
- Nov 26, 2019 - Blogged Answers: Learning and Using TypeScript as an App Dev and a Library Maintainer
- Jul 10, 2019 - Blogged Answers: Thoughts on React Hooks, Redux, and Separation of Concerns
- Jan 19, 2019 - Blogged Answers: Debugging Tips
- Mar 29, 2018 - Blogged Answers: Redux - Not Dead Yet!
- Dec 18, 2017 - Blogged Answers: Resources for Learning Redux
- Dec 18, 2017 - Blogged Answers: Resources for Learning React
- Aug 02, 2017 - Blogged Answers: Webpack HMR vs React-Hot-Loader
- Sep 14, 2016 - How I Got Here: My Journey Into the World of Redux and Open Source