Bulk Actions
Acting on many items at once, which is the difference between a tool and a chore for anyone working at volume.
Definition
Bulk actions let a user select multiple items and apply one operation to all of them. They are a high-value accelerator in any list-based product and a significant source of destructive mistakes if built carelessly.
Craft convention. True because the industry converged on it. Breaking it costs familiarity, not correctness.
On this plate
Reach for this when
- Users repeat the same action across many items.
- Lists routinely exceed one page.
- Readers routinely do the same thing to many rows in a list.
Common mistakes
- Ambiguous selection scope.
- Selection lost on pagination.
- Single-outcome reporting for partial failures.
- No undo on reversible bulk operations.
Requirements
- Persistent, visible selection count.
- Clear distinction between select-all-on-page and select-all-matching, since they are very different operations.
- An action bar that appears on selection without displacing the list.
- Selection preserved across pagination, or an explicit statement that it is not.
- Per-item results after the operation, since partial failures are common at volume.
- Undo for reversible bulk operations, and a preview for destructive ones.
- Keyboard support: shift-click for ranges, and a select-all shortcut.
Selection, scope and failure
Do
- Say exactly how many items are selected, and distinguish this page from all matching.
- Show what a destructive bulk action will affect before it runs.
- Report partial failure item by item, and let the reader retry only the failures.
- Keep the selection through pagination, or say clearly that it does not survive.
Do not
- Let Select all mean the page here and the whole set there without saying which.
- Report success when nine of forty items failed.
- Run a long bulk action with no progress and no way to stop it.
- Offer undo for a bulk action you cannot actually reverse.
Saying what is selected
Almost every serious bulk-action incident traces back to a reader and an interface disagreeing about the scope of the word all.
| Scope | Label | What it must also say |
|---|---|---|
| The rows on this page | Select all 25 on this page | The count, and that more match the current filter. |
| Everything matching the filter | Select all 1,483 matching | The filter in words, so the reader can check it. |
| Everything, filter ignored | Offer it rarely, and label it plainly | The total, and a confirmation proportional to it. |
| A range, shift-clicked | Nothing extra | Which rows, kept visibly highlighted after scrolling. |
| Selection surviving pagination | Say so, with a running count | Or say plainly that moving pages clears it. |
Running an operation over hundreds of items
- 1
Validate before starting
Items the operation cannot apply to are reported up front, not discovered one by one at item 340.
- 2
Preview the scope
The count and the filter in words, and for destructive operations a sample of what is included.
- 3
Run it in the background
Past a few seconds, release the interface and keep a progress surface the reader can leave and return to.
- 4
Allow cancellation
With a clear statement of what has already been applied, because a half-finished bulk operation is a state the reader has to understand.
- 5
Report per item
Succeeded, failed and skipped counts, with the failures listed and the reason given.
- 6
Retry only the failures
Re-running the whole operation to catch nine failures is how duplicates get created.
Two very different meanings of all
In practice
- i.
Select all matching
Data toolsAfter selecting the visible page, offering 'Select all 1,284 matching items' makes the scope explicit. Silently extending the selection beyond the visible page is how accidental mass deletions happen.
- ii.
Forty selected, thirty-one changed
Partial failureA bulk permission change succeeded for most rows and failed for nine, and reported Done. The reader discovered the gap days later, which is the reliable outcome of hiding partial failure.
Local chart
PAT·017 · Region III · Grid F2
This entry and the entries it is stated to connect with. Each line is labelled with what the connection means.
Continue from here
Each link says what the connection is, so you can tell a principle from an alternative from a thing people mix this up with.
Applies when you are designing
Principles behind this
The reasoning this solution is an application of.
- Flexibility and Efficiency of UseHEUR·007 · Heuristic
- Pareto PrinciplePRIN·002 · Principle
Depends on
Get these right first, or this one will not hold.
- Keyboard NavigationA11Y·002 · Accessibility
Often used with
These usually appear in the same screen or the same decision.
- CheckboxCMP·005 · Component
- Data TableCMP·025 · Component
- Destructive ActionsPAT·009 · Pattern