apple-hig

Applies Apple Human Interface Guidelines when designing and reviewing SwiftUI and UIKit interfaces.

2|Updated Jun 27, 2026
One-click install
npx skills add https://github.com/imjasonh/playground --skill apple-hig-imjasonh
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: apple-hig
Source: https://github.com/imjasonh/playground/tree/main/.cursor/skills/apple-hig
Command: npx skills add https://github.com/imjasonh/playground --skill apple-hig-imjasonh

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Apple-platform UI often ships with unlabeled icon buttons, undersized hit targets, bare empty states, and hardcoded colors that break Dark Mode and VoiceOver. This Skill gives you a working subset of Apple's Human Interface Guidelines so iOS, iPadOS, macOS, watchOS, and visionOS interfaces feel native and pass accessibility review. ## Core Features & Use Cases - Non-negotiable checklist: Ten concrete rules covering accessibility labels, 44×44 pt hit targets, Dynamic Type text styles, empty states, platform controls, and destructive-action confirmation. - HIG topic routing: A lookup table maps each design situation (VoiceOver, buttons, layout, SF Symbols, color, typography, feedback) to the correct official Apple HIG page. - Ready-to-use SwiftUI patterns: Code snippets for labeled icon-only buttons, enlarged tappable frames, ContentUnavailableView empty states, and iOS 16-compatible fallbacks. - Use Case: While adding a camera flip button to an iOS app, consult this Skill to add the correct .accessibilityLabel describing the next state, meet the 44×44 pt hit target, and pick the right SF Symbol variant. ## Quick Start Review my SwiftUI view against the Apple HIG checklist and fix any accessibility labels, hit targets, or empty states that fall short.

Frequently Asked Questions about apple-hig

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make icon-only SwiftUI buttons accessible to VoiceOver?▼

Add an `.accessibilityLabel` with a spoken name like "Send" to every icon-only button, since SF Symbol names alone are not read reliably. Use `accessibilityIdentifier` only for UI tests; it is not a substitute for a VoiceOver label.

What is the minimum hit target size for iOS buttons?▼

Aim for 44×44 pt on iPhone and iPad, with 28×28 pt as the absolute minimum; macOS defaults to 28×28 pt. The visual glyph can be smaller if you expand the tappable frame with `.frame(minWidth: 44, minHeight: 44)` and `.contentShape(Rectangle())`.

How do I show an empty state in SwiftUI on iOS 16?▼

Use `ContentUnavailableView` on iOS 17+ and macOS 14+. For iOS 16, build an equivalent VStack with an SF Symbol hidden from VoiceOver, a headline title, and a short description explaining what is missing and the next step.

Does Dynamic Type work with fixed font sizes in SwiftUI?▼

Fixed `.system(size:)` fonts do not scale with Dynamic Type and should be avoided for primary UI chrome. Prefer text styles like `.body` and `.headline`, or scale custom sizes with `@ScaledMetric` or `UIFontMetrics`.

When should I confirm destructive actions in an iOS app?▼

Confirm when an action deletes data or changes the system and is hard to undo. Mark the button with `role: .destructive` and present a confirmation dialog rather than acting immediately.