A todo list uses useReducer. Items can be marked as done by clicking a button next to each one. Clicking "Complete" on any item has no visible effect — the item never changes appearance.
Click Complete on any todo item — nothing changes. The button responds (no crash, no error) but the item's status never updates on screen.
When a reducer returns the same object reference it received, React sees no state change and skips the re-render — even if properties on that object were mutated.
When a reducer returns the same object reference it received, React sees no state change and skips the re-render — even if properties on that object were mutated.