Rreact.wiki
React Interview Questions

What is the virtual DOM and how does it improve React's performance?

InternalsMedium6/21/2026virtual-domreconciliationrenderingperformancediffing

The virtual DOM is a lightweight, in-memory JavaScript representation of the real DOM that enables React to batch updates and minimize expensive direct DOM manipulations via efficient diffing and reconciliation.

Short Answer

The virtual DOM is React’s optimized, immutable snapshot of the UI structure — not the actual browser DOM — which allows React to compute minimal, targeted changes (via diffing) and apply them in batches, avoiding costly, piecemeal DOM operations.

Details

When state or props change, React creates a new virtual DOM tree. It then compares (or “diffs”) this new tree against the previous one using a heuristic O(n) algorithm (not full tree diffing) that assumes:

  • Two elements of different types produce entirely different subtrees;
  • Developers can hint at stable identity across renders using key props.
    This diff yields a minimal set of mutations (e.g., INSERT, UPDATE, DELETE). React batches these mutations and flushes them synchronously in a single commit phase — often coalescing multiple setState calls into one re-render. Crucially, only the changed DOM nodes are updated in the real DOM, skipping layout thrashing and unnecessary repaints.

Example

TSX
function Counter({ count }) {
  return <p>Count: {count}</p>; // Only the text node updates — not the <p> wrapper
}

If count changes from 5 to 6, React diffs the virtual trees, detects the text content change, and issues only textContent = 'Count: 6' — no re-creation of the <p> element or traversal of its ancestors.

Bonus

To stand out: clarify that the virtual DOM itself isn’t the performance hero — it’s the reconciliation algorithm + batching + declarative abstraction working together. Mention that modern React (18+) further optimizes with concurrent rendering (e.g., interruptible renders, time-slicing), where the virtual DOM serves as the mutable work-in-progress tree (current vs workInProgress). Also note: frameworks like Svelte skip the virtual DOM entirely — so emphasize that React’s choice trades some memory overhead for predictable, developer-friendly consistency and powerful features like Suspense.

What is the virtual DOM and how does it improve React's performance? — react.wiki