No, of course. Back in 2000 we loved handling our own window.__mynamespace variables. The world was so much better with document.forms[0].submit. Those beautiful days of document.write, document.elementid.property. I’m nostalgic.
Web was always less disciplined in this regard, compared to desktop. Being a desktop app developer back in 2000 you’d just pack some widgets together, set handlers for single-value widgets to fire into a controller object, set up data sources for tables and that’s it. No markup concatenation or implicit on-return behavior.
There were thousands of pre-react desktop apps on frameworks from turbovision to *tk to appkit and not a single one of them mismanaged focus because of a missing “key” or required to “update state through slicing an array” nonsense. This old pain you feel is historically self-inflicted and doesn’t exist elsewhere.
I made a bunch of apps and user interfaces with these frameworks myself. It was natural and straightforward. Sometimes it could get clunky and hack-y due to limitations, but usually it was the level when a whole react team would be fired for economical reasons (think of multi-tab forms with settings, dialogs, master-details, complex table input, etc).
But it all sucked big time because what we all wanted, was to run those apps in the browser and on the desktop. Adobe Flex was the first real thing that came close: you could have loaded a swf file into an air wrapper. But Flash is dead, Flex is dead. And now we have what we have. It could have been worse.
Frankly, Flex did s lot of things right. The layout and the default widget library was top notch. The grid was a killer feature. The IDE was really helpful.