Don’t use Redux!
Redux is used by too many react developers without thinking twice! Applied mindlessly like that, redux does more harm than good! I will show the fields in which redux shines and — most importantly — I will point out the situations in which redux is the wrong tool in my strong opinion.
Why Redux was Invented
Don’t get me wrong: I think the idea of Flux and its canonical react implementation redux are awesome inventions! They solve a real problem pretty elegantly. It’s just that most developers don’t have that problem!
Redux (and the underlying general idea of Flux) was invented to manage and debug application state in very large software systems. Think Facebook. If your team has hundreds of developers and millions lines of code, it is often difficult to write modular tests and find bugs. Redux makes state changes explicit, localizes them in one store and has strict rules about side effects. This makes your code easier to test and it makes application state easier to reason about.
A goal of redux is also to be a convention, not a library. So redux is plain Javascript and you don’t need any dependencies to use it (although many will probably use the react-redux bindings). This makes using redux pain-free from a dependency management point of view; but it also makes you write a lot of boiler plate code.