Render computes the change list, commit applies it
The common read: Commit is the diffing step, so React walks its tree against the live DOM while committing, finds what differs, and patches it.
An update runs three steps: trigger, render and commit. Which one does the arithmetic?
By the time commit begins, the list of DOM operations
Commit compares nothing. Each step has exactly one job:
Trigger: the state update that starts it. Render: React calls your components and calculates what changed since the previous pass. Commit: React applies that result, changing a DOM node only where the two passes differ.
Get the halves backwards and the bug report is unanswerable. Someone reports a stale value that "should have been diffed away", filed against the commit step or against the browser, when nothing in the pass ever produced an operation addressed to it. Paint is not a fourth step. It is the browser's epilogue after React has returned, and react.dev reserves the word "rendering" for React's own phase so the two stop blurring into one event.
Takeaway: Say which half you mean in the review comment: "it renders too much" and "it writes too much" have different cures, and only one of them is yours to fix.
