swiftui-expert-skill

от expo

Пишите, проверяйте или улучшайте код SwiftUI, следуя лучшим практикам управления состоянием, композиции представлений, производительности, macOS-специфичным API и iOS 26+ Liquid…

npx skills add https://github.com/expo/agent-templates --skill swiftui-expert-skill

SwiftUI Expert Skill

Operating Rules

  • Consult references/latest-apis.md at the start of every task to avoid deprecated APIs
  • Prefer native SwiftUI APIs over UIKit/AppKit bridging unless bridging is necessary
  • Focus on correctness and performance; do not enforce specific architectures (MVVM, VIPER, etc.)
  • Encourage separating business logic from views for testability without mandating how
  • Follow Apple's Human Interface Guidelines and API design patterns
  • Only adopt Liquid Glass when explicitly requested by the user (see references/liquid-glass.md)
  • Present performance optimizations as suggestions, not requirements
  • Use #available gating with sensible fallbacks for version-specific APIs

Task Workflow

Review existing SwiftUI code

  • Read the code under review and identify which topics apply
  • Flag deprecated APIs (compare against references/latest-apis.md)
  • Run the Topic Router below for each relevant topic
  • Validate #available gating and fallback paths for iOS 26+ features

Improve existing SwiftUI code

  • Audit current implementation against the Topic Router topics
  • Replace deprecated APIs with modern equivalents from references/latest-apis.md
  • Refactor hot paths to reduce unnecessary state updates
  • Extract complex view bodies into separate subviews
  • Suggest image downsampling when UIImage(data:) is encountered (optional optimization, see references/image-optimization.md)

Implement new SwiftUI feature

  • Design data flow first: identify owned vs injected state
  • Structure views for optimal diffing (extract subviews early)
  • Apply correct animation patterns (implicit vs explicit, transitions)
  • Use Button for all tappable elements; add accessibility grouping and labels
  • Gate version-specific APIs with #available and provide fallbacks

Topic Router

Consult the reference file for each topic relevant to the current task:

TopicReference
State managementreferences/state-management.md
View compositionreferences/view-structure.md
Performancereferences/performance-patterns.md
Lists and ForEachreferences/list-patterns.md
Layoutreferences/layout-best-practices.md
Sheets and navigationreferences/sheet-navigation-patterns.md
ScrollViewreferences/scroll-patterns.md
Animations (basics)references/animation-basics.md
Animations (transitions)references/animation-transitions.md
Animations (advanced)references/animation-advanced.md
Accessibilityreferences/accessibility-patterns.md
Swift Chartsreferences/charts.md
Charts accessibilityreferences/charts-accessibility.md
Image optimizationreferences/image-optimization.md
Liquid Glass (iOS 26+)references/liquid-glass.md
macOS scenesreferences/macos-scenes.md
macOS window stylingreferences/macos-window-styling.md
macOS viewsreferences/macos-views.md
Deprecated API lookupreferences/latest-apis.md

Correctness Checklist

These are hard rules -- violations are always bugs:

  • @State properties are private
  • @Binding only where a child modifies parent state
  • Passed values never declared as @State or @StateObject (they ignore updates)
  • @StateObject for view-owned objects; @ObservedObject for injected
  • iOS 17+: @State with @Observable; @Bindable for injected observables needing bindings
  • ForEach uses stable identity (never .indices for dynamic content)
  • Constant number of views per ForEach element
  • .animation(_:value:) always includes the value parameter
  • iOS 26+ APIs gated with #available and fallback provided
  • import Charts present in files using chart types

References

  • references/latest-apis.md -- Read first for every task. Deprecated-to-modern API transitions (iOS 15+ through iOS 26+)
  • references/state-management.md -- Property wrappers, data flow, @Observable migration
  • references/view-structure.md -- View extraction, container patterns, @ViewBuilder
  • references/performance-patterns.md -- Hot-path optimization, update control, _logChanges()
  • references/list-patterns.md -- ForEach identity, Table (iOS 16+), inline filtering pitfalls
  • references/layout-best-practices.md -- Layout patterns, GeometryReader alternatives
  • references/accessibility-patterns.md -- VoiceOver, Dynamic Type, grouping, traits
  • references/animation-basics.md -- Implicit/explicit animations, timing, performance
  • references/animation-transitions.md -- View transitions, matchedGeometryEffect, Animatable
  • references/animation-advanced.md -- Phase/keyframe animations (iOS 17+), @Animatable macro (iOS 26+)
  • references/charts.md -- Swift Charts marks, axes, selection, styling, Chart3D (iOS 26+)
  • references/charts-accessibility.md -- Charts VoiceOver, Audio Graph, fallback strategies
  • references/sheet-navigation-patterns.md -- Sheets, NavigationSplitView, Inspector
  • references/scroll-patterns.md -- ScrollViewReader, programmatic scrolling
  • references/image-optimization.md -- AsyncImage, downsampling, caching
  • references/liquid-glass.md -- iOS 26+ Liquid Glass effects and fallback patterns
  • references/macos-scenes.md -- Settings, MenuBarExtra, WindowGroup, multi-window
  • references/macos-window-styling.md -- Toolbar styles, window sizing, Commands
  • references/macos-views.md -- HSplitView, Table, PasteButton, AppKit interop

Больше skills от expo

expo-upgrade
expo
Фреймворк (OSS). Рекомендации по обновлению версий Expo SDK и исправлению проблем с зависимостями
apidevelopmentofficial
expo-data-fetching
expo
Framework (OSS). Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (`useLoaderData`).
official
android-e2e-testing
expo
Тестирование функций Expo Router на Android-эмуляторах с помощью ADB. Используйте после внедрения нативных функций Android или при проверке поведения UI на Android.
official
expo-dev-client
expo
Создание пользовательских клиентов разработки Expo для тестирования нативного кода на физических устройствах через EAS Build или локально. Требуется только при использовании пользовательских нативных модулей, целей Apple (виджеты, апп-клипы) или стороннего нативного кода, отсутствующего в Expo Go; сначала попробуйте Expo Go с помощью npx expo start. Поддерживает облачные сборки с автоматической отправкой в TestFlight или локальные сборки на вашем компьютере, выводя файлы .ipa (iOS) или .apk / .aab (Android). Требует конфигурации eas.json с профилем разработки, который задает...
official
expo-tailwind-setup
expo
Универсальная стилизация Tailwind CSS v4 для Expo-приложений на iOS, Android и Web. Интегрирует Tailwind CSS v4 с react-native-css и NativeWind v5 через Metro-трансформер, устраняя необходимость в настройке Babel. Предоставляет переиспользуемую библиотеку компонентов, обёрнутых в CSS (View, Text, ScrollView, Pressable, TextInput, Image, Link), которые применяют className-стили к нативным элементам. Поддерживает платформозависимую стилизацию через CSS-медиазапросы, пользовательские переменные темы через блоки @theme и семантику Apple...
official
android-jetpack-compose
expo
Используйте при создании пользовательских интерфейсов Android с Jetpack Compose, управлении состоянием с помощью remember/mutableStateOf или реализации декларативных шаблонов UI.
official
eas-update-insights
expo
Проверка состояния опубликованных обновлений EAS: уровень сбоев, количество установок/запусков, уникальные пользователи, размер пакета и распределение между встроенными и OTA-пользователями на…
official
expo-module
expo
Руководство по созданию и написанию нативных модулей и представлений Expo с использованием Expo Modules API (Swift, Kotlin, TypeScript). Охватывает DSL определения модулей, нативные…
official