Review Swift and SwiftUI code for correctness, modern API usage, and adherence to project conventions. Report only genuine problems - do not nitpick or invent issues.
Review process:
- Check for deprecated API using
references/api.md.
- Check that views, modifiers, and animations have been written optimally using
references/views.md.
- Validate that data flow is configured correctly using
references/data.md.
- Ensure navigation is updated and performant using
references/navigation.md.
- Ensure the code uses designs that are accessible and compliant with Apple’s Human Interface Guidelines using
references/design.md.
- Validate accessibility compliance including Dynamic Type, VoiceOver, and Reduce Motion using
references/accessibility.md.
- Ensure the code is able to run efficiently using
references/performance.md.
- Quick validation of Swift code using
references/swift.md.
- Final code hygiene check using
references/hygiene.md.
- For architecture reviews, check Clean Architecture compliance using
references/clean-architecture.md.
If doing a partial review, load only the relevant reference files.
Core Instructions
- iOS 26 exists, and is the default deployment target for new apps.
- Target Swift 6.2 or later, using modern Swift concurrency.
- As a SwiftUI developer, the user will want to avoid UIKit unless requested.
- Do not introduce third-party frameworks without asking first.
- Break different types up into different Swift files rather than placing multiple structs, classes, or enums into a single file.
- Use a consistent project structure, with folder layout determined by app features.
Output Format
Organize findings by file. For each issue:
- State the file and relevant line(s).
- Name the rule being violated (e.g., "Use
foregroundStyle() instead of foregroundColor()").
- Show a brief before/after code fix.
Skip files with no issues. End with a prioritized summary of the most impactful changes to make first.
Example output:
ContentView.swift
Line 12: Use foregroundStyle() instead of foregroundColor().
// Before
Text("Hello").foregroundColor(.red)
// After
Text("Hello").foregroundStyle(.red)
Line 24: Icon-only button is bad for VoiceOver - add a text label.
// Before
Button(action: addUser) {
Image(systemName: "plus")
}
// After
Button("Add User", systemImage: "plus", action: addUser)
Line 31: Avoid Binding(get:set:) in view body - use @State with onChange() instead.
// Before
TextField("Username", text: Binding(
get: { model.username },
set: { model.username = $0; model.save() }
))
// After
TextField("Username", text: $model.username)
.onChange(of: model.username) {
model.save()
}
Summary
- Accessibility (high): The add button on line 24 is invisible to VoiceOver.
- Deprecated API (medium):
foregroundColor() on line 12 should be foregroundStyle().
- Data flow (medium): The manual binding on line 31 is fragile and harder to maintain.
End of example.
References
references/accessibility.md - Dynamic Type, VoiceOver, Reduce Motion, and other accessibility requirements.
references/api.md - updating code for modern API, and the deprecated code it replaces.
references/clean-architecture.md - Clean Architecture patterns, layer separation, MVVM, dependency injection, and modern SwiftUI architecture.
references/design.md - guidance for building accessible apps that meet Apple’s Human Interface Guidelines.
references/hygiene.md - making code compile cleanly and be maintainable in the long term.
references/navigation.md - navigation using NavigationStack/NavigationSplitView, plus alerts, confirmation dialogs, and sheets.
references/performance.md - optimizing SwiftUI code for maximum performance.
references/data.md - data flow, shared state, and property wrappers.
references/swift.md - tips on writing modern Swift code, including using Swift Concurrency effectively.
references/views.md - view structure, composition, and animation.
1---2name: swiftui-review3description: Reviews SwiftUI code for best practices on modern APIs, maintainability, and performance. This skill should be used when the user asks to review SwiftUI code, check for deprecated iOS/macOS APIs, validate data flow patterns, or audit accessibility compliance in Swift projects.4license: MIT5---67Review Swift and SwiftUI code for correctness, modern API usage, and adherence to project conventions. Report only genuine problems - do not nitpick or invent issues.89Review process:10111. Check for deprecated API using `references/api.md`.121. Check that views, modifiers, and animations have been written optimally using `references/views.md`.131. Validate that data flow is configured correctly using `references/data.md`.141. Ensure navigation is updated and performant using `references/navigation.md`.151. Ensure the code uses designs that are accessible and compliant with Apple’s Human Interface Guidelines using `references/design.md`.161. Validate accessibility compliance including Dynamic Type, VoiceOver, and Reduce Motion using `references/accessibility.md`.171. Ensure the code is able to run efficiently using `references/performance.md`.181. Quick validation of Swift code using `references/swift.md`.191. Final code hygiene check using `references/hygiene.md`.201. For architecture reviews, check Clean Architecture compliance using `references/clean-architecture.md`.2122If doing a partial review, load only the relevant reference files.232425## Core Instructions2627- iOS 26 exists, and is the default deployment target for new apps.28- Target Swift 6.2 or later, using modern Swift concurrency.29- As a SwiftUI developer, the user will want to avoid UIKit unless requested.30- Do not introduce third-party frameworks without asking first.31- Break different types up into different Swift files rather than placing multiple structs, classes, or enums into a single file.32- Use a consistent project structure, with folder layout determined by app features.333435## Output Format3637Organize findings by file. For each issue:38391. State the file and relevant line(s).402. Name the rule being violated (e.g., "Use `foregroundStyle()` instead of `foregroundColor()`").413. Show a brief before/after code fix.4243Skip files with no issues. End with a prioritized summary of the most impactful changes to make first.4445Example output:4647### ContentView.swift4849**Line 12: Use `foregroundStyle()` instead of `foregroundColor()`.**5051```swift52// Before53Text("Hello").foregroundColor(.red)5455// After56Text("Hello").foregroundStyle(.red)57```5859**Line 24: Icon-only button is bad for VoiceOver - add a text label.**6061```swift62// Before63Button(action: addUser) {64 Image(systemName: "plus")65}6667// After68Button("Add User", systemImage: "plus", action: addUser)69```7071**Line 31: Avoid `Binding(get:set:)` in view body - use `@State` with `onChange()` instead.**7273```swift74// Before75TextField("Username", text: Binding(76 get: { model.username },77 set: { model.username = $0; model.save() }78))7980// After81TextField("Username", text: $model.username)82 .onChange(of: model.username) {83 model.save()84 }85```8687### Summary88891. **Accessibility (high):** The add button on line 24 is invisible to VoiceOver.902. **Deprecated API (medium):** `foregroundColor()` on line 12 should be `foregroundStyle()`.913. **Data flow (medium):** The manual binding on line 31 is fragile and harder to maintain.9293End of example.949596## References9798- `references/accessibility.md` - Dynamic Type, VoiceOver, Reduce Motion, and other accessibility requirements.99- `references/api.md` - updating code for modern API, and the deprecated code it replaces.100- `references/clean-architecture.md` - Clean Architecture patterns, layer separation, MVVM, dependency injection, and modern SwiftUI architecture.101- `references/design.md` - guidance for building accessible apps that meet Apple’s Human Interface Guidelines.102- `references/hygiene.md` - making code compile cleanly and be maintainable in the long term.103- `references/navigation.md` - navigation using `NavigationStack`/`NavigationSplitView`, plus alerts, confirmation dialogs, and sheets.104- `references/performance.md` - optimizing SwiftUI code for maximum performance.105- `references/data.md` - data flow, shared state, and property wrappers.106- `references/swift.md` - tips on writing modern Swift code, including using Swift Concurrency effectively.107- `references/views.md` - view structure, composition, and animation.