All skills
Skillintermediate

Workflow: Add a Feature to an Existing iOS App

<required_reading> **Read these NOW:** 1. references/app-architecture.md 2. references/swiftui-patterns.md

Claude Code Knowledge Pack7/10/2026

Overview

Workflow: Add a Feature to an Existing iOS App

<required_reading> Read these NOW:

  1. references/app-architecture.md
  2. references/swiftui-patterns.md

Plus relevant refs based on feature (see Step 2). </required_reading>

<process> ## Step 1: Understand the Feature

Ask:

  • What should it do?
  • Where does it belong in the app?
  • Any constraints?

Step 2: Read Relevant References

Feature TypeReference
Data persistencereferences/data-persistence.md
Networking/APIreferences/networking.md
Push notificationsreferences/push-notifications.md
In-app purchasesreferences/storekit.md
Background tasksreferences/background-tasks.md
Navigationreferences/navigation-patterns.md
Polish/UXreferences/polish-and-ux.md

Step 3: Understand Existing Code

Read:

  • App entry point
  • State management
  • Related views

Identify patterns to follow.

Step 4: Implement with TDD

  1. Write test for new behavior → RED
  2. Implement → GREEN
  3. Refactor
  4. Repeat

Step 5: Integrate

  • Wire up navigation
  • Connect to state
  • Handle errors

Step 6: Build and Test

xcodebuild -scheme AppName -destination 'platform=iOS Simulator,name=iPhone 16' build test
xcrun simctl launch booted com.company.AppName

Step 7: Polish

  • Haptic feedback for actions
  • Animations for transitions
  • Accessibility labels
  • Dynamic Type support </process>

<integration_patterns> Adding state:

@Observable
class AppState {
    var newFeatureData: [NewType] = []
    func performNewFeature() { ... }
}

Adding a view:

struct NewFeatureView: View {
    @Environment(AppState.self) private var appState
    var body: some View { ... }
}

Adding navigation:

NavigationLink("New Feature", value: NewFeatureDestination())
.navigationDestination(for: NewFeatureDestination.self) { _ in
    NewFeatureView()
}

Adding a tab:

TabView {
    NewFeatureView()
        .tabItem { Label("New", systemImage: "star") }
}

</integration_patterns>