A virtual DOM is a copy of the DOM that is usually diffed and updated based on the differences.
> can we have SPA without it? Yes. You can set divs to be visiable/hidden based on routing with vanilla js. And there's a framework called Svelte that is a SPA framework without a vDOM.