Of course it stores the VDOM in memory. What would it compare against when it does a rerender? The virtual dom will always be slower than manual dom updates. Just try making a list of 10,000 items and appending to the list. The virtual dom will have to do an expensive diff each time only to see that one element has changed. In the end it will call the same appendChild method that you would of called in Vanilla JS. A few times I've had to bail out of the virtual dom because it was just too slow. The virtual dom is about making things easier for developers. It is not faster and it doesn't unleash some magical API that only the virtual DOM can access. If you don't believe me React core developers have said the same thing. Namely that doing what the virtual dom does in vanilla js will always be faster. Batching updates doesn't make it faster either. Browsers wait for all tasks and microtasks to finish before rendering the next frame. So even if the virtual dom does dom updates all at once and you do it in vanilla JS mixed in with your business logic, it wont make a difference unless you are using certain properties and methods that trigger a reflow. If you use fragments you can beat the virtual dom every time.