swiftui-code-review
75
总安装量
74
周安装量
#2960
全站排名
安装命令
npx skills add https://github.com/existential-birds/beagle --skill swiftui-code-review
Agent 安装分布
claude-code
60
gemini-cli
56
codex
56
cursor
41
github-copilot
40
Skill 文档
SwiftUI Code Review
Quick Reference
| Issue Type | Reference |
|---|---|
| View extraction, modifiers, body complexity | references/view-composition.md |
| @State, @Binding, @Observable, @Bindable | references/state-management.md |
| LazyStacks, AnyView, ForEach, identity | references/performance.md |
| VoiceOver, Dynamic Type, labels, traits | references/accessibility.md |
Review Checklist
- View body under 10 composed elements (extract subviews)
- Modifiers in correct order (padding before background)
- @StateObject for view-owned objects, @ObservedObject for passed objects
- @Bindable used for two-way bindings to @Observable (iOS 17+)
- LazyVStack/LazyHStack for scrolling lists with 50+ items
- No AnyView (use @ViewBuilder or generics instead)
- ForEach uses stable Identifiable IDs (not array indices)
- All images/icons have accessibilityLabel
- Custom controls have accessibilityAddTraits(.isButton)
- Dynamic Type supported (no fixed font sizes)
- .task modifier for async work (not onAppear + Task)
When to Load References
- Complex view bodies or modifier chains -> view-composition.md
- Property wrapper usage (@State, @Observable) -> state-management.md
- List performance or view identity issues -> performance.md
- VoiceOver or accessibility implementation -> accessibility.md
Review Questions
- Could this large view body be split into smaller, reusable Views?
- Is modifier order intentional? (padding -> background -> frame)
- Is @StateObject/@ObservedObject usage correct for ownership?
- Could LazyVStack improve this ScrollView’s performance?
- Would VoiceOver users understand this interface?