Skip to content
UX Atlas
Plate PAT·017 · PatternGrid F2 · Rev. 2026-09-14

Bulk Actions

Acting on many items at once, which is the difference between a tool and a chore for anyone working at volume.

PatternCraft conventionIntermediate

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
  1. 1Definition
  2. 2Requirements
  3. 3Selection, scope and failure
  4. 4Saying what is selected
  5. 5Running an operation over hundreds of items
  6. 6Two very different meanings of all
  7. 7In practice
  8. 8Local chart
  9. 9Continue from here

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.

ScopeLabelWhat it must also say
The rows on this pageSelect all 25 on this pageThe count, and that more match the current filter.
Everything matching the filterSelect all 1,483 matchingThe filter in words, so the reader can check it.
Everything, filter ignoredOffer it rarely, and label it plainlyThe total, and a confirmation proportional to it.
A range, shift-clickedNothing extraWhich rows, kept visibly highlighted after scrolling.
Selection surviving paginationSay so, with a running countOr say plainly that moving pages clears it.

Running an operation over hundreds of items

  1. 1

    Validate before starting

    Items the operation cannot apply to are reported up front, not discovered one by one at item 340.

  2. 2

    Preview the scope

    The count and the filter in words, and for destructive operations a sample of what is included.

  3. 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. 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. 5

    Report per item

    Succeeded, failed and skipped counts, with the failures listed and the reason given.

  6. 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

25 on this pagewhat the header checkbox doesselect all matching1,483 matching the filterincluding rows nobody has seen
The gap between these two is where bulk-action incidents happen. Both need their count and their scope spelled out in the control itself.

In practice

  1. i.

    Select all matching

    Data tools

    After 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.

  2. ii.

    Forty selected, thirty-one changed

    Partial failure

    A 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.

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.

Depends on

Get these right first, or this one will not hold.

Often used with

These usually appear in the same screen or the same decision.