Global notices fit states that affect the whole app
Aliases: application status · global notice · app-level alert
What it is
An app-wide status reports a mode or constraint the whole application is in, not something a control just finished. A maintenance window, forced read-only, a frozen account, an expired license, a site-wide degradation—these remain true whichever page the user walks into, so the notice has to travel with the app, not with one form. It answers “what kind of environment am I in,” not “did that last action succeed.” The test for the global channel is narrow: change the page, change the object, and the sentence still holds.
Why it happens
A message in a slot shared by every page is read as environment, not as a receipt for one action. That slot—usually a strip under the app bar, a status bar, or a region that covers every route—teaches people to check the world before starting work. Global state changes the set of possible actions: once an account is frozen, save, invite, and pay are all meaningless, and a local success notice would be harmful. Park the same condition in a corner of one page and anyone who enters by another door never hears it, then operates on a false assumption. The value of the global channel is coverage of every entry; its cost is that every message is taken as part of the world model, so content that does not belong there contaminates later judgments.
Where it stops holding
In a multi-workspace or multi-tenant product, “global” may stop at the current workspace: team A read-only does not mean team B read-only. The channel is still cross-page, but the copy must name the workspace or the restriction hitchhikes when the user switches. A widget embedded in a third-party page has no app chrome; “global” is then a patch of the host page, and you cannot assume people still see your top bar. A local mode inside one page (bulk-select, recording) is not application state and should not occupy the global slot. In a tiny tool with one function, global and page coincide, and the channel can collapse to an in-page note.
Applying it
- List conditions that remain true on every route; wire only those into the shared slot. Everything else stays on the page or the object.
- Keep the slot at the same coordinates on every page so a top placement on one view and a bottom placement on another is not read as a change of state.
- Write the environment (“account frozen; all writes unavailable”), not the action that just happened.
- Verify by entering the product from two doors (a deep link, the home view, a search hit) and asking what is currently impossible. Disagreement means the global channel missed an entry.