What I Learned Today About React Rendering
Source: Dev.to

React’s Render Process (Quick Recap)
Whenever state or props change, React re‑renders the component. This does not mean the browser DOM is updated immediately. Instead, React:
- Re‑runs the component function
- Creates a new Virtual DOM tree
- Compares it with the previous tree
- Updates only the parts of the real DOM that actually changed
The comparison step is called diffing.
How Diffing Works
React uses a reconciliation algorithm to efficiently compare the old and new Virtual DOM trees. To keep this process fast, React follows two core assumptions.
Rule 1: Different Element Types Produce Different Trees
If the element type changes, React assumes the entire subtree has changed.
For example, if a becomes a, React does not try to compare their children; it removes the old tree and builds a new one from scratch. This shortcut avoids expensive deep comparisons.
Rule 2: Elements With the Same Stable key Are the Same Across Renders
When rendering lists, React relies on the key prop to identify elements.
items.map(item => (
))
A stable key allows React to correctly detect:
- Which items changed
- Which stayed the same
- Which were added or removed
Without proper keys, React may match elements by index, which can lead to incorrect updates and lost state.
Why the key Prop Matters
The key prop gives React a reliable way to track elements across renders.
- Same key → same component instance
- Different key → new component instance
React warns when keys are missing or unstable because they are essential for correct diffing and predictable behavior, especially in lists.
Closing Thought
Understanding these rules makes React’s behavior feel much more predictable. Re‑renders are not something to avoid—they’re part of how React works efficiently. Using stable keys and understanding diffing helps write components that behave correctly and scale well.