Both React and Web Components are overrated in my opinion. React is 127KB, Web Components polyfill is 105KB. This is a huge overhead for clients just to solve problems that can be dealt with build tools on the developper side. I have seen many benchmarks on DOM manipulation here, but never heard a client complaining "Oh, this DOM is slow". The number one problem in web performance has always been network latency.
The virtual DOM is an implementation detail needed for performing render on every state change. The main feature of React is re-rendering everything when the state changes. Which would be impossible without a virtual DOM.
You don't need a virtual DOM to re-render everything when state changes. We did not wait for React nor Angular to write change detection algorithms. Virtual DOM is one of the techniques of data-binding, and presumed the best performing. A few milliseconds saved at rendering, tenths of a second lost at initial loading. Is it really worth it ?