Apple HIG SwiftUI iOS 26 / Swift 6.2 Best Practices
A principal designer's lens for evaluating and refactoring SwiftUI interfaces to Apple-quality standards, grounded in Rams, Segall, and Edson. Contains 51 rules across 8 categories, each grounded in specific principles from three foundational design texts:
- Dieter Rams — Ten Principles for Good Design ("less, but better," "design should be honest")
- Ken Segall — Insanely Simple (simplicity as a core principle for intuitive, beautiful products)
- John Edson — Design Like Apple (design-focused culture, prototyping to perfection, the product is the marketing)
Categories are ordered by a visual review process: start with what to remove, then what to clarify, then what to make honest, invisible, systematic, thorough, enduring, and finally what to refine.
Scope & Relationship to Sibling Skills
This skill is the
refactoring and review lens — it evaluates existing UI and identifies visual anti-patterns to fix. When loaded alongside
(building new UI),
(HIG compliance), or
(code-level refactoring), this skill supersedes overlapping rules with more detailed "incorrect -> correct" transformations and "When NOT to apply" guidance. Use this skill for auditing and improving existing screens; use the siblings for greenfield implementation.
Clinic Architecture Contract (iOS 26 / Swift 6.2)
All guidance in this skill assumes the clinic modular MVVM-C architecture:
- Feature modules import + only (never , never sibling features)
- App target is the convergence point and owns , concrete coordinators, and Route Shell wiring
- stays pure Swift and defines models plus repository, , , and contracts
- owns SwiftData/network/sync/retry/background I/O and implements Domain protocols
- Read/write flow defaults to stale-while-revalidate reads and optimistic queued writes
- ViewModels call repository protocols directly (no default use-case/interactor layer)
When to Apply
Reference these guidelines when:
- Reviewing existing SwiftUI screens for visual quality issues
- Auditing whether every element on screen earns its place (Rams #10)
- Evaluating if the interface is self-explanatory without tooltips (Rams #4)
- Checking that colors, states, and hierarchy tell the truth (Rams #6)
- Ensuring animations and materials are invisible, not decorative (Rams #5)
- Verifying spacing, radii, and colors form a coherent system (Edson "Systems Thinking")
- Confirming edge cases — reduce motion, touch targets, safe areas — are handled (Rams #8)
- Adopting iOS 26 / Swift 6.2 APIs that refine previously impossible interactions (Edson "Design Out Loud")
Rule Categories by Priority
| Priority | Category | Principle | Impact | Prefix | Rules |
|---|
| 1 | Less, But Better | Rams #10 + Segall "Think Minimal" | CRITICAL | | 7 |
| 2 | Self-Evident Design | Rams #4 + Segall "Think Human" | CRITICAL | | 6 |
| 3 | Honest Interfaces | Rams #6 + Segall "Think Brutal" | CRITICAL | | 6 |
| 4 | Invisible Design | Rams #5 + Edson "Product Is Marketing" | HIGH | | 6 |
| 5 | Systems, Not Pieces | Edson "Systems Thinking" + Rams #8 | HIGH | | 6 |
| 6 | Thorough to the Last Detail | Rams #8 + Rams #2 | HIGH | | 7 |
| 7 | Enduring Over Trendy | Rams #7 + Edson "Design With Conviction" | MEDIUM-HIGH | | 5 |
| 8 | Refined Through Iteration | Edson "Design Out Loud" + Rams #1/#3 | MEDIUM | | 8 |
Quick Reference
1. Less, But Better (CRITICAL)
Rams #10: "Good design is as little design as possible." Segall: Apple succeeded by saying no to a thousand things.
- - One primary focal point per screen
- - Limit to 3-4 distinct type treatments per screen
- - One typeface per app, differentiate with weight and size
- - Reserve saturated colors for small interactive elements
- - Each semantic color serves exactly one purpose
- - Every animation must communicate state change or provide feedback
- - Remove controls that do not serve the core task
2. Self-Evident Design (CRITICAL)
Rams #4: "Good design makes a product understandable." Segall: interfaces must speak in terms people understand.
- - Combine size, weight, and contrast for hierarchy
evident-whitespace-grouping
- Use whitespace to separate conceptual groups
evident-progressive-disclosure
- Use progressive disclosure for dense information
- - Align visual weight with logical reading order
evident-navigation-intent
- Sheets for tasks and creation, push for drill-down hierarchy
- - Use clear labels over ambiguous icons
3. Honest Interfaces (CRITICAL)
Rams #6: "Good design is honest." Segall: clarity without sugar-coating.
- - Use semantic colors, never hard-coded black or white
- - Ensure WCAG AA contrast ratios
- - Define light and dark variants for every custom color
- - Use foregroundStyle over foregroundColor
- - Use materials for layering, not drop shadows for depth
- - Show real progress, not indefinite spinners
4. Invisible Design (HIGH)
Rams #5: "Good design is unobtrusive." Edson: the product itself is the marketing.
- - Default to spring animations for all UI transitions
- - Use .smooth for routine, .snappy for interactive, .bouncy for delight
- - Prefer springs over linear and easeInOut for UI elements
invisible-system-materials
- Use system materials, not custom semi-transparent backgrounds
- - Use built-in symbolEffect, not manual symbol animation
invisible-content-transitions
- Use contentTransition for changing text and numbers
5. Systems, Not Pieces (HIGH)
Edson: "Design is systems thinking." Rams #8: nothing must be arbitrary or left to chance.
- - Use a 4pt base unit for all spacing
system-consistent-padding
- Use consistent padding across all screens
- - Standardize corner radii per component type
- - Consistent alignment per content type within a screen
- - Name custom colors by role, not hue
- - Map brand palette onto iOS semantic color roles
6. Thorough to the Last Detail (HIGH)
Rams #8: "Care and accuracy in the design process show respect for the user." Rams #2: if the user cannot reliably use it, the product has failed.
- - Always provide reduce motion fallback
- - All interactive elements at least 44x44 points
- - Always respect safe areas
thorough-readable-weights
- Avoid light font weights for body text
- - Match vibrancy level to content importance
thorough-material-thickness
- Choose material thickness by contrast needs
thorough-background-interaction
- Enable background interaction for peek-style sheets
7. Enduring Over Trendy (MEDIUM-HIGH)
Rams #7: "Good design is long-lasting." Edson: commit to a voice that persists across product generations.
enduring-system-text-styles
- Use Apple text styles, never fixed font sizes
- - Use weight for emphasis, not ALL CAPS
- - Never break the system back-swipe gesture
- - Use zoom transitions for collection-to-detail navigation
- - Use self-contained cards for dashboard layouts
8. Refined Through Iteration (MEDIUM)
Edson: "Design out loud" — prototype relentlessly until every interaction feels inevitable. Rams #1: innovation serves genuine purpose.
refined-scroll-transitions
- Use scrollTransition for scroll-position visual effects
- - Use PhaseAnimator for multi-step animation sequences
- - Use MeshGradient for premium dynamic backgrounds
- - Use TextRenderer for hero text animations only
- - Use inspector for trailing-edge detail panels
- - Provide multiple sheet detents with drag indicator
- - Use matchedGeometryEffect for contextual origin transitions
- - Always animate between states, even minimally
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions - Category structure, principle sources, and impact levels
- Rule template - Template for adding new rules
Reference Files
| File | Description |
|---|
| references/_sections.md | Category definitions and principle grounding |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |