- State change (via setState / useState setter)
- Props change (parent passes new value)
- Parent re-renders (children re-render by default)
- Context change (any consumer of changed context)
Key: Setting state to the same value (Object.is equality) causes React to bail out — no re-render.