I would argue that Redux is great for what it is. A predictable state container. It does one thing and does it right. It's up to the programmer to do whatever he likes. For example, build 10 layers of abstraction on top of it and brag about it. In that case, the simple cannot be easy because there is too much indirection.