Notification
- Usage
- Styling
- Theme Variants
- Duration
- Position
- Stacking
- Size
- Interactive Elements
- Icons & Other Rich Formatting
- Static Helper
- Best Practices
- Related Components
Notification is used to provide feedback to the user about activities, processes, and events in the application.
Theme Variants
Notification comes with a few theme variants: success
; warning
; error
; primary
; and contrast
. These variants are described in the following sub-sections:
Success
The success
theme variant can be used to display success messages, such as when a task or operation is completed.
Users shouldn’t be notified always, or even frequently, of successful operations. Too many notifications can be more distracting than helpful to users. Use success notifications only for operations whose successful completion may otherwise be difficult to discern.
Warning
The warning
theme variant can be used to display warnings.
Warning notifications should be persistent, and provide the user with a button that closes the notification or allows the user to take appropriate action.
Error
The error
theme variant can be used to display errors.
Error notifications should be persistent, and provide the user with a button that closes the notification or allows the user to take appropriate action.
Notifications are non-modal and can be ignored. Therefore, they’re usually inappropriate for displaying unexpected technical errors that prevent the application from functioning, or situations that require immediate user action. Use instead a modal Dialog in such situations.
The built-in error message feature, included with input field components, should be used for field-specific input validation errors.
Primary
The primary
theme variant can be used for important informational messages or to draw extra attention to a notification.
Contrast
The contrast variant can improve legibility and distinguish the notification from the rest of the UI.
new tab
Source code
NotificationContrast.java
notification-contrast.tsx
notification-contrast.ts
Duration
By default, notifications stay on-screen for five seconds. The duration can be set — in milliseconds — and should be done so based on the content and its importance:
-
Use short durations for notifications that contain short text, are of lesser importance (e.g., operations that finished without errors), and have no interactive elements.
-
Use longer durations for notifications that contain longer text, are of higher importance (e.g., errors), and have interactive elements (e.g., links or "undo" actions).
A duration of at least five seconds (i.e., 5000
milliseconds) is recommended — this is why it’s the default — to ensure that the user has a chance to read and understand the notification.
Persistent Notifications
Setting the duration to 0
milliseconds disables auto-closing. It keeps the notification visible until it’s explicitly dismissed by the user. This should be used for notifications that provide vital information to the user, such as errors.
Persistent notifications should contain a Button that closes the notification, or allows the user to take appropriate action. Less-important notifications shouldn’t be persistent, and instead disappear automatically after an appropriate delay.
Position
Notifications can be positioned in the viewport in seven non-stretched positions, or stretched across the top or bottom:
new tab
Source code
NotificationPosition.java
notification-position-example.css
notification-position.tsx
notification-position-example.css
notification-position.ts
notification-position-example.css
Top End or Bottom Start are recommended for most notifications. They’re unobtrusive, but still noticeable. Middle is the most disruptive position, and should be used only for important notifications, such as errors. Bottom End is the least obtrusive position, but can go unnoticed. Stretch notifications, which span the full width of the viewport, are disruptive, and should be reserved for important notifications whose content requires more space.
Applications with a notification button, or a drop-down in the header or footer, should position notifications to appear in the same part of the screen. For a consistent user experience, use one or two positions throughout the application. Avoid using positions that may obstruct important parts of the UI, such as navigation.
Stacking
Multiple simultaneously displayed notifications are stacked vertically. The ordering of them, though, depends on their positioning.
When using the bottom half of the screen as the position, a new notification appears below the older notifications. With the position set to the top half, a new notification appears above the existing notifications.
Size
The notification card is automatically sized based on its content.
In large viewports, the card’s maximum width is one-third of the viewport. In small viewports, the card always consumes the entire width of the viewport.
Interactive Elements
Notifications can contain interactive content (e.g., Buttons or links) that allow the user to perform related actions.
For example, if an operation fails, the error notification could offer the user the opportunity to try again. Or it could contain a link to a view that allows the user to resolve the problem.
In situations where the user might want to revert an action, display an "Undo" button.
Notifications can also contain links to relevant information.
Keyboard-Accessible
Make sure that keyboard-only users can access interactive elements in notifications.
Make the notification persistent to prevent it from disappearing before the user has had a chance to react. Provide a keyboard shortcut — either to trigger the action itself or to move focus to the notification card — in cases where multiple interactive elements are present. Finally, make the shortcut discoverable, for example, by displaying it as part of the notification’s content.
new tab
Source code
NotificationKeyboardA11y.java
notification-keyboard-a11y.tsx
notification-keyboard-a11y.ts
Icons & Other Rich Formatting
Icons and other content formatting can be used to provide information and helpful visual cues. For example, you might do this to make error and success notifications easier to distinguish for users with color blindness.
new tab
Source code
notification-rich-preview.ts
notification-rich-preview.ts
Static Helper
For simple, one-off notifications, it’s convenient to use the static show()
helper method. The helper manages the notification’s lifecycle, and adds and removes it from the DOM, automatically.
new tab
Source code
NotificationStaticHelper.java
notification-static-helper.tsx
notification-static-helper.ts
Best Practices
Use Sparingly
Notifications are disruptive by design and should be used sparingly. Use fewer notifications by reserving them for more-important information that might otherwise go unnoticed by the user.
Less-urgent notifications can be provided through a link or a drop-down in the application header or footer, instead of via immediate notifications.
Limit Content Length
Notifications should be brief and to the point. Try to limit the content to one or two lines. More information can be provided through an embedded link or Button.
new tab
Source code
notification-content-length-do.ts
notification-content-length-do.ts
new tab