Table UX · feedback patterns
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.
Per-row status column
★ best defaultOptimistic update — show the change instantly, then a quiet status per row. Scales to fast and bulk edits where toasts would spam.
| Name | Qty | Status |
|---|---|---|
| PLA Filament | 120 | ✓ Saved |
| Hotend v6 | 14 | Saving |
| Build Plate | — |
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.
| Supplier | Lead time | |
|---|---|---|
| Acme Co | 5 days | sales@acme.io |
| Vertex Ltd | 8 days | hi@vertex.co |
| Nova Parts | 3 days | invalid email ⚠ |
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.
| Item | SKU |
|---|---|
| Carbon nozzle | CN-204 |
| Spool holder | SH-009 |
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.
| Component | Cost | |
|---|---|---|
| ☑ | Stepper motor | $12.40 |
| ☑ | PSU 24V | price < 0 ⚠ |
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.
| Part | Unit 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.