Persistent strip-shaped surfaces above the app shell. System banners (offline, maintenance, update available), live-update banners ("new since you opened this"), and announcement banners (beta callouts, promos). All three are alert-ui compositions; the variant + dismiss + CTA pattern is what differs.
Three reasons a banner exists at the top of an app: the system is in a degraded state (08j), real-time activity has out-paced the user's view (17f), or product wants to promote something (14e). They share a primitive but differ in tone, dismissibility, and persistence — system banners are non-dismissible while the condition holds; live + announcement are dismissible.
variant="warning" with a network-slash icon. Non-dismissible while the connection is down. The banner disappears on its own when the network returns; users don't dismiss it manually.
variant="info" with a wrench icon. Posted ahead of a planned outage. Carries the start time and an optional "Learn more" link to a status page. Not dismissible — users need to know.
variant="info" with an arrow-clockwise icon and a primary "Refresh" CTA. Appears when the client detects a newer build. Dismissible (user is in the middle of something) but reappears on next session start.
variant="info" with a count + a "Show new" CTA. Sits above a list / feed / table to signal that the underlying data has new rows the user hasn't seen yet. Clicking the CTA scrolls the new items in and dismisses the banner. Companion to the data-stream trait.
variant="info" or variant="muted" with a sparkle / flask icon. Promotes a new feature to opted-in users; carries a "Try it" CTA + dismiss. Once dismissed, persists per-user — don't show twice.
variant="info" with a megaphone or calendar icon. Time-boxed (event date, promo end). Dismiss persists for the campaign window. CTA goes to the landing page or signup flow.
data-stream — the banner's count comes from the same stream that's feeding the list below it. The CTA reveals queued items already in memory; the banner is a UX-layer affordance, not a re-fetch.