Redux has made life a living hell at my job trying to follow code trails for debugging.
In any case, its great for personal projects. The code is very lightweight at about 300 lines and zero dependencies.
flatstore unofficially supports history with undo/redo, but I haven't used it much. The hook `useWatch` is the latest update for function components to track state changes. If you still use legacy class components, it uses a similar HOC approach as redux for state changes.
But I recommend converting to functional components asap, as it shrinks code a lot, and you just need get/set/useWatch to do anything.