Guides and Sample Code


macOS Human Interface Guidelines

On This Page

Feedback and Assistance

Keep Users Informed of Progress

Users want an app that acts upon their commands and tells them how long the process will take. If your app doesn’t do a good job of giving feedback to users, they may think that your app is unresponsive or difficult to use.

image: ../Art/feedback_intro_2x.png

Instantly acknowledge the user’s commands and input. Users expect to receive some type of feedback every time they interact with your app. In macOS, buttons respond visually when users click them, and the pointer changes appropriately as users move it over different controls and areas. Similarly, if a command can’t be carried out, users want to know why it can’t and what they can do instead. The quicker you provide feedback for the user’s interactions, the more responsive your app appears. To learn more about the principle of feedback, see Feedback and Communication.

Don’t wait until a long task completes before you display any results to users. If you display nothing until you have all the results, users might interpret this as sluggishness. Instead, display partial results as soon as possible after users initiate a long task so that they have something useful to view while the rest of the task completes.

Use an indicator to help users gauge how long a process will take to complete. Users don’t always need to know precisely how long a task will take, but it’s important to give them an estimate. For example, the Finder combines a progress indicator with optional explanatory text to show users about how long a copy operation will take.

Warn users when they initiate a task that can cause an unexpected and irreversible loss of data. Such warnings are important, but they can become annoying—and users tend to ignore them—if they appear too often. Make sure you don’t warn users when data loss is an expected outcome of an action. For example, the Finder doesn’t display an alert when the user throws away a file because the user intends to delete the file. For more guidelines on how to use alerts in your app, see Alerts.

Occasionally, Users Need Help

Ideally, users can easily figure out how to use your app without reading a user guide, but sometimes they need a little help understanding how to use an advanced or secondary feature. Follow the guidelines in this section to provide app help that doesn’t get in the user’s way. For detailed guidance on how to compose help content, see User Assistance; for guidance on creating an onboarding experience, see Start Instantly.

In general, provide help tags that describe how to use UI elements. Help tags can appear when the user allows the pointer to rest over a UI element for a few seconds. A help tag consists of a small view that displays a succinct description of what the UI element does (shown here in Dictionary). Although it’s best when the usage of your app’s UI is instantly apparent to users, help tags can be a good way to help novice users without annoying experienced users. Because a help tag’s message is short and directly linked to a specific UI element, a help tag is not the appropriate place to describe a higher-level task.

image: ../Art/help_tag_example_2x.png

Provide a help book that describes how to accomplish tasks in your app. Users open an app's help book when they can’t figure out how to accomplish their goal. Although users might also refer to a help book to find out how to use a specific control, they’re more likely to be seeking help with a higher-level task. For this reason, your help book should be task-based, and for the most part, it should describe control usage in the context of accomplishing a task.

In most cases, avoid constraining user actions. Unless you’re creating a children’s app in which it can be appropriate to restrict the user’s scope of action, you don’t want users to feel that your app is paternalistic. As much as possible, let users do what they want without unnecessary interference.