Yes, I know all about defineProperty. I have a C# background so I’m familiar with the concept of properties/getters/setters.
Calling it “magic” may have been a step too far but it’s definitely an extra abstraction that React/Redux doesn’t have. It just uses shallow object equality. This has upsides and downsides. Vue can more effectively track whether or not a component should be updated and that’s cool but I prefer the functional purity of a immutable state object instead of a reactive state. This is a value-call and you may disagree, that’s fine.