# CellChangeDetail

> _Since v1.0.0_

Detail for cell-change event (emitted by core after mutation).
This is an informational event that fires for ALL data mutations.

Use this event for:
- Logging/auditing changes
- Cascading updates (updating other fields based on a change)
- Syncing changes to external state

#### Example

```typescript
grid.on('cell-change', ({ row, rowId, field, oldValue, newValue, source }) => {
  console.log(`${field} changed from ${oldValue} to ${newValue}`);
  console.log(`Change source: ${source}`);

  // Cascade: update total when price changes
  if (source === 'user' && field === 'price') {
    grid.updateRow(rowId, { total: newValue * row.quantity });
  }
});
```

## Properties

| Property | Type | Description |
| -------- | ---- | ----------- |
| `row` | <code>TRow</code> | The row object (after mutation) |
| `rowId` | <code>string</code> | Stable row identifier |
| `rowIndex` | <code>number</code> | Current index in rows array |
| `field` | <code>string</code> | Field that changed |
| `oldValue` | <code>unknown</code> | Value before change |
| `newValue` | <code>unknown</code> | Value after change |
| `changes` | <code>Partial&lt;TRow&gt;</code> | All changes passed to updateRow/updateRows (for context) |
| `source` | <code><a href="/grid/api/core/types/updatesource/">UpdateSource</a></code> | Origin of this change |

## See Also

- [`UpdateSource`](/grid/api/core/types/updatesource.md) for understanding change origins
- CellCommitDetail for the commit event (editing lifecycle)
