That’s actually all I use for state management. Elements pass data to children through attributes and bubble data up through events. It’s worked well for us on a complex front-end using native web components.
What REALLY happened is the shadow DOM. People decided it was too slow and created an intermediate representation. That then created all kinds of OTHER problems that started resulting in solutions that wouldn't have been necessary without the shadow DOM.
A shadow DOM is basically a cache, with all the problems that entails.
https://developer.mozilla.org/en-US/docs/Web/Web_Components/...
The term was popularized long before "web components" was a thing, and in fact, that's where they got the name.