Anatomy
▾ Needs attention (3) ← ordered by urgency, not A–Z
INV-1041 Riverside Fit-Out 12d overdue
INV-1043 Kestrel Joinery 4d overdue
INV-1046 Kestrel Marine 9d overdue
▾ Due this week (2)
INV-1049 Marlow & Sons due Thu
INV-1051 Harbour Depot due Fri
▸ Paid (14) ← collapsed, count still visible
▾ Overdue over 90 days (0) ← empty but MEANINGFUL, so shown
- Counts on every heading. The counts are often more useful than the rows; they are the summary the list would otherwise make people compute.
- Deliberate group order. Alphabetical is a decision not to have decided.
- A collapsed group keeps its count, so collapsing hides detail without hiding existence.
- Meaningful empty groups stay. "Overdue (0)" is a fact worth reading.
Why it works
It turns a list into a shape. Before reading any row, a person learns the distribution — three urgent, two soon, fourteen done — and that distribution is usually the actual answer to why they opened the screen.
It is progressive disclosure applied horizontally rather than vertically: the headings are the overview layer, the rows are the detail, and collapsing is the visible door between them. Because the door carries a count, nothing is ever hidden without leaving a trace.
Grouping also places related things adjacent, which is the minimize distance principle doing its work — the three overdue invoices are next to each other, so comparing them costs a glance.
The trade you are making
Grouping destroys the single sorted order. In a flat table, "the largest amount" is the top row. In a grouped list it is the largest within one of five sections, and finding it means scanning all five.
So group when the category drives the work, and keep it flat when a metric does. Both are legitimate; the mistake is grouping by habit and then wondering why the list is harder to compare.
Getting it wrong
- Too many groups. Twenty sections of two rows is more chrome than content.
- Alphabetical group order on categories that have an obvious urgency order.
- Counts missing, which throws away most of the benefit for none of the cost saved.
- Collapsed groups that forget, so every visit starts with the same re-collapsing.
- Hiding empty groups indiscriminately, so "no overdue invoices" — good news someone wants — silently looks identical to the group not existing.
Exemplars
Gmail's date grouping — Today, Yesterday, Earlier — is grouping by the attribute that actually changes behaviour, and it is why the inbox reads as a shape rather than a stream.
Linear's grouped issue list lets the grouping attribute be switched (status, assignee, priority) which makes the trade explicit: you choose which question the list is currently good at answering.
Things and other task managers converge on Today / Upcoming / Someday, which is the same insight — the grouping people want is the one that maps to when they will act.
The extractable rule: group by what changes the work, and put the count in the heading. If the headings do not change anyone's behaviour, the list was better flat.