Learning Resources

    This page includes our recommendations for some of the best external resources available to learn Redux. For an additional extensive list of tutorials, articles, and other resources on React, Redux, Javascript, and related topics, see the React/Redux Links list.

    Tutorials that teach the basic concepts of Redux and how to use it

    • Getting Started with Redux - Video Serieshttps://github.com/tayiorbeii/egghead.io_redux_course_notesDan Abramov, the creator of Redux, demonstrates various concepts in 30 short (2-5 minute) videos. The linked Github repo contains notes and transcriptions of the videos.

    • Building React Applications with Idiomatic Redux - Video Serieshttps://github.com/tayiorbeii/egghead.io_idiomatic_redux_course_notesDan Abramov's second video tutorial series, continuing directly after the first. Includes lessons on store initial state, using Redux with React Router, using "selector" functions, normalizing state, use of Redux middleware, async action creators, and more. The linked Github repo contains notes and transcriptions of the videos.

    • Live React: Hot Reloading and Time TravelDan Abramov's original conference talk that introduced Redux. See how constraints enforced by Redux make hot reloading with time travel easy

    • A Cartoon Guide to Reduxhttps://code-cartoons.com/a-cartoon-intro-to-redux-3afb775501a6A high-level description of Redux, with friendly cartoons to help illustrate the ideas.

    • Leveling Up with React: ReduxA very well-written introduction to Redux and its related concepts, with some nifty cartoon-ish diagrams.

    • An Introduction to Reduxhttps://www.smashingmagazine.com/2016/06/an-introduction-to-redux/An overview and intro to the basic concepts of Redux. Looks at the benefits of using Redux, how it differs from MVC or Flux, and its relation to functional programming.

    • Redux TutorialA short, clear tutorial that introduces basic Redux terms, shows how to split reducer functions, and describes the Redux store API.

    • Redux: From Twitter Hype to Productionhttp://slides.com/jenyaterpil/redux-from-twitter-hype-to-production#/An extremely well-produced slideshow that visually steps through core Redux concepts, usage with React, project organization, and side effects with thunks and sagas. Has some absolutely fantastic animated diagrams demonstrating how data flows through a React+Redux architecture.

    • DevGuides: Introduction to ReduxA tutorial that covers several aspects of Redux, including actions, reducers, usage with React, and middleware.

    Using Redux With React

    Explanations of the React-Redux bindings and the function

    • Why Redux is Useful in React AppsAn explanation of some of the benefits of using Redux with React, including sharing data between components and hot module reloading.
    • What Does Redux Do? (and when should you use it?)https://daveceddia.com/what-does-redux-do/An excellent summary of how Redux helps solve data flow problems in a React app.

    • How Redux Works: A Counter-ExampleA great follow-up to the previous article. It explains how to use Redux and React-Redux, by first showing a React component that stores a value in its internal state, and then refactoring it to use Redux instead. Along the way, the article explains important Redux terms and concepts, and how they all fit together to make the Redux data flow work properly.

    • Redux and React: An Introductionhttp://jakesidsmith.com/blog/post/2017-11-18-redux-and-react-an-introduction/A great introduction to Redux's core concepts, with explanations of how to use the React-Redux package to use Redux with React.

    Project-Based Tutorials

    Tutorials that teach Redux concepts by building projects, including larger "real-world"-type applications

    Redux Implementation

    Explanations of how Redux works internally, by writing miniature reimplementations

    Reducers

    Articles discussing ways to write reducer functions

    Explanations of how and why to use selector functions to read values from state

    • Idiomatic Redux: Using Reselect Selectors for Encapsulation and PerformanceA complete guide to why you should use selector functions with Redux, how to use the Reselect library to write optimized selectors, and advanced tips for improving performance.

    • ReactCasts #8: Selectors in Reduxhttps://www.youtube.com/watch?v=frT3to2ACCwA great overview of why and how to use selector functions to retrieve data from the store, and derive additional data from store values

    • Optimizing React Redux Application Development with ReselectA good tutorial on Reselect. Covers the concept of "selector functions", how to use Reselect's API, and how to use memoized selectors to improve performance.

    • Usage of Reselect in a React-Redux Applicationhttps://dashbouquet.com/blog/frontend-development/usage-of-reselect-in-a-react-redux-applicationDiscusses the importance of memoized selectors for performance, and good practices for using Reselect.

    • React, Reselect, and ReduxAn explanation of how Reselect's memoized selector functions are useful in Redux apps, and how to create unique selector instances for each component instance.

    Normalization

    How to structure the Redux store like a database for best performance

    • Querying a Redux StoreA look at best practices for organizing and storing data in Redux, including normalizing data and use of selector functions.

    • Normalizing Redux Stores for Maximum Code Reusehttps://medium.com/@adamrackis/normalizing-redux-stores-for-maximum-code-reuse-ae6e3844ae95Thoughts on how normalized Redux stores enable some useful data handling approaches, with examples of using selector functions to denormalize hierarchical data.

    • Advanced Redux Entity NormalizationDescribes a "keyWindow" concept for tracking subsets of entities in state, similar to an SQL "view". A useful extension to the idea of normalized data.

    Middleware

    Explanations and examples of how middleware work and how to write them

    Side Effects - Basics

    Introductions to handling async behavior in Redux

    Side Effects - Advanced

    Advanced tools and techniques for managing async behavior

    Deeper looks at how Redux is meant to be used, and why it works the way it does

    • You Might Not Need Reduxhttps://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367Dan Abramov discusses the tradeoffs involved in using Redux.

    • Idiomatic Redux: The Tao of Redux, Part 1 - Implementation and IntentA deep dive into how Redux actually works, the constraints it asks you to follow, and the intent behind its design and usage.

    • Idiomatic Redux: The Tao of Redux, Part 2 - Practice and Philosophyhttp://blog.isquaredsoftware.com/2017/05/idiomatic-redux-tao-of-redux-part-2/A follow-up look at why common Redux usage patterns exist, other ways that Redux can be used, and thoughts on the pros and cons of those different patterns and approaches.

    • What's So Great About Redux?https://storify.com/acemarke/redux-pros-cons-and-limitationsDeep and fascinating analysis of how Redux compares to OOP and message-passing, how typical Redux usage can devolve towards Java-like "setter" functions with more boilerplate, and something of a plea for a higher-level "blessed" abstraction on top of Redux to make it easier to work with and learn for newbies. Very worth reading. The author originally wrote a tweetstorm, which is captured in the Storify link, and wrote the blog post to expand on those thoughts. Finally, he followed up with a few more thoughts on abstract vs concrete examples in another shorter tweet thread.

    Redux Architecture

    Patterns and practices for structuring larger Redux applications

    Apps and Examples

    • React-Redux RealWorld Example: TodoMVC for the Real Worldhttps://github.com/GoThinkster/redux-reviewAn example full-stack "real world" application built with Redux. Demos a Medium-like social blogging site that includes JWT authentication, CRUD, favoriting articles, following users, routing, and more. The RealWorld project also includes many other implementations of the front and back ends of the site, specifically intended to show how different server and client implementations of the same project and API spec compare with each other.

    • Project Mini-MekA sample app to demonstrate various useful Redux techniques, accompanying the "Practical Redux" blog series at http://blog.isquaredsoftware.com/series/practical-redux

    • react-redux-yelp-cloneAn adaptation of the "Yelp Clone" app by FullStackReact. It extends the original by using Redux and Redux Saga instead of local state, as well as React Router v4, styled-components, and other modern standards. Based on the React-Boilerplate starter kit.

    • WordPress-Calypsohttps://github.com/Automattic/wp-calypsoThe new JavaScript- and API-powered WordPress.com

    • Sound-ReduxA Soundcloud client built with React / Redux

    • Webamphttps://webamp.orgAn in-browser recreation of Winamp2, built with React and Redux. Actually plays MP3s, and lets you load in local MP3 files.

    • Tellohttps://github.com/joshwcomeau/TelloA simple and delightful way to track and manage TV shows

    • io-808An attempt at a fully recreated web-based TR-808 drum machine

    Redux Docs Translations

    Books

    • Redux in Actionhttps://www.manning.com/books/redux-in-actionA comprehensive book that covers many key aspects of using Redux, including the basics of reducers and actions and use with React, complex middlewares and side effects, application structure, performance, testing, and much more. Does a great job of explaining the pros, cons, and tradeoffs of many approaches to using Redux. Personally recommended by Redux co-maintainer Mark Erikson.

    • The Complete Redux BookHow do I manage a large state in production? Why do I need store enhancers? What is the best way to handle form validations? Get the answers to all these questions and many more using simple terms and sample code. Learn everything you need to use Redux to build complex and production-ready web applications. (Note: now permanently free!)

    • Taming the State in Reacthttps://www.robinwieruch.de/learn-react-redux-mobx-state-management/If you have learned React with the previous book of the author called The Road to learn React, Taming the State in React will be the perfect blend to learn about basic and advanced state management in React. You will start out with learning only Redux without React. Afterward, the book shows you how to connect Redux to your React application. The advanced chapters will teach you about normalization, naming, selectors and asynchronous actions. In the end, you will set up and build a real world application with React and Redux.

    • Modern React with Redux, by Stephen Grider (paid)Master the fundamentals of React and Redux with this tutorial as you develop apps with React Router, Webpack, and ES6. This course will get you up and running quickly, and teach you the core knowledge you need to deeply understand and build React components and structure applications with Redux.

    • Redux, by Tyler McGinnis (paid)https://tylermcginnis.com/courses/redux/When learning Redux, you need to learn it in the context of an app big enough to see the benefits. That's why this course is huge. A better name might be "Real World Redux". If you're sick of "todo list" Redux tutorials, you've come to the right place. In this course we'll talk all about what makes Redux special for managing state in your application. We'll build an actual "real world" application so you can see how Redux handles edge cases like optimistic updates and error handling. We'll also cover many other technologies that work well with Redux, Firebase, and CSS Modules.

    • Learn Redux, by Wes Bos (free)A video course that walks through building 'Reduxstagram' — a simple photo app that will simplify the core ideas behind Redux, React Router and React.js

    More Resources

    • is a curated list of high-quality articles, tutorials, and related content for React, Redux, ES6, and more.
    • Redux Ecosystem Links is a categorized collection of Redux-related libraries, addons, and utilities.
    • is an extensive list of Redux-related repositories.