I think a lot of the issues with React in general has to do with attempting to contort JS into a functional language.
useContext can lead to some gnarly code.
And that's how we got here, because everyone wants to make their applications available on as many platforms as possible, without having to maintain five or six separate teams that have to coordinate a roadmap, and the browser is the only somewhat consistent way to do this.
I made something last year in a functional style as I was fresh off the back of a few React jobs and projects. I got a proof of concept working but the code was awful to work with.
I took a couple of days to start over and rewrite it with OOP principles and it was in a much better state afterwards.