To de-throne React, React would have to stop de-throning itself.
I do think the future of DOM based diffing is no longer going to use a Virtual DOM. Svelte has shown the way. It just has to be moved into React (or a React successor).
I also think the future of Components is to use async/await more. Where each await point is assigned a fallback component e.g. <Loading /> or something.
React also needs to figure out Hooks a bit better, and see if there is a missing language feature that can be pushed to simplify that concept.
If something (including React) is able to do those three things, while also keeping/improving the React DX (markup and logic together, uni-directional dataflow, hook like annotations that can interoperate with each other), it'll likely de-throne React.
Have you seen React Server Components? You mark a component as `async`, and then you `await` some Promise inside of the component to fetch data. The fallback points are declaratively defined through React Suspense. For example:
<Suspense fallback={<LoadingSkeleton />}>
<MyComponent />
</Suspense>
Where your Server Component then looks as follows:
Yes, aware. Its cool, but the ergonomics feel very much the way I felt about Node.js with callbacks.
There is a different type of delight that comes from the ergonomics on async/await. This is the big jump React Suspense also needs to make. I am not smart enough to suggest anything here tho. I just know the framework (including React) that can give me that async/await delight while using Suspense will dominate!
I do think the future of DOM based diffing is no longer going to use a Virtual DOM. Svelte has shown the way. It just has to be moved into React (or a React successor).
I also think the future of Components is to use async/await more. Where each await point is assigned a fallback component e.g. <Loading /> or something.
React also needs to figure out Hooks a bit better, and see if there is a missing language feature that can be pushed to simplify that concept.
If something (including React) is able to do those three things, while also keeping/improving the React DX (markup and logic together, uni-directional dataflow, hook like annotations that can interoperate with each other), it'll likely de-throne React.