File upload (batch)
The user picks twelve files and clicks Upload. The wall-clock time crosses ten seconds easily — past the unit-task boundary, the user is going to disengage if the perception layer does not earn its keep. The pattern stack is bigger than the single-file case, but the principles are the same.
This scenario sits in the 10 S+ band. The perception layer carries it through the time-aware feedback progression: per-file determinate progress, aggregate progress at the top, engagement cue past the 10 s boundary, background sync option for the long tail. Myers 1985 Myers 1985 covers the per-file determinate signal; Block & Zakay 1997 Block & Zakay 1997 covers the engagement trade past 10 s; Doherty 1982 Doherty 1982 is the background-sync rationale.
File upload
Upload a 4.2 MB file. Naive: generic spinner with no progress signal. Tuned: optimistic filename render, determinate progress bar, success affordance with checkmark.
Off
On
What is happening
The single-file demo stands in. For a real batch, the tuned UI stacks:
- Per-file rows — name, size, individual progress bar. The user sees the entire queue at once.
- Aggregate progress at the top — total bytes transferred over total bytes queued. Determinate.
- Engaging affordance past 10 s — the active queue, the upload speed, the estimated time remaining. The user has something to read while they wait.
- "Do this in the background and notify me" option for very long batches — defer off the user's perceived path entirely via background sync.
- Cancellation per file and per batch — the user can drop individual transfers without aborting the whole queue.
What to tune
- Pre-action — file rows render immediately (name, size, queued state) before any bytes transfer.
- First 1 s — per-file progress bars start filling. Aggregate bar at the top tracks total bytes transferred / queued.
- 1 – 10 s — bars run in parallel (4–8 concurrent transfers). Cancellation visible per file and per batch.
- Past 10 s — active-queue display: upload speed, estimated time remaining, files in flight. "Notify me when done" appears.
- Completion — each file flips to a checkmark + metadata. Final summary row; never silent.
When perceived performance hurts you here
Batch uploads have the same trap engaging loading does — a 60-second batch with rich engagement feels short while it runs and long in retrospect. For users who upload batches multiple times per session, the retrospective cost compounds.
The cleaner answer: lean on per-file determinate progress (the user learns what's happening), aggregate progress for orientation, and background sync past the 30 s mark so the user can leave the surface. Skip the motivational quotes — the queue itself is engaging enough.
The other failure: serialising the uploads when they could be parallel. A batch UI that processes one file at a time triples the apparent duration; for small files the bottleneck is connection round-trips, not bandwidth. Parallelise to ~4–8 concurrent uploads where the network supports it.
Accessibility
- Per-file
aria-busyflags so screen readers can navigate to active items. - Aggregate
role="progressbar"at the top of the queue. - Polite live region for batch-level state changes ("3 of 12 complete") — every minute or two, not every file.
- Cancellation must be keyboard-reachable for each file and for the batch.
- Don't trap focus on the queue — the user might want to navigate elsewhere while it runs.
References
References · 3
- Myers 1985
Myers, B. A. (1985). The importance of percent-done progress indicators for computer-human interfaces. Proceedings of CHI '85, 11–17. Per-file determinate progress beats per-batch generic feedback.
- Block & Zakay 1997
Block, R. A., & Zakay, D. (1997). Prospective and retrospective duration judgments: A meta-analytic review. Psychonomic Bulletin & Review, 4(2), 184–197. The trade-off engagement makes during long batch uploads.
- Doherty 1982
Doherty, W. J., & Thadani, A. J. (1982). The Economic Value of Rapid Response Time. IBM Technical Report GE20-0752-0. Background sync moves the wait off the user's perceived path entirely for batch uploads.