A banner must state its scope of impact
Aliases: impact scope · alert scope · banner object
What it is
A banner names a situation that is still true. The next judgment a reader must make is what that situation applies to. Scope is the layer the banner has to make explicit—the whole app, the current workspace, this page, or particular rows. “Sync failed” without saying which repository lets people treat a local fault as a global outage, or a global read-only lock as one stuck record. Scope is not how urgent the tone is, and not whether the banner persists; it is what makes the persistent sentence usable for the next decision.
Why it happens
A message stuck at the top of a page is taken, by default, to describe “this whole place I am in.” Placement itself implies scope: under the app bar feels app-wide, above a card feels page-local, above a table feels about that table. If the copy is wider or narrower than the placement, implication and sentence conflict. People understand by position and act by wording; when those disagree they over-restrict or under-restrict. Scope also defines what dismiss and resolve mean: closing “this page is read-only” should not be read as the whole account becoming writable; fixing “3 files in conflict” should not be read as all sync being healthy. A banner without scope forces people to probe the boundary by trial—edit another page, another file, and see what still errors.
Where it stops holding
When the true scope is invisible to the user, do not fill it with internal service names. “Billing degraded” is worse than “you cannot change payment methods right now.” Scope shifts with navigation: walking from a workspace into a record, an app-wide banner is still showing, and people may think it has narrowed to that record; the copy must repeat “the whole workspace” so page context does not swallow it. Permission, network, and quota can be true at once with different scopes; collapsing them into one sentence erases the boundary. Split those, but split by scope, not by duplicate wording of the same scope. In a product with one object (a single-document editor) scope can be omitted because there is no second reading.
Applying it
- Give every banner one sentence that names the object: which account, which project, which page, which records. Do not ship a verb alone (failed, expired, read-only).
- Keep placement and copy aligned: app-wide lives in a slot shared by every page and says so; page-level travels with the content and leaves when the page leaves.
- A numeric scope must open to a list. “3 files in conflict” has to show which three, or the scope is still empty.
- Verify by reading the banner copy to someone who cannot see the UI, and asking what is currently impossible. An answer wider or narrower than reality means scope was not written.