Agent skill

swiftui-advanced

Use when implementing gesture composition (simultaneous, sequenced, exclusive), adaptive layouts (ViewThatFits, AnyLayout, size classes), or choosing architecture patterns (MVVM vs TCA vs vanilla, State-as-Bridge). Covers advanced SwiftUI patterns beyond basic views.

Stars 187
Forks 13

Install this agent skill to your Project

npx add-skill https://github.com/johnrogers/claude-swift-engineering/tree/main/plugins/swift-engineering/skills/swiftui-advanced

SKILL.md

SwiftUI Advanced

Advanced SwiftUI patterns for gesture composition, adaptive layouts, architecture decisions, and performance optimization.

Reference Loading Guide

ALWAYS load reference files if there is even a small chance the content may be required. It's better to have the context than to miss a pattern or make a mistake.

Reference Load When
Gestures Composing multiple gestures, GestureState, custom recognizers
Adaptive Layout ViewThatFits, AnyLayout, size classes, iOS 26 free-form windows
Architecture MVVM vs TCA decision, State-as-Bridge, property wrapper selection
Performance Instruments 26, view body optimization, unnecessary updates

Core Workflow

  1. Identify pattern category from user's question
  2. Load relevant reference for detailed patterns and code examples
  3. Apply pattern following the decision trees and anti-patterns
  4. Verify using provided checklists or profiling guidance

Decision Trees

Gesture Composition

  • Both gestures at same time? -> .simultaneously
  • One must complete before next? -> .sequenced
  • Only one should win? -> .exclusively

Layout Adaptation

  • Pick best-fitting variant? -> ViewThatFits
  • Animated H/V switch? -> AnyLayout
  • Need actual dimensions? -> onGeometryChange

Architecture Selection

  • Small app, Apple patterns? -> @Observable + State-as-Bridge
  • Complex presentation logic? -> MVVM with @Observable
  • Rigorous testability needed? -> TCA

Common Mistakes

  1. Gesture composition order matters.simultaneously and .sequenced have different trigger timing. Swapping them silently changes behavior. Understand gesture semantics before using.

  2. ViewThatFits over-used — ViewThatFits remeasures on every view change. For animated H/V switches, use AnyLayout instead. Use ViewThatFits only for static variant selection.

  3. onGeometryChange triggering unnecessary updates — Reading geometry changes geometry, which triggers updates, which changes geometry... circular. Use .onGeometryChange only with proper state management to avoid loops.

  4. Architecture mismatch mid-project — Starting with @Observable + State-as-Bridge then realizing you need TCA is expensive. Choose architecture upfront based on complexity (small app = @Observable, complex = TCA).

  5. Ignoring view body optimization — Computing expensive calculations in view body repeatedly kills performance. Move calculations to properties or models. Profile with Instruments 26 before optimizing prematurely.

Expand your agent's capabilities with these related and highly-rated skills.

johnrogers/claude-swift-engineering

ios-hig

Use when designing iOS interfaces, implementing accessibility (VoiceOver, Dynamic Type), handling dark mode, ensuring adequate touch targets, providing animation/haptic feedback, or requesting user permissions. Apple Human Interface Guidelines for iOS compliance.

187 13
Explore
johnrogers/claude-swift-engineering

ios-26-platform

Use when implementing iOS 26 features (Liquid Glass, new SwiftUI APIs, WebView, Chart3D), deploying iOS 26+ apps, or supporting backward compatibility with iOS 17/18.

187 13
Explore
johnrogers/claude-swift-engineering

swiftui-patterns

Use when implementing iOS 17+ SwiftUI patterns: @Observable/@Bindable, MVVM architecture, NavigationStack, lazy loading, UIKit interop, accessibility (VoiceOver/Dynamic Type), async operations (.task/.refreshable), or migrating from ObservableObject/@StateObject.

187 13
Explore
johnrogers/claude-swift-engineering

grdb

Use when writing raw SQL with GRDB, complex joins across 4+ tables, window functions, ValueObservation for reactive queries, or dropping down from SQLiteData for performance. Direct SQLite access for iOS/macOS with type-safe queries and migrations.

187 13
Explore
johnrogers/claude-swift-engineering

swift-testing

Use when writing tests with Swift Testing (@Test,

187 13
Explore
johnrogers/claude-swift-engineering

localization

Use when implementing internationalization (i18n), String Catalogs, pluralization, or right-to-left layout support. Covers modern localization workflows with Xcode String Catalogs and LocalizedStringKey patterns.

187 13
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results