Empty filter results need an explicit message, not a blank
Aliases: no matches · zero hits · empty search
What it is
When a keyword filters the roster to zero rows, the panel must not collapse into a blank that looks like loading or a broken widget. There has to be an empty-result message: nothing matched “X,” no options under this filter, preferably with a next step — change the keyword, clear the filter, try another spelling. A blank leaves people unable to choose between “it does not exist” and “search did not work,” so they resubmit the same word or abandon the choice.
Empty is the filter’s empty, not the set’s empty. A truly empty set is a different sentence (there are no roles to grant yet); the two must not share copy.
Why it happens
People treat the list region as evidence that data exists. After a filter has removed every row, an empty region becomes evidence that “there is no list here.” Loading blank, error blank, and zero-hit blank look alike, so attribution scatters. A sentence that contains the word just typed pins attribution on the query: the system saw your word; no object claimed it. A next step stops spinning in place — clearing the filter immediately proves the roster is still there; another spelling maps to matching rules; requesting a new item maps to a real gap.
The empty state must also keep the search field. Some implementations tear down the whole panel at zero hits, the keyword vanishing with it, so people cannot edit the word. Keep the input; replace the roster region.
Where it stops holding
Network-failure empty and zero-hit empty must split: failure carries retry, zero hits carry a changed query. When permission hides some items, empty may mean “you cannot see them”; copy must not say “does not exist,” or people will go to the wrong place to create a copy. A tree with zero hits under a filter should say the whole tree had no match, not that the currently expanded node had none. Transient empty while still typing (the word is unfinished) should not flash “no matches”; wait out a short pause so every letter is not a scare.
Applying it
- On zero hits, write a sentence in the roster slot that contains the current keyword, and offer clear-filter.
- Distinguish “set is empty,” “query has no match,” and “load failed.”
- Keep the search field and its focus through empty so the word can be edited in place.
- How to check: type a word that cannot exist. A blank panel, or a panel that closes, means empty was never designed as a state.
Related
- Within the group: E3.17.1 When options overflow, offer a search field rather than relying on scrolling · E3.17.2 Filtering should match pinyin, abbreviations, and other fuzzy forms · E3.17.4 Selected items must stay visible or trackable after filtering
- Adjacent: E6.06 Empty States
- Search terms:
empty filter·no matching options·zero hits