Dashboard gives people a way to get information and perform simple tasks quickly and easily, without leaving the context of the current app. Appearing and disappearing with a single keystroke or gesture, Dashboard presents a default or user-defined set of mini apps, known as widgets. The system includes a variety of predefined widgets including a calculator, calendar, clock, and weather forecaster. Your app can implement custom widgets that expose app-specific content or functionality.
Consider developing a Notification Center widget instead of a Dashboard widget. In general, users expect to find widgets in the Today pane of Notification Center. See Notification Center Widgets.
Design a small, visually appealing, narrowly-focused widget. People use widgets to get brief updates and perform very simple tasks, so it’s essential to deliver the right amount of information and functionality.
Show content quickly. People spend very little time looking at widgets and shouldn’t need to wait for content to load. Cache information locally so you can always show recent information while getting updates.
Design widgets for small screens. Device screen sizes vary and people keep multiple widgets open in Dashboard, so don’t monopolize screen space. People may leave your widget out of their Dashboard if there’s not enough room for other widgets.
Minimize the use of scroll bars. Generally, a widget should display minimal information that doesn’t require scrolling. If a widget, such as a dictionary, must provide lots of information, a scroll bar may be justified to keep the widget small.
Use color to distinguish your widget. A unique color scheme ensures that your widget is recognized quickly when Dashboard comes into view.
Avoid garish color schemes. The colors in your app should work well together, not conflict or distract. Varying shades of the same color tend to work well in widgets, rather than using multiple distinct colors.
Use clear, readable fonts. People expect to obtain information quickly from widgets. Avoid sacrificing readability to achieve a particular appearance. Remember that the standard system font, San Francisco, is optimized for legibility. See Typography.
Design custom controls. Standard system-provided controls should only be used for the back side of your widget, where preferences are displayed (see Widget Preferences).
Make sure custom controls look and behave like the elements they represent. A checkbox should still look like a checkbox and buttons should still look clickable, for example.
Avoid advertising. Branding a widget is acceptable and important, but advertising takes away valuable space from content. Presence on a user’s Dashboard is a privilege. Use the back of the widget for information that isn’t vital to the widget’s purpose, such as branding, licensing information, and copyright notices.
Position your widget’s Close button over the top left of your widget. The default location of the close button may appear to be floating off to the side of a widget with transparency around its edges. If this is the case with your widget, reposition the close button so that it’s located over the widget itself and doesn’t feel disconnected.
Support clipboard interaction whenever possible. People often expect to be able to copy and paste content between applications and widgets.
For developer guidance, see Dashboard Programming Topics.
If your widget requires configuration, you can display preferences on the back of your widget.