ios-dev

Start here for any iOS or SwiftUI task. Coordinates best-practice guides, correctness checks, and full Apple API references. Use before navigating to other Apple skills — for building, reviewing, refactoring, or debugging iOS apps.

prisma-labs-dev/apple-skills528 installsMITSynced Aug 26

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI
---
name: ios-dev
description: Start here for any iOS or SwiftUI task. Coordinates best-practice guides, correctness checks, and full Apple API references. Use before navigating to other Apple skills — for building, reviewing, refactoring, or debugging iOS apps.
license: MIT
---

# iOS Development

Start here. This skill coordinates the Apple skills collection — it tells you *which* skill to use and *when*, so you get opinionated guidance and full API references together.

## Operating Rules

- SwiftUI and UIKit are both first-class — pick whichever fits the task. UIKit is a valid choice whenever it gives more control or flexibility; when bridging the two, watch state sync, lifecycle, and animation/environment boundaries.
- Do not enforce specific architectures (MVVM, VIPER, MV, TCA, etc.) — encourage separating business logic from views without mandating how
- Hold a high bar for UI craft: apps should feel current-generation — fluid, design-forward, alive. Sweat the tiny details. Custom components, novel interactions, and custom Metal shaders are all in-bounds when they serve the experience; system defaults are a floor, not a ceiling.
- Do not prescribe how that craft is delivered — no house style, no "Apple-approved" gatekeeping, no aesthetic checklists. Design direction is your own judgment call, made per app. The `hig` and `ios-liquid-glass` skills document what the system provides; they are references, not style mandates. **When the task is designing a screen or making it look good, there is no doc to route to** — design from your own taste; grep references only when you need API mechanics or a factual minimum (e.g. hit-target sizes).
- Present performance optimizations as suggestions backed by reasoning, not blanket requirements
- When you need exact API details, grep the framework reference skills — they contain full Apple documentation

## Task Workflows

### Review existing code

1. Read the code and identify which topics apply
2. Run the **Correctness Checklist** below — violations are bugs
3. Use the **Topic Router** to load the relevant guide for each topic
4. For API correctness, grep the matching framework reference skill

### Improve existing code

1. Run the correctness checklist first
2. For performance issues: use `guide-swiftui-performance-audit`
3. For navigation, state, or pattern questions: use `guide-swiftui-ui-patterns`
4. For API details: grep the matching framework reference skill

### Build a new feature

1. Design data flow first — identify owned vs. injected state
2. For UI patterns and app wiring: use `guide-swiftui-ui-patterns`
3. For API details: grep the matching framework reference skill
4. Structure views for optimal diffing — extract subviews early
5. Run the correctness checklist before finishing

## Topic Router

The **Guide** column has opinionated, short pattern guides. The **API Reference** column has full Apple documentation as grepable Markdown — use `apple-docs-index` to find which framework has what.

| Topic | Guide | API Reference |
|-------|-------|---------------|
| State management | `guide-swiftui-ui-patterns` | `swiftui` (state.md, binding.md, observation.md, environment.md) |
| View composition | — | `swiftui` (view-protocol.md) |
| Performance | `guide-swiftui-performance-audit` | — |
| Navigation | `guide-swiftui-ui-patterns` | `swiftui` (navigationstack.md, navigationsplitview.md, navigationlink.md) |
| Sheets & modals | `guide-swiftui-ui-patterns` | `swiftui` (sheet.md, inspector.md, alert.md, confirmationdialog.md) |
| Lists & ForEach | `guide-swiftui-ui-patterns` | `swiftui` (list.md) |
| ScrollView | `guide-swiftui-ui-patterns` | `swiftui` (scrollview.md) |
| Forms & input | — | `swiftui` (form.md, textfield.md, picker.md, toggle.md, slider.md) |
| Charts | `guide-swiftui-charts` | `swiftui` (chart.md, charts-overview.md) |
| Animations | `guide-swiftui-animations` | `swiftui` (swiftui-overview.md) |
| Layout | `guide-swiftui-ui-patterns` | `swiftui` (geometryreader.md, grid.md, hstack.md, vstack.md, zstack.md, spacer.md) |
| TabView | `guide-swiftui-ui-patterns` | `swiftui` (tabview.md) |
| Liquid Glass | — | `ios-liquid-glass` |
| Accessibility | `guide-swiftui-ui-patterns` | `hig` (a11y/ergonomic facts) |
| macOS apps | `guide-macos-spm-packaging` | `swiftui`, `uikit` |
| Data persistence | `guide-swiftdata` | `swiftdata` |
| Testing | `guide-swift-testing` | `swift-testing`, `xcuitest` |
| Concurrency | `guide-swift-concurrency` | `swift-concurrency` |
| In-app purchases | — | `storekit` |
| Maps | — | `mapkit` |
| Health data | — | `healthkit` |
| Notifications | — | `usernotifications` |
| App Intents / Siri | — | `appintents` |
| Widgets | — | `widgetkit` |
| App Store metadata | `apple-aso` | — |
| Finding docs | `apple-docs-index` | — |

## Correctness Checklist

These are hard rules — violations are always bugs:

- [ ] `@State` properties are `private`
- [ ] `@Binding` only where a child needs to mutate parent state
- [ ] Values passed in are never declared as `@State` — they silently ignore updates
- [ ] Use `@State` with `@Observable` classes — not `@StateObject` or `ObservableObject`
- [ ] Use `@Bindable` for injected observables that need bindings
- [ ] `ForEach` uses stable identity — never `.indices` on dynamic content
- [ ] Each `ForEach` element produces a constant number of views
- [ ] `.animation(_:value:)` always includes the `value:` parameter
- [ ] `@FocusState` properties are `private`
- [ ] `@Observable` classes are `@MainActor` — Swift 6 strict concurrency requires it
- [ ] Property wrappers (`@AppStorage`, `@SceneStorage`, `@Query`) inside `@Observable` classes are marked `@ObservationIgnored` — they conflict with the macro and cause compiler errors
- [ ] No business logic in `body` — use `.task`, `.onChange`, or methods
- [ ] No `AnyView` unless truly unavoidable — fix with better composition

## Related Skills

**System API reference:**
- `/ios-liquid-glass` — Liquid Glass API reference

**Workflow guides:**
- `/guide-swiftui-ui-patterns` — Navigation, state, sheets, component patterns
- `/guide-swiftui-animations` — Implicit/explicit animation, transitions, keyframes
- `/guide-swiftui-charts` — Marks, axes, selection, styling, accessibility
- `/guide-swiftui-performance-audit` — Diagnose and fix performance issues
- `/guide-swift-testing` — Swift Testing patterns, async tests, common agent mistakes
- `/guide-swift-concurrency` — Concurrency patterns, actors, diagnostics, bug patterns
- `/guide-swiftdata` — SwiftData patterns, predicates, CloudKit constraints
- `/guide-macos-spm-packaging` — Build macOS apps with SwiftPM

**Utilities:**
- `/apple-docs-index` — Find the right Apple documentation
- `/simulator-utils` — Simulator screenshots and device management
- `/apple-aso` — App Store Optimization

More Debugging skills

← All Debugging skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY