Components are 'parts', while patterns are 'stringing parts into a user flow' (how to onboard, how to input, how to give feedback, how to present media). For component-level usage, see Apple HIG Component Decision Guide (63 Components · When to Use Which); this is the flow layer. Each pattern provides core principles + practices + anti-patterns.
I. Onboarding Trio: Launch → Load → Onboard
| Pattern |
Core Principle |
Key do/don't |
| Launching |
The launch screen exists only to 'create a sense of fast loading'; do not treat it as an art/brand placement |
iOS/iPadOS/tvOS require a launch screen (macOS/visionOS/watchOS do not);Launch screen = a solid-color/layout approximation of the first screen; no text allowed(cannot be localized), no ads; restore the previous state |
| Loading |
The best loading is 'completed before the user notices' |
Show placeholders (skeletons) first; load in the background so users can do other things; use a progress indicator for loads >1–2 seconds; provide engaging content for long loads; on watchOS, aim for instant response and avoid showing loading spinners as much as possible |
| Onboarding |
Teach through interaction(doing is better remembered than watching); keep it concise, fun, and optional |
Contextual tips > fixed flows; tutorials must be skippable (do not show them again after skipping); defer nonessential setup (provide good defaults); do not stuff license agreements into onboarding; do not block onboarding with large downloads |
· Offering help: Use inline/popover tips for simple tasks Tip(1–3 steps, action-oriented, 1–2 sentences); provide tutorials for complex tasks; on macOS/visionOS, tooltips should be ≤60–75 characters, use sentence case, and start with a verb.
II. Data and Input
| Pattern |
Core Principle |
Key do/don't |
| Entering data |
Do not make users type manually if information can be obtained automatically |
Use field prompts + clear labels to indicate what is needed; prefill sensible defaults; use secure fields for sensitive information;do not prefill passwords; provide selection options to reduce typing; perform dynamic validation; gray out the 'Next' button if required fields are not filled |
| Drag and drop |
Within the same container = move; across containers/apps = copy |
Support drag and drop across the entire app as much as possible; provide alternative methods (e.g., copy via menu); support multi-item drag and drop; show a translucent drag image as soon as dragging starts; highlight valid targets and show a prohibited icon for invalid targets; support Spring Loading (hover activation) |
| Undo/redo |
Let users explore safely |
Support multiple levels of undo (do not set unnecessary limits); label menu items as 'Undo Typing/Redo Bold'; automatically scroll back to show affected content when undo impacts out-of-view content; do not redefine the three-finger swipe/shake gestures; on macOS, place Undo in the Edit menu with Cmd-Z |
| Searching |
Make content indexable (so Spotlight can search across apps) |
Make content indexable by Spotlight; support history/suggestions/autocomplete/error correction/filtering; system-provided saved views include a search bar by default |
| Charting |
Not all data is suitable for charts |
Use lists/tables for simple information; highlight key information; do not overcrowd; use common chart types (bar/line); keep consistency across multiple charts;Accessibility is mandatory(descriptions + labels) |
III. Feedback and Interruptions (in order of increasing intrusiveness)
| Pattern |
Core Principle |
Key do/don't |
| Feedback |
Choose presentation method based on information importance (passive status vs. interruptive alert) |
Use multiple channels(color + text + sound + haptics) to ensure accessibility; integrate status feedback into the interface (e.g., show unread count in the toolbar); only interrupt with alerts when necessary; confirm success only for important tasks (e.g., Apple Pay) |
| Modality |
Use only to 'help users focus or make critical decisions' |
Keep modal tasks simple and short; do not create 'an app within an app' (deep hierarchies cause disorientation); use full-screen modals for complex tasks; provide an obvious way to close; ask for confirmation when closing may cause data loss; do not stack multiple modals |
| Managing notifications |
Interruption level must 'honestly' reflect urgency |
Four levels: Passive/Active (default)/Time-sensitive/Critical; use Time-sensitive only for truly time-relevant content;Marketing notifications must require explicit authorization and must not use the Time-sensitive level; support Focus modes |
IV. Accounts and Settings
| Pattern |
Core principle |
Key do/don't |
| Managing accounts |
Accounts should not be a barrier to use |
If core functionality does not depend on an account, do not force registration;Delay sign-in as much as possible(let users experience value first); prioritize Sign in with Apple / Passkey;If users can create an account, they must be able to delete it(and the path must be obvious, not hidden in privacy terms) |
| Settings |
Users expect "out-of-the-box" functionality, but need adjustments when necessary |
Provide good defaults; reduce the number of settings; follow system-wide settings instead of duplicating them; place general settings in the custom settings area and task-related settings within the task interface; open settings with Cmd-,; do not repeatedly request information that can be automatically detected |
| Ratings/reviews |
A good experience is the prerequisite for positive reviews; timing matters more than frequency |
Request after users are invested (completing a level/task); do not interrupt or request during onboarding; use the system rating prompt (maximum 3 times per 365 days); space requests 1–2 weeks apart |
V. Content and Media
| Pattern |
Core principle |
Key do/don't |
| Playing audio |
Behavior matches user expectations for volume/mute/headphones |
In silent mode, only play audio actively initiated by the user; select the audio category according to purpose (Ambient/Playback/Record… which determines mixing/background behavior/response to mute); support audio redirection; after handling interruptions (such as incoming calls), determine whether to resume playback |
| Playing video |
Use the system player (familiar and consistent) |
Maintain the original aspect ratio (do not embed letterboxing); use the space bar to play/pause; do not mix audio sources; on tvOS, keep overlays small and unobtrusive; on visionOS, let users control when playback starts and allow window adjustment, do not auto-enter full immersion; on watchOS, keep videos ≤30 seconds |
| Playing haptics |
Use system predefined patterns (users already have recognition), as a supplement rather than the dominant element |
Be consistent across the entire app (to establish cause and effect); do not overuse (users should not notice them when on, but miss them when off); prioritize short haptics; provide an option to turn them off; use three types of generators (notification/impact/selection) |
| Going full screen |
Let users independently decide when to enter and exit full screen |
Use only for focus/immersion scenarios; do not programmatically change window size proactively; core controls must remain accessible in full screen; allow the Dock to be displayed on iPadOS/macOS; restore state when exiting; Apple TV/Watch have no full-screen mode (the screen is already full) |
| Live-viewing |
Provide the shortest path to live content |
Place live content in the first tab for one-tap viewing; visually distinguish live vs on-demand content; show live progress; highlight the current program in the EPG; provide immediate feedback when switching channels; support cloud DVR |
VI. System Collaboration
| Pattern |
Core principle |
Key do/don't |
| Collaboration |
Simple, responsive, handle content while communicating |
Place the share button in a prominent position (toolbar); provide clear permission descriptions ("Only invited people can edit"); make the collaboration button prominent (indicate sharers); include only necessary custom actions; support SharePlay immersive sharing on visionOS |
| File management |
Auto-save, hide file extensions |
Do not require users to save manually (auto-save when editing/closing/switching); hide extensions by default (with option to show); support Quick Look preview; use the system document picker on iOS 18+; prioritize Finder on macOS |
| Multitasking |
Auto-pause when switching away, resume seamlessly when switching back |
Almost all apps must support multitasking; handle audio interruptions smoothly; complete user-initiated tasks in the background; adapt iPad to Split View/Slide Over/Picture in Picture (the app does not control configuration);Open new windows only when explicitly requested by the user |
| Printing |
Use system printing functionality, place it in standard locations |
Place it in the "File" menu on macOS and in the action sheet on iOS; gray out/hide it when printing is unavailable; macOS allows custom print panel categories; save modified print settings |
| Workouts |
Display only the data users care about most during exercise, do not distract them |
Show calories/time/heart rate + pause/end controls; use large text with high contrast; truthfully inform users when sensors are unavailable (e.g., water interference with heart rate during swimming); provide a summary at the end (with activity rings); discard overly short records |
Sourced from Patterns (25 articles). For component-level usage, see Apple HIG Component Decision Guide (63 Components · When to Use Which); for input methods (gestures/keyboard/Pencil, etc.), see Apple HIG Inputs (13 Types · Touch/Gestures/Keyboard/Pointer/Pencil/Crown/Eye Tracking/Remote/Game Controller); accessibility/privacy runs throughout, see Apple HIG Accessibility and Ethics (Nine Principles/Inclusivity/Privacy/Copywriting/RTL).
Sources and related materials