Apple's Human Interface Guidelines (HIG) are the design contract for every iOS app on the App Store. Apple won't quote chapter and verse during reviews, but reviewers will reject apps that violate the spirit of HIG, and users will quietly delete apps that feel "off." This post is the practical 2026 guide: what actually matters, what triggers rejections, and the polish patterns that separate premium-feeling iOS apps from amateur ones.
What HIG actually is
HIG is Apple's documented design philosophy for every Apple platform: iOS, iPadOS, macOS, tvOS, watchOS, visionOS. It covers everything from how to use color and typography to navigation patterns, controls, motion, accessibility, and platform-specific idioms.
You read it here: developer.apple.com/design/human-interface-guidelines. It's regularly updated as platforms evolve.
Why HIG matters (App Store reviewers + real users)
- App Store reviewers reference HIG when assessing whether an app "feels native." Substantial HIG violations get rejection notes like "doesn't match iOS conventions" or "confusing navigation."
- Users have absorbed HIG implicitly. Twenty years of native iOS apps have trained users to expect certain things โ and an app that breaks these expectations feels broken, even if they can't articulate why.
- SwiftUI is HIG-aligned by default. If you use SwiftUI's built-in components, you get most HIG compliance for free. Going custom is where you start to deviate.
Six core HIG principles
- Hierarchy. Visual weight should match importance. The most important action is the most prominent.
- Harmony. Visual style is consistent throughout the app. No fonts changing between screens, no random color shifts.
- Consistency. Patterns the user learns in one part of the app work the same in every part.
- Feedback. Every user action gets clear feedback โ visual, haptic, or auditory.
- Depth. Layered surfaces (sheets, popovers, modals) convey relationships between screens.
- Direct manipulation. Users should feel like they're touching their data, not telling the app what to do.
Layout: safe areas, dynamic type, density
- Safe areas. Respect the dynamic island, notch, home indicator. SwiftUI's
.safeAreaInset()and.ignoresSafeArea()are your tools. - Touch targets โฅ 44 ร 44 pt. Apple's minimum tap target. Tiny buttons are a top accessibility violation.
- Dynamic Type. Users can scale text from XS to XXXL accessibility size. Test at the extremes. Hardcoded font sizes break in Accessibility Type sizes.
- Density. iOS apps lean comfortable, not dense. If you came from web with packed dashboards, the iOS instinct is more whitespace.
- Edge-to-edge content. Modern iOS apps push content to screen edges with content-aware navigation bars that translucently overlay. Avoid heavy chrome.
Navigation patterns
- Tab bars for top-level, parallel app sections (3-5 tabs). Use them for navigation between equivalent areas.
- Navigation stacks for hierarchical drill-down. The classic master/detail pattern.
- Modal sheets (full-screen, page sheet, form sheet) for self-contained tasks. User must finish or cancel to return.
- Popovers on iPad / Mac for transient controls. Not on iPhone โ use sheets instead.
- Inspector / sidebar on iPad for persistent secondary content.
- Back buttons. System back-swipe should work everywhere. Custom back buttons that don't behave like the standard one are a rejection trigger.
Use NavigationStack over NavigationView in modern SwiftUI — it's the supported pattern.
Typography
- San Francisco is the system font. It scales, it handles Dynamic Type, it ships with Apple. Use it unless you have a strong brand reason otherwise.
- Apple's text styles (Large Title, Title 1/2/3, Headline, Body, Callout, Subheadline, Footnote, Caption 1/2) cover most needs. They handle Dynamic Type automatically.
- Custom fonts are fine if they're licensed, support Dynamic Type via
.scaledFont(), and don't sacrifice legibility. - Line height, tracking, weight follow Apple's recommendations — SwiftUI text styles give you these automatically.
Color & dark mode
- Semantic colors. Use
.primary,.secondary,.tertiary,.background— these adapt to light/dark mode automatically. - Asset catalog colors with light/dark variants for brand colors.
- System tint (
.tint(.accentColor)) for interactive elements. - Dark mode is not optional in 2026. Users notice when apps don't support it. Test every screen.
- Contrast. WCAG AA minimum (4.5:1 for body text). Especially important on tinted backgrounds.
- Don't use color alone to communicate state (color-blind users). Always pair color with an icon, text label, or position.
SF Symbols
SF Symbols is Apple's icon library โ 6,000+ symbols designed to pair with San Francisco, supporting weight, scale, color, and multi-color variants. Use them everywhere you need an icon.
Why: free, optimized, accessible (built-in VoiceOver names), scale perfectly with Dynamic Type, dark-mode aware, consistent with the OS chrome users see daily.
Tool: download SF Symbols.app from Apple. Browse, copy, paste names into your code.
Materials & depth
Apple's "materials" are translucent surfaces that blur and tint content behind them:
.ultraThinMaterial,.thinMaterial,.regularMaterial,.thickMaterial,.ultraThickMaterial- Use for navigation bars, sheets, popovers โ they create the iOS sense of depth.
- Don't use solid backgrounds where Apple uses materials โ your app immediately feels off.
Motion & animation
- System animations are short and snappy. 250-400ms typical. Long animations feel laggy.
- Use spring animations (
.spring()) for natural feel rather than linear. - Respect Reduce Motion. Users can disable animations system-wide;
@Environment(\.accessibilityReduceMotion)lets you check. - Haptic feedback for important moments —
UIImpactFeedbackGeneratoror SwiftUI's.sensoryFeedback(). - Don't over-animate. Every transition shouldn't be a 1-second flourish. Animation is communication, not decoration.
Accessibility
Accessibility is HIG-mandatory. Skip it and you're closing your app to ~15% of potential users plus violating Apple's stated guidance.
- VoiceOver labels. Every interactive element should have a meaningful
.accessibilityLabel(). Test by enabling VoiceOver on a real device. - Dynamic Type support. Already mentioned. Critical.
- Color blindness. Don't use color alone.
- Reduce Motion + Reduce Transparency support.
- Sufficient contrast. 4.5:1 minimum for body text.
- Voice Control compatibility. Test that elements can be activated by name.
Common rejection triggers tied to HIG
- "App doesn't feel native." Web-view-wrapped sites with poor scrolling or non-iOS controls.
- Tiny touch targets. Buttons below 44pt.
- Custom non-standard navigation that confuses users.
- Missing back swipe in navigation hierarchies.
- Hidden essential controls. Important actions in non-discoverable menus.
- Modal traps. Sheets without clear dismissal.
- Inconsistent platform conventions — Android-style hamburger menus on iOS, e.g.
- Inadequate dark mode — some screens dark, others stuck light.
- Broken Dynamic Type — text clipping at large sizes.
- Permission requests too early — asking for location/contacts before context makes the use case clear.
Polish patterns that lift apps from "functional" to "premium"
This is what made you ask about it. Your RDR2 and GTA V apps function well; you want them to feel premium. These are the patterns:
- Empty states with personality. Empty list views with thoughtful illustrations + suggested next actions.
- Loading states that aren't spinners. Skeleton screens, progressive content reveal, branded loaders.
- Pull-to-refresh on every refreshable list.
- Swipe actions on rows (delete, archive, favorite).
- Long-press menus with thoughtful options (
.contextMenu). - Subtle animations on state transitions — don't pop in, fade or slide.
- Haptics on key moments (success, error, important taps).
- Icon + label clarity in tab bars (Apple shows both by default for a reason).
- Smart defaults — if 90% of users want a setting on, default it on.
- Onboarding that ends in success — the user does something real and gets value before account creation.
- Confirmation only for destructive actions — not for every interaction.
- Native share sheets for sharing rather than custom UI.
- App icon that looks great at every size โ test on Home Screen, Settings, Spotlight.
- Settings screen that feels like the Settings app — same grouped table style.
- App-icon variants for paid users / Pro tier as a fun unlock.
Pre-submission HIG checklist
- Every screen tested in both light and dark mode.
- Dynamic Type tested at smallest (xSmall) and largest (xxxLarge + accessibility).
- VoiceOver works through every flow.
- All touch targets โฅ 44 ร 44 pt.
- System back-swipe works in every navigation hierarchy.
- No "press here to learn more" arrows pointing at the OS chrome.
- App icon looks right on Home Screen + Settings.
- Empty states + loading states + error states all designed (not just default spinners).
- Permission requests appear in context, not at launch.
- App passes the "iPhone SE test" — works on the smallest current iPhone.
- App passes the "Pro Max test" — uses the larger screen meaningfully.
- If iPad-supported: adaptive layout, sidebar where appropriate, keyboard shortcuts.
See also: Claude at Maximum Efficiency (the design-overhaul workflow), iOS App Economics, Shipping RDR2.
- Apple โ Human Interface Guidelines
- Apple โ SF Symbols
- Apple โ Accessibility