Apps use notifications to provide timely and important information anytime, even when the screen is locked. Notifications may occur when a message arrives, an event occurs, new data is available, or the status of something has changed. Local notifications originate and are delivered on the same device. A to-do list app, for example, might use local notifications to alert someone about an upcoming meeting or due date. Remote notifications, also called push notifications, come from a server. A multiplayer game might use remote notifications to let players know when it’s their move.

People see notifications at the top of the screen and in the Notifications pane of Notification Center, which is accessed by clicking the Notification Center icon at the top of the screen or swiping with two fingers from the side of the trackpad. Each notification includes the app name, a small app icon, and a message that can include an image. Notifications may also be accompanied by a sound, display or update a badge on the corresponding app’s Dock icon (see Badging), and include buttons for taking immediate action. For example, a new Mail message notification includes one button for starting a reply and another button for marking the message as read (in banner-style notifications) or deleting the message (in alert-style notifications).

The behavior of notifications is managed in System Preferences on an app-by-app basis. For any app that supports notifications, the user can enable or disable the feature entirely. They can also enable visibility in Notification Center and on the lock screen, enable app icon badging, enable sounds, and choose one of these notification styles:

Banner. Appears at the top of the screen for a few seconds while the Mac is in use, then disappears. May include up to two buttons for taking action. If a banner includes buttons, they appear only when the pointer is positioned over the notification.

Alert. Appears at the top of the screen while the Mac is in use and stays there until manually dismissed. Includes one or two buttons for dismissing the alert and taking action.

On the lock screen, notifications always appear as informational, noninteractive banners that don’t dismiss or display action buttons until the Mac is unlocked. Clicking a notification when the Mac is unlocked dismisses the notification, removes it from Notification Center, opens the corresponding app, and shows related information.

For developer guidance, see Local and Remote Notification Programming Guide.

Tip Notification Center also includes a Today pane, which displays the user’s widgets. A widget is an extension that displays a small amount of timely, useful information or app-specific functionality. See Notification Center Widgets.

Provide useful, informative notifications. People enable notifications to get quick updates, so focus on providing information of value. Use complete sentences, sentence-style capitalization, proper punctuation, and don’t truncate your message—the system does this automatically, if necessary. Avoid telling people to open your app, navigate to specific screens, click specific buttons, and perform other tasks that are hard to remember once the notification is dismissed.

Don’t use notifications to display error messages. People generally expect notifications to be informational and deferrable. If you need to display an error message, an alert has greater impact than a notification. See Alerts.

Handle notifications gracefully if your app is in the foreground. Your app’s notifications don’t appear onscreen when your app is in the front, but your app still receives the information. Present it to the user in a way that’s informative but not distracting or invasive. For example, you might display or increment a badge or subtly insert new data into the current view.

Don’t send multiple notifications for the same thing, even if the user hasn't responded. People attend to notifications at their convenience. If you send multiple notifications for the same thing, you fill up Notification Center, and users may turn off notifications from your app.

Don’t include your app name or icon. The system automatically shows this information at the top of each notification.

Choose an appropriate default notification style. Since banner-style notifications disappear after a few seconds, use the alert style when delivering essential information that may immediately impact the user. Just remember that alert-style notifications disrupt the user experience. Use them sparingly so users don’t get annoyed and turn them off.

Use badging to supplement notifications, not to denote critical information. Badging of your app can be turned off: if your app relies on badging to communicate important information, you run the risk of people missing it.

Keep badges up to date. Update your app’s badge as soon as the corresponding information is read. You don’t want people to think there’s new information available, only to find that they’ve already seen it.

Provide a sound to supplement your notifications. Sound is a great way to get someone's attention when they’re not looking at the screen. A to-do list app might play an alert sound, for example, when it’s time to perform an important task. Your app can use a custom or a built-in alert sound. If you use a custom sound, make sure it’s short, distinctive, and professionally produced. See Preparing Custom Alert Sounds in Local and Remote Notification Programming Guide. Keep in mind that people can optionally disable notification alert sounds.

Provide intuitive, beneficial action buttons. A notification can include up to two action buttons for performing common, time-saving tasks that eliminate the need to open your app. Use short, title-case names that clearly describe the action results. For example, Reminders uses Snooze to let you defer a reminder until a later time. The system may truncate lengthy button names to fit.

Avoid providing destructive action buttons. Think carefully before providing destructive actions in a notification detail view. If you must provide them, make sure people have enough context to prevent unintended consequences.