I find that using Context+useReducer is similar, but in the end you wind up with a lot of useContext and/or overlapping usage of different context/providers that the general single redux context is often better overall. Not to mention, that you still have to deal with the action generation and state in the scope of context, which gets even more messy with different Context usage in practice.
At least that's been my own experience. I don't fault people for going different routes, I just find that the boilerplate kind of fades into the background after it's established.
My issue is that in the worst case you end up with Redux-like constructs. If your context setup gets so complicated as to require global-like store and extraction of actions and reducers into specific files, you end up with Redux.
At least that's been my own experience. I don't fault people for going different routes, I just find that the boilerplate kind of fades into the background after it's established.