Redux is very composable in theory but extremely poorly composable in practice; it is very difficult to combine the subtrees of different third-party utilities in a way where the utilities are aware of their location in the tree, without resorting to a variety of different hacks (that are different for each utility)
And they do *need* to know their location in the tree, if you want those utilities to be mountable at arbitrary positions and able to manage their own state, and then you still need to figure out how to isolate the utility-specific action types too