Use when creating iOS apps, setting up Xcode projects, designing app architecture, implementing SwiftUI views, using SwiftData models, adding Swift 6 concurrency with actors, or integrating Supabase backend. Triggers on "new iOS app", "Swift architecture", "SwiftData setup", "actor pattern", "iOS project structure".
View on GitHubbgrober/indie-stack
superpowers
January 18, 2026
Select agents to install to:
npx add-skill https://github.com/bgrober/indie-stack/blob/main/skills/swift-ios-app/SKILL.md -a claude-code --skill swift-ios-appInstallation paths:
.claude/skills/swift-ios-app/# Swift iOS App Architecture
Guide for building iOS apps with SwiftUI, SwiftData, Swift 6 concurrency, and Supabase backend.
## When to Use
- Starting a new iOS project
- Understanding existing iOS app architecture
- Adding a major new feature that needs architectural guidance
- Reviewing project structure decisions
## Project Structure
```
AppName/
├── AppNameApp.swift # App entry, configures appearance and SwiftData
├── Models/
│ ├── Item.swift # SwiftData models (local persistence)
│ ├── ItemResult.swift # Enum: pending/success/failed states
│ └── Enums/ # Supporting enums (ItemType, etc.)
├── Services/
│ ├── AuthService.swift # @Observable auth state, trial flow
│ ├── SupabaseClient.swift # Actor for auth/token management
│ ├── SupabaseService.swift # Actor: storage upload and DB sync
│ ├── SyncService.swift # Actor: bidirectional sync
│ ├── ItemService.swift # Actor: business logic for items
│ ├── ImageManager.swift # Local image caching
│ ├── NetworkMonitor.swift # NWPathMonitor for connectivity
│ └── PermissionsManager.swift # Camera, photos, etc.
├── Utilities/
│ ├── Constants.swift # Supabase URL, anon key
│ └── Theme.swift # Design system, colors, typography
├── ViewModels/
│ └── FeatureViewModel.swift # Complex feature state machines
└── Views/
├── RootView.swift # Routes based on auth state
├── MainTabView.swift # Tab navigation
├── SplashView.swift # Launch animation
├── Auth/ # SignInView, TrialPrompt
├── Feature/ # Feature-specific views
├── Components/ # Reusable: badges, cards, empty states
├── Onboarding/ # OnboardingFlow
└── Settings/ # SettingsView
```
## Key Patterns
### 1. Swift 6 Concurrency
**Services as Actors:**
```swift
actor SupabaseService {
private let client: SupabaseClient
func uploadImage(_ data: Data, path: St