Table UX · feedback patterns

Five ways to confirm a table operation — none of them a toast

Toasts are a weak fit for tables: you run many operations fast, they stack and spam, and they float in a corner away from the row that actually changed. Put the feedback where the change happened instead.

01

Per-row status column

★ best default

Optimistic update — show the change instantly, then a quiet status per row. Scales to fast and bulk edits where toasts would spam.

NameQtyStatus
PLA Filament120 Saved
Hotend v614 Saving
Build Plate
02

Row flash / highlight

On success the edited row briefly washes green and fades; on failure it holds a red rail with the reason. Feedback lands exactly where the eyes already are — no new UI element at all.

SupplierLead timeEmail
Acme Co5 dayssales@acme.io
Vertex Ltd8 dayshi@vertex.co
Nova Parts3 daysinvalid email ⚠
03

Undo bar — for destructive ops

Replace “Deleted!” with an actionable bar. Delete is the one case you do want a transient message — because the user needs an escape hatch, not a confirmation. Pair it with optimistic removal: the row vanishes immediately and restores on Undo.

ItemSKU
Carbon nozzleCN-204
Spool holderSH-009
Row “Brass nozzle BN-101” deleted
04

Bulk bar with inline result

When rows are selected, the result reports back in the same bar that triggered the action. Partial failures are visible at a glance — something toasts handle badly.

12 selected ✓ 10 updated ✕ 2 failed Show failed rows
ComponentCost
Stepper motor$12.40
PSU 24Vprice < 0 ⚠
05

Inline cell validation

For failures caused by bad input, never toast — anchor the error to the offending cell so the fix is one glance away.

PartUnit price
Belt GT2$4.00
Linear rail-15Must be a positive number

What I'd ship

Optimistic UI + per-row status (01) + undo bar (03) for deletes + inline cell errors (05). That covers single edits, bulk edits, and destructive actions without a single toast — essentially the Airtable / Notion / Linear model.