mcpField
S
swift_swiftui

swift_swiftui

github.com/swiftzillaDevelopment754 installsUpdated 30w ago
Repository

About swift_swiftui

swift_swiftui is a reference skill for building declarative interfaces with SwiftUI across Apple platforms. It helps developers choose property wrappers and structure state for common UI needs.

Key features

  1. 01SwiftUI interface development guidance
  2. 02Property wrapper reference
  3. 03State management decision guidance
  4. 04Common usage patterns and pitfalls

Use cases

  1. 01Choose a wrapper for local UI state
  2. 02Share state between parent and child views
  3. 03Manage view model ownership

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/swiftzilla/skills --skill swift_swiftui

After installing, type/swift_swiftuiin Claude Code to confirm it loaded.

Bundled filesreferences/property_wrappers.md

Details

From the project README

SwiftUI

This skill covers SwiftUI framework concepts for building declarative user interfaces.

Overview

SwiftUI is Apple's modern declarative framework for building user interfaces across all Apple platforms using a reactive, state-driven approach.

Available References

Quick Reference

State Management Decision Tree
Need local mutable state?
├── YES → Is it a value type?
│   ├── YES → Use @State
│   └── NO → Use @StateObject
└── NO → Shared from parent?
    ├── YES → Is it value type?
    │   ├── YES → Use @Binding
    │   └── NO → Use @ObservedObject
    └── NO → Use @Environment
Property Wrappers
WrapperOwns DataData TypeUse For
@StateYesValue typeLocal UI state
@BindingNoValue typeShared state with parent
@ObservedObjectNoReference typeInjected dependencies
@StateObjectYesReference typeOwned view models
@EnvironmentNoAnyShared resources
Common Usage Patterns
// Local state
struct CounterView: View {
    @State private var count = 0
    
    var body: some View {
        Button("Count: \(count)") { count += 1 }
    }
}

// Shared state (parent to child)
struct ParentView: View {
    @State private var isOn = false
    
    var body: some View {
        ChildView(isOn: $isOn)
    }
}

struct ChildView: View {
    @Binding var isOn: Bool
    
    var body: some View {
        Toggle("Enable", isOn: $isOn)
    }
}

// Observable object
class ViewModel: ObservableObject {
    @Published var items: [Item] = []
}

struct ContentView: View {
    @StateObject private var viewModel = ViewModel()
    
    var body: some View {
        List(viewModel.items) { item in
            Text(item.name)
        }
    }
}

// Environment values
struct EnvironmentView: View {
    @Environment(\.colorScheme) var colorScheme
    @Environment(\.dismiss) var dismiss
    
    var body: some View {
        Text(colorScheme == .dark ? "Dark" : "Light")
    }
}

Best Practices

  1. Use @State for local UI state - Toggles, text fields, counters
  2. Lift state up when shared - Single source of truth
  3. Use @StateObject for owned view models - Survives view recreation
  4. Pass @Binding to child views - Two-way data flow
  5. Keep @State minimal - Only store what's needed for UI
  6. Use @Environment for system values - Color scheme, locale, etc.
  7. Access on main thread - All property wrappers require @MainActor
  8. Initialize with underscore - _count = State(initialValue:)

Common Pitfalls

PitfallSolution
Initializing @State directlyUse _property = State(initialValue:)
Creating @ObservedObject in initUse @StateObject instead
Mutating on background threadDispatch to main queue
Passing @State instead of BindingUse $property for Binding

For More Information

Visit https://swiftzilla.dev for comprehensive SwiftUI documentation.

Comments

Markdown supported