swiftui-expert-skill
Créez des applications SwiftUI modernes avec les meilleures pratiques d'expert
Également disponible depuis: avdlee
Les développeurs SwiftUI rencontrent des difficultés avec la complexité de la gestion d'état et les modèles d'API obsolètes. Cette compétence fournit des conseils factuels pour le développement SwiftUI moderne en utilisant @Observable, une composition de vues correcte et le style Liquid Glass iOS 26+.
Télécharger le ZIP du skill
Importer dans Claude
Allez dans Paramètres → Capacités → Skills → Importer un skill
Activez et commencez à utiliser
Tester
Utilisation de "swiftui-expert-skill". Review this view: struct ProductView: View { @StateObject var vm: ProductViewModel; var body: some View { Text(vm.title) } }
Résultat attendu:
Problèmes trouvés : (1) Utilisation de @StateObject avec ObservableObject - préférez la classe @Observable avec @State pour le nouveau code. (2) StateObject devrait être private. (3) Envisagez de passer title comme paramètre let si lecture seule. Recommandé : Utilisez la classe @Observable, marquez @State comme private, passez les valeurs en lecture seule directement.
Utilisation de "swiftui-expert-skill". How do I handle navigation to a detail view when tapping a list row?
Résultat attendu:
Utilisez NavigationStack avec navigationDestination pour une navigation type-safe. Remplacez NavigationView par NavigationStack à la racine. Utilisez NavigationLink avec le paramètre value et le modificateur navigationDestination(for:). Cela fournit une sécurité au moment de la compilation et une gestion d'état appropriée par rapport aux anciens modèles NavigationView.
Audit de sécurité
SûrStatic analyzer produced 226 false positive findings due to pattern matching on markdown documentation content. External command patterns matched file path references like 'references/state-management.md' and Swift code examples, not actual shell execution. Network finding was a GitHub source URL in YAML frontmatter. All blocker findings for cryptographic algorithms and system reconnaissance are incorrect pattern matches on documentation text. No executable code or security risks present.
Score de qualité
Ce que vous pouvez construire
Développeur iOS créant de nouvelles fonctionnalités
À utiliser lors de la création de nouvelles vues SwiftUI pour garantir une gestion d'état correcte avec @Observable, une utilisation moderne des API comme foregroundStyle() et NavigationStack, et une structure de vue optimale dès le départ.
Revue de code pour projets SwiftUI existants
À utiliser lors de l'audit de code SwiftUI hérité pour identifier les API obsolètes, les wrappers de propriété incorrects, les anti-modèles de performance et les opportunités de modernisation.
Apprentissage des modèles SwiftUI modernes
À utiliser lors de la transition depuis UIKit ou d'anciennes versions de SwiftUI pour apprendre les meilleures pratiques actuelles pour le flux de données, la composition de vues et les directives de conception d'Apple.
Essayez ces prompts
Examinez cette vue SwiftUI pour une gestion d'état correcte et une utilisation moderne des API. Vérifiez la sélection des wrappers de propriété, les API obsolètes et les modèles de composition de vues.
Refactorisez ce code SwiftUI pour utiliser des API modernes. Remplacez ObservableObject par @Observable, mettez à jour les modificateurs obsolètes et optimisez la structure de vue pour la performance.
Aidez-moi à construire une nouvelle fonctionnalité SwiftUI avec un flux de données correct. Concevez la gestion d'état en utilisant @Observable, structurez les vues pour un diffing optimal et appliquez le style iOS 26+ lorsque c'est approprié.
Analysez cette vue SwiftUI pour des problèmes de performance. Identifiez les mises à jour d'état inutiles, les problèmes d'identité de vue dans ForEach, les optimisations de hot path et les causes de layout thrashing.
Bonnes pratiques
- Préférez @Observable à ObservableObject pour le nouveau code SwiftUI avec @MainActor pour la sécurité des threads
- Gardez le body de vue simple et pur - extrayez la logique complexe vers des modèles et sous-vues
- Utilisez une identité stable dans ForEach avec des identifiants uniques, jamais .indices pour du contenu dynamique
Éviter
- Déclarer des valeurs passées comme @State ou @StateObject au lieu d'utiliser @Binding ou des paramètres let
- Utiliser GeometryReader lorsque des alternatives containerRelativeFrame ou visualEffect existent
- Créer des objets ou effectuer des calculs lourds directement dans le body de vue