In the front end web development many frameworks favor virtual DOM solutions (like virtual-dom from React https://www.npmjs.com/package/virtual-dom). Usually the design reasons cited are avoid the problem of having DOM manipulation as the bottleneck of front end rendering.
Why DOM manipulation is slow in current browsers, so that virtual DOM solutions can outperform it?
What optimizations browsers themselves could do (are doing) to remove this bottleneck? Could browsers themselves are not developing more batch-like DOM APIs?
As a pointer, I feel it might be something to do with the context switch when the run-time needs to leap from JIT'ed JavaScript to native DOM manipulation code, but I have never found a definitive answer on this.