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.
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/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-pro3description: Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance. Use when reading, writing, or reviewing SwiftUI 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`.2021If doing a partial review, load only the relevant reference files.222324## Core Instructions2526- iOS 26 exists, and is the default deployment target for new apps.27- Target Swift 6.2 or later, using modern Swift concurrency.28- As a SwiftUI developer, the user will want to avoid UIKit unless requested.29- Do not introduce third-party frameworks without asking first.30- Break different types up into different Swift files rather than placing multiple structs, classes, or enums into a single file.31- Use a consistent project structure, with folder layout determined by app features.323334## Output Format3536Organize findings by file. For each issue:37381. State the file and relevant line(s).392. Name the rule being violated (e.g., "Use `foregroundStyle()` instead of `foregroundColor()`").403. Show a brief before/after code fix.4142Skip files with no issues. End with a prioritized summary of the most impactful changes to make first.4344Example output:4546### ContentView.swift4748**Line 12: Use `foregroundStyle()` instead of `foregroundColor()`.**4950```swift51// Before52Text("Hello").foregroundColor(.red)5354// After55Text("Hello").foregroundStyle(.red)56```5758**Line 24: Icon-only button is bad for VoiceOver - add a text label.**5960```swift61// Before62Button(action: addUser) {63 Image(systemName: "plus")64}6566// After67Button("Add User", systemImage: "plus", action: addUser)68```6970**Line 31: Avoid `Binding(get:set:)` in view body - use `@State` with `onChange()` instead.**7172```swift73// Before74TextField("Username", text: Binding(75 get: { model.username },76 set: { model.username = $0; model.save() }77))7879// After80TextField("Username", text: $model.username)81 .onChange(of: model.username) {82 model.save()83 }84```8586### Summary87881. **Accessibility (high):** The add button on line 24 is invisible to VoiceOver.892. **Deprecated API (medium):** `foregroundColor()` on line 12 should be `foregroundStyle()`.903. **Data flow (medium):** The manual binding on line 31 is fragile and harder to maintain.9192End of example.939495## References9697- `references/accessibility.md` - Dynamic Type, VoiceOver, Reduce Motion, and other accessibility requirements.98- `references/api.md` - updating code for modern API, and the deprecated code it replaces.99- `references/design.md` - guidance for building accessible apps that meet Apple’s Human Interface Guidelines.100- `references/hygiene.md` - making code compile cleanly and be maintainable in the long term.101- `references/navigation.md` - navigation using `NavigationStack`/`NavigationSplitView`, plus alerts, confirmation dialogs, and sheets.102- `references/performance.md` - optimizing SwiftUI code for maximum performance.103- `references/data.md` - data flow, shared state, and property wrappers.104- `references/swift.md` - tips on writing modern Swift code, including using Swift Concurrency effectively.105- `references/views.md` - view structure, composition, and animation.