What Redux is
ReduxJS is a (very) small data flow control library. The purpose is to provide a central data storage, and ways to update/query that storage. It does so with a "uni-directional flow", which makes the app very easy to test and reason about.
Redux isn't tied to React, you can use it with pretty much any framework. However, because of the way data flow down the component tree in React, they are a very good match for each other.
While reading about React you might have come across the term "Flux" - Redux is an alternative to that. If you use Redux in your React app (which we will do in this course), there's no need for a parallel Flux solution.
Redux in the course
Along with React and React Router, Redux is a mandatory inclusion in your main course project. This means you must store your app state in a Redux store, and use Redux action creators to change that data.
After some consideration, we have decided not to force you to try Redux. You are more than welcome to do so if you wish, and especially encouraged if you aim for the higher grades since Redux provides ample opportunity to show app organisation skills on that level.
If you do use Redux you don't have to hook up React Router to Redux, although there are libraries to do that if you want to explore it.
Using Redux-thunk to be able to do async updates more easily is not mandatory, but recommended. It is used in the demo app.
When you read up on Redux you are likely to come across demonstrations on hot reloading and time travel - we won't force you into that since it requires us to use webpack instead of browserify which is somewhat more convoluted. But if you are interested feel free to go there as it is really neat stuff!
First off don't miss the Demo app listed under resources here on the course page. It is specially tailored to allow you to grok how Redux works from a real-life example.
An excellent first step is to watch the speech at React Europe where Redux's creator, Dan Abramov, introduces the library:
Also check out this brilliant explanation of Redux in comic format. No code, just focusing on the high-level stuff.
This tiny JSBin example does a good job of capturing the essence of Redux.
Finally this video series on Egghead by Dan Abramov is a really good learning resource.