Skip to content
Strynal, Digital Agency

Design 6 min read

Designing Notifications and Toast Messages

A practical guide to designing toast messages and in-app notifications that communicate clearly, interrupt at the right level, and stay out of the user's way.

By Strynal Team

Notification design rarely gets its own dedicated sprint. It gets bolted on at the end, styled to match the design system, and shipped. Then the support tickets start: users who didn’t see the error, users who double-submitted because they weren’t sure the action worked, users who’ve learned to dismiss alerts without reading them.

What Notifications Are Actually For

A notification is a feedback mechanism. It closes the loop between an action the user took (or a system event that occurred) and the user’s mental model of what happened. That framing matters because it shifts the question from “where do I put this toast?” to “what does the user need to know, and when?”

There are four main types, and mixing them up creates noise:

  • Toast messages are transient confirmations. “Message sent.” “Settings saved.” They appear, wait, and leave. The user doesn’t need to act.
  • Inline feedback is contextual, tied to a specific element. A form field that turns red with an error message is inline feedback. It stays until the problem is resolved.
  • Alert banners are persistent. They sit at the top of a view or inside a section and communicate something the user should address: a subscription expiring, a broken integration, a missing required step.
  • Notification badges are ambient counts. The red dot on an inbox icon. They signal activity without interrupting flow.

Each type answers a different question. Toasts say “that worked.” Inline feedback says “that didn’t, and here’s why.” Banners say “something needs your attention.” Badges say “there’s more when you’re ready.” Use the wrong type and the message lands wrong.


Timing and Persistence

Toast duration is where designers either get this right or quietly lose users’ trust.

A toast that disappears in two seconds doesn’t work for anyone who glances away. One that lingers for eight seconds becomes an annoyance on the fourth action in a row. The conventional range is 3–5 seconds for a standard confirmation, longer for messages with actionable content (an undo link, a link to the created item), and shorter only if the toast is redundant with another visible state change.

If the toast contains information the user might need to act on, it should either persist until dismissed or link to where that information lives permanently.

Auto-dismiss is fine for low-stakes confirmations. For anything that matters (an error, a warning, an irreversible action) let the user dismiss it deliberately. The higher the stakes, the more explicit the acknowledgement should be. This is the same principle behind modals and dialogs: forcing a deliberate close is appropriate when the content is critical; it’s an interruption tax when it isn’t.

Persistent toasts create a different problem. If every notification requires a click to dismiss, users start clicking through them without reading. Once users learn to dismiss without reading, you’ve lost the channel entirely.


Interruption Hierarchy

Not every notification justifies interrupting the user. A useful framework is to ask: does the user need to act on this now, or just know about it?

  • Needs to act now, flow is blocked: An alert banner or a modal. The interface should not allow continuation until the issue is addressed.
  • Needs to act eventually, flow is not blocked: A persistent badge or a banner that can be dismissed.
  • Doesn’t need to act, just informed: A toast, auto-dismissed.
  • Might want to act, but it’s optional: A toast with an action link, auto-dismissed.

Breaking this hierarchy is the most common mistake in notification design. Showing a modal for a toast-level event trains users to dismiss modals quickly. Showing a toast for a critical error means the error goes unnoticed.

Designing forms people complete covers a related version of this in the context of validation: the medium of the message signals its severity, and users calibrate their attention to match. That calibration happens whether you intend it or not.

The same logic applies to frequency. An interface that generates a toast on every auto-save, every sync, and every background process creates noise. Users stop registering individual notifications and start filtering the whole layer.


Writing the Copy

Toast copy is often the last thing written, by whoever is closest to the ticket. It shows. Three rules cover most cases.

Be specific. “Error” is not a message. “Couldn’t save, check your connection” is a message. The user should understand what happened and what (if anything) to do next, without opening a help article.

Match tense to meaning. Confirmations are past tense: “Saved”, “Sent”, “Deleted”. Status messages are present: “Uploading…”, “Syncing”. Errors are present and direct: “Payment failed.”

Put the key information first. If the toast truncates or the user catches only the first few words before it fades, the important part should be in those first words.

Avoid phrasing that hedges or over-explains. “Your request has been successfully submitted to our system” should be “Request submitted.” The notification layer is not the place for brand voice. It’s the place for clarity.


Visual Treatment

Position is a deliberate choice, not a default to accept. Toasts in the top-right corner are far from where a user’s eyes usually are after completing an action (typically centre-screen or bottom). Bottom-centre or bottom-right is often better for web applications. On mobile, bottom toasts are closer to thumb reach and feel more native.

Colour communicates type. Green for success, red for errors, amber for warnings, neutral for information. This is a convention worth following; breaking it costs cognitive effort. For dark mode, check that toast backgrounds have sufficient contrast in both themes. A white toast on a dark background can feel harsh without a subtle border or shadow to contain it.

Keep the stack shallow. If three toasts pile up simultaneously, something upstream is wrong. Either those events shouldn’t each generate a separate notification, or they should be grouped. The goal is a quiet enough notification layer that each individual message carries weight.

Micro-interactions are worth spending time on here. A toast that slides in smoothly from the edge feels considered. One that snaps in and out looks like it was wired in five minutes. The animation doesn’t need to be elaborate; it needs to be intentional.


How Strynal Approaches Notifications

At Strynal, we treat the notification layer as part of the core feedback architecture, not a styling task at the end of a build. The decisions about what to surface, when, and with what urgency get made alongside the interaction model, not after it.

Our UI/UX service includes auditing existing notification patterns when they’re contributing to user confusion or unnecessary support volume. An audit typically surfaces the same three problems: messages firing too often, copy that doesn’t tell the user what to do, and critical errors using the wrong medium for their severity.

If your product’s notification layer is doing more harm than good, get in touch. We’ll look at the actual events, the copy, and the hierarchy, and tell you honestly what to change.