I found I was just using Redux as a data caching layer and ended up using SWR hooks instead https://swr.now.sh/. This has resulted in way less boilerplate (which increases even more with a type system) and a better development and user experience for the product I was working on. For everything else I use context like managing modals, auth, errors, and firebase connections.