Before the switch to hooks there was the switch from class components to functions, but some features (error capture) were only available using class component.
The router situation has always been a mess too, and passing props around and lately contexts also overlap and have changed with time.
Some of building blocks seem to have been built organically, without regards for backwards compatibility. It is still very useful (I happily use react and next js) but the concepts are not very elegant and internally consistent IMHO.