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 ios-design (building new UI), ios-hig (HIG compliance), or swift-refactor (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
Domain + DesignSystem only (never Data, never sibling features)
- App target is the convergence point and owns
DependencyContainer, concrete coordinators, and Route Shell wiring
Domain stays pure Swift and defines models plus repository, *Coordinating, ErrorRouting, and AppError contracts
Data 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 |
less- |
7 |
| 2 |
Self-Evident Design |
Rams #4 + Segall "Think Human" |
CRITICAL |
evident- |
6 |
| 3 |
Honest Interfaces |
Rams #6 + Segall "Think Brutal" |
CRITICAL |
honest- |
6 |
| 4 |
Invisible Design |
Rams #5 + Edson "Product Is Marketing" |
HIGH |
invisible- |
6 |
| 5 |
Systems, Not Pieces |
Edson "Systems Thinking" + Rams #8 |
HIGH |
system- |
6 |
| 6 |
Thorough to the Last Detail |
Rams #8 + Rams #2 |
HIGH |
thorough- |
7 |
| 7 |
Enduring Over Trendy |
Rams #7 + Edson "Design With Conviction" |
MEDIUM-HIGH |
enduring- |
5 |
| 8 |
Refined Through Iteration |
Edson "Design Out Loud" + Rams #1/#3 |
MEDIUM |
refined- |
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.
less-single-focal - One primary focal point per screen
less-type-restraint - Limit to 3-4 distinct type treatments per screen
less-one-typeface - One typeface per app, differentiate with weight and size
less-color-restraint - Reserve saturated colors for small interactive elements
less-one-color-purpose - Each semantic color serves exactly one purpose
less-purposeful-motion - Every animation must communicate state change or provide feedback
less-fewer-controls - 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.
evident-visual-weight - 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
evident-reading-order - Align visual weight with logical reading order
evident-navigation-intent - Sheets for tasks and creation, push for drill-down hierarchy
evident-label-clarity - Use clear labels over ambiguous icons
3. Honest Interfaces (CRITICAL)
Rams #6: "Good design is honest." Segall: clarity without sugar-coating.
honest-semantic-colors - Use semantic colors, never hard-coded black or white
honest-contrast - Ensure WCAG AA contrast ratios
honest-dark-mode - Define light and dark variants for every custom color
honest-foreground-style - Use foregroundStyle over foregroundColor
honest-depth-cues - Use materials for layering, not drop shadows for depth
honest-loading-states - Show real progress, not indefinite spinners
4. Invisible Design (HIGH)
Rams #5: "Good design is unobtrusive." Edson: the product itself is the marketing.
invisible-spring-physics - Default to spring animations for all UI transitions
invisible-spring-presets - Use .smooth for routine, .snappy for interactive, .bouncy for delight
invisible-no-easing - Prefer springs over linear and easeInOut for UI elements
invisible-system-materials - Use system materials, not custom semi-transparent backgrounds
invisible-symbol-effects - 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.
system-spacing-grid - Use a 4pt base unit for all spacing
system-consistent-padding - Use consistent padding across all screens
system-corner-radii - Standardize corner radii per component type
system-alignment - Consistent alignment per content type within a screen
system-color-naming - Name custom colors by role, not hue
system-brand-integration - 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.
thorough-reduce-motion - Always provide reduce motion fallback
thorough-touch-targets - All interactive elements at least 44x44 points
thorough-safe-areas - Always respect safe areas
thorough-readable-weights - Avoid light font weights for body text
thorough-vibrancy-levels - 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
enduring-weight-not-caps - Use weight for emphasis, not ALL CAPS
enduring-swipe-back - Never break the system back-swipe gesture
enduring-zoom-navigation - Use zoom transitions for collection-to-detail navigation
enduring-card-modularity - 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
refined-phase-animator - Use PhaseAnimator for multi-step animation sequences
refined-mesh-gradients - Use MeshGradient for premium dynamic backgrounds
refined-text-renderer - Use TextRenderer for hero text animations only
refined-inspector - Use inspector for trailing-edge detail panels
refined-multi-detent - Provide multiple sheet detents with drag indicator
refined-matched-geometry - Use matchedGeometryEffect for contextual origin transitions
refined-no-hard-cuts - 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 |
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: ios-ui-refactor3description: Principal-level SwiftUI UI review and refactoring patterns for iOS 26 / Swift 6.2 clinic-architecture apps, grounded in Rams, Segall, and Edson principles. Use when auditing or improving existing SwiftUI screens, transitions, animations, and visual systems while preserving brand identity and respecting clinic Domain/Data/App boundaries. Use when this capability is needed.4---56# Apple HIG SwiftUI iOS 26 / Swift 6.2 Best Practices78A 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:910- **Dieter Rams** — *Ten Principles for Good Design* ("less, but better," "design should be honest")11- **Ken Segall** — *Insanely Simple* (simplicity as a core principle for intuitive, beautiful products)12- **John Edson** — *Design Like Apple* (design-focused culture, prototyping to perfection, the product is the marketing)1314Categories 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.1516## Scope & Relationship to Sibling Skills1718This skill is the **refactoring and review lens** — it evaluates existing UI and identifies visual anti-patterns to fix. When loaded alongside `ios-design` (building new UI), `ios-hig` (HIG compliance), or `swift-refactor` (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.192021## Clinic Architecture Contract (iOS 26 / Swift 6.2)2223All guidance in this skill assumes the clinic modular MVVM-C architecture:2425- Feature modules import `Domain` + `DesignSystem` only (never `Data`, never sibling features)26- App target is the convergence point and owns `DependencyContainer`, concrete coordinators, and Route Shell wiring27- `Domain` stays pure Swift and defines models plus repository, `*Coordinating`, `ErrorRouting`, and `AppError` contracts28- `Data` owns SwiftData/network/sync/retry/background I/O and implements Domain protocols29- Read/write flow defaults to stale-while-revalidate reads and optimistic queued writes30- ViewModels call repository protocols directly (no default use-case/interactor layer)3132## When to Apply3334Reference these guidelines when:35- Reviewing existing SwiftUI screens for visual quality issues36- Auditing whether every element on screen earns its place (Rams #10)37- Evaluating if the interface is self-explanatory without tooltips (Rams #4)38- Checking that colors, states, and hierarchy tell the truth (Rams #6)39- Ensuring animations and materials are invisible, not decorative (Rams #5)40- Verifying spacing, radii, and colors form a coherent system (Edson "Systems Thinking")41- Confirming edge cases — reduce motion, touch targets, safe areas — are handled (Rams #8)42- Adopting iOS 26 / Swift 6.2 APIs that refine previously impossible interactions (Edson "Design Out Loud")4344## Rule Categories by Priority4546| Priority | Category | Principle | Impact | Prefix | Rules |47|----------|----------|-----------|--------|--------|-------|48| 1 | Less, But Better | Rams #10 + Segall "Think Minimal" | CRITICAL | `less-` | 7 |49| 2 | Self-Evident Design | Rams #4 + Segall "Think Human" | CRITICAL | `evident-` | 6 |50| 3 | Honest Interfaces | Rams #6 + Segall "Think Brutal" | CRITICAL | `honest-` | 6 |51| 4 | Invisible Design | Rams #5 + Edson "Product Is Marketing" | HIGH | `invisible-` | 6 |52| 5 | Systems, Not Pieces | Edson "Systems Thinking" + Rams #8 | HIGH | `system-` | 6 |53| 6 | Thorough to the Last Detail | Rams #8 + Rams #2 | HIGH | `thorough-` | 7 |54| 7 | Enduring Over Trendy | Rams #7 + Edson "Design With Conviction" | MEDIUM-HIGH | `enduring-` | 5 |55| 8 | Refined Through Iteration | Edson "Design Out Loud" + Rams #1/#3 | MEDIUM | `refined-` | 8 |5657## Quick Reference5859### 1. Less, But Better (CRITICAL)6061Rams #10: "Good design is as little design as possible." Segall: Apple succeeded by saying no to a thousand things.6263- [`less-single-focal`](references/less-single-focal.md) - One primary focal point per screen64- [`less-type-restraint`](references/less-type-restraint.md) - Limit to 3-4 distinct type treatments per screen65- [`less-one-typeface`](references/less-one-typeface.md) - One typeface per app, differentiate with weight and size66- [`less-color-restraint`](references/less-color-restraint.md) - Reserve saturated colors for small interactive elements67- [`less-one-color-purpose`](references/less-one-color-purpose.md) - Each semantic color serves exactly one purpose68- [`less-purposeful-motion`](references/less-purposeful-motion.md) - Every animation must communicate state change or provide feedback69- [`less-fewer-controls`](references/less-fewer-controls.md) - Remove controls that do not serve the core task7071### 2. Self-Evident Design (CRITICAL)7273Rams #4: "Good design makes a product understandable." Segall: interfaces must speak in terms people understand.7475- [`evident-visual-weight`](references/evident-visual-weight.md) - Combine size, weight, and contrast for hierarchy76- [`evident-whitespace-grouping`](references/evident-whitespace-grouping.md) - Use whitespace to separate conceptual groups77- [`evident-progressive-disclosure`](references/evident-progressive-disclosure.md) - Use progressive disclosure for dense information78- [`evident-reading-order`](references/evident-reading-order.md) - Align visual weight with logical reading order79- [`evident-navigation-intent`](references/evident-navigation-intent.md) - Sheets for tasks and creation, push for drill-down hierarchy80- [`evident-label-clarity`](references/evident-label-clarity.md) - Use clear labels over ambiguous icons8182### 3. Honest Interfaces (CRITICAL)8384Rams #6: "Good design is honest." Segall: clarity without sugar-coating.8586- [`honest-semantic-colors`](references/honest-semantic-colors.md) - Use semantic colors, never hard-coded black or white87- [`honest-contrast`](references/honest-contrast.md) - Ensure WCAG AA contrast ratios88- [`honest-dark-mode`](references/honest-dark-mode.md) - Define light and dark variants for every custom color89- [`honest-foreground-style`](references/honest-foreground-style.md) - Use foregroundStyle over foregroundColor90- [`honest-depth-cues`](references/honest-depth-cues.md) - Use materials for layering, not drop shadows for depth91- [`honest-loading-states`](references/honest-loading-states.md) - Show real progress, not indefinite spinners9293### 4. Invisible Design (HIGH)9495Rams #5: "Good design is unobtrusive." Edson: the product itself is the marketing.9697- [`invisible-spring-physics`](references/invisible-spring-physics.md) - Default to spring animations for all UI transitions98- [`invisible-spring-presets`](references/invisible-spring-presets.md) - Use .smooth for routine, .snappy for interactive, .bouncy for delight99- [`invisible-no-easing`](references/invisible-no-easing.md) - Prefer springs over linear and easeInOut for UI elements100- [`invisible-system-materials`](references/invisible-system-materials.md) - Use system materials, not custom semi-transparent backgrounds101- [`invisible-symbol-effects`](references/invisible-symbol-effects.md) - Use built-in symbolEffect, not manual symbol animation102- [`invisible-content-transitions`](references/invisible-content-transitions.md) - Use contentTransition for changing text and numbers103104### 5. Systems, Not Pieces (HIGH)105106Edson: "Design is systems thinking." Rams #8: nothing must be arbitrary or left to chance.107108- [`system-spacing-grid`](references/system-spacing-grid.md) - Use a 4pt base unit for all spacing109- [`system-consistent-padding`](references/system-consistent-padding.md) - Use consistent padding across all screens110- [`system-corner-radii`](references/system-corner-radii.md) - Standardize corner radii per component type111- [`system-alignment`](references/system-alignment.md) - Consistent alignment per content type within a screen112- [`system-color-naming`](references/system-color-naming.md) - Name custom colors by role, not hue113- [`system-brand-integration`](references/system-brand-integration.md) - Map brand palette onto iOS semantic color roles114115### 6. Thorough to the Last Detail (HIGH)116117Rams #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.118119- [`thorough-reduce-motion`](references/thorough-reduce-motion.md) - Always provide reduce motion fallback120- [`thorough-touch-targets`](references/thorough-touch-targets.md) - All interactive elements at least 44x44 points121- [`thorough-safe-areas`](references/thorough-safe-areas.md) - Always respect safe areas122- [`thorough-readable-weights`](references/thorough-readable-weights.md) - Avoid light font weights for body text123- [`thorough-vibrancy-levels`](references/thorough-vibrancy-levels.md) - Match vibrancy level to content importance124- [`thorough-material-thickness`](references/thorough-material-thickness.md) - Choose material thickness by contrast needs125- [`thorough-background-interaction`](references/thorough-background-interaction.md) - Enable background interaction for peek-style sheets126127### 7. Enduring Over Trendy (MEDIUM-HIGH)128129Rams #7: "Good design is long-lasting." Edson: commit to a voice that persists across product generations.130131- [`enduring-system-text-styles`](references/enduring-system-text-styles.md) - Use Apple text styles, never fixed font sizes132- [`enduring-weight-not-caps`](references/enduring-weight-not-caps.md) - Use weight for emphasis, not ALL CAPS133- [`enduring-swipe-back`](references/enduring-swipe-back.md) - Never break the system back-swipe gesture134- [`enduring-zoom-navigation`](references/enduring-zoom-navigation.md) - Use zoom transitions for collection-to-detail navigation135- [`enduring-card-modularity`](references/enduring-card-modularity.md) - Use self-contained cards for dashboard layouts136137### 8. Refined Through Iteration (MEDIUM)138139Edson: "Design out loud" — prototype relentlessly until every interaction feels inevitable. Rams #1: innovation serves genuine purpose.140141- [`refined-scroll-transitions`](references/refined-scroll-transitions.md) - Use scrollTransition for scroll-position visual effects142- [`refined-phase-animator`](references/refined-phase-animator.md) - Use PhaseAnimator for multi-step animation sequences143- [`refined-mesh-gradients`](references/refined-mesh-gradients.md) - Use MeshGradient for premium dynamic backgrounds144- [`refined-text-renderer`](references/refined-text-renderer.md) - Use TextRenderer for hero text animations only145- [`refined-inspector`](references/refined-inspector.md) - Use inspector for trailing-edge detail panels146- [`refined-multi-detent`](references/refined-multi-detent.md) - Provide multiple sheet detents with drag indicator147- [`refined-matched-geometry`](references/refined-matched-geometry.md) - Use matchedGeometryEffect for contextual origin transitions148- [`refined-no-hard-cuts`](references/refined-no-hard-cuts.md) - Always animate between states, even minimally149150## How to Use151152Read individual reference files for detailed explanations and code examples:153154- [Section definitions](references/_sections.md) - Category structure, principle sources, and impact levels155- [Rule template](assets/templates/_template.md) - Template for adding new rules156157## Reference Files158159| File | Description |160|------|-------------|161| [references/_sections.md](references/_sections.md) | Category definitions and principle grounding |162| [assets/templates/_template.md](assets/templates/_template.md) | Template for new rules |163| [metadata.json](metadata.json) | Version and reference information |164165---166> Converted and distributed by [TomeVault](https://tomevault.io/claim/pproenca) — claim your Tome and manage your conversions.167<!-- tomevault:4.0:skill_md:2026-04-11 -->