Debug - iOS App Debugging Loop
Use XcodeBuildMCP and ios-simulator MCPs to diagnose issues, capture app state, and collaborate with users on fixes. Always confirm before making changes.
Workflow
- •
Capture current state — Use ios-simulator to capture screenshots and understand the current visual state of the app. Use XcodeBuildMCP to read build logs and runtime errors.
- •
Gather diagnostic information — Collect relevant information:
- •Screenshot of the issue using ios-simulator
- •Console logs and error messages from XcodeBuildMCP
- •App state and behavior observations
- •Ask: "Looking at this screenshot and these logs, can you describe exactly what's wrong or what you expected to happen?"
- •
Analyze the problem — Review the captured information:
- •Identify error patterns in logs
- •Compare visual output to expected behavior
- •Locate relevant code sections that might be causing the issue
- •
Propose changes clearly — Describe intended fixes with specifics:
- •Bad: "I'll fix the layout"
- •Good: "I'll update the VStack spacing from 8 to 16 points and add .padding(.horizontal, 20) to fix the alignment issue shown in the screenshot"
- •
Confirm before implementing — Use AskUserQuestion to get explicit approval. Never modify code without confirmation.
- •
Verify with comparison — After changes:
- •Rebuild the app using XcodeBuildMCP
- •Capture a new screenshot to confirm the fix
- •Check logs to ensure errors are resolved
- •Ask: "Does this match what you were looking for?"
XcodeBuildMCP Tools
Use these XcodeBuildMCP tools for building and analyzing:
- •
build— Build the Xcode project/workspace - •
get-build-logs— Retrieve build logs to diagnose compilation errors - •
get-runtime-logs— Get runtime logs from the running app - •
clean— Clean build artifacts before rebuilding - •
test— Run unit tests to verify fixes
ios-simulator Tools
Use these ios-simulator tools for app interaction and state capture:
- •
launch-app— Launch the app in the simulator - •
take-screenshot— Capture the current simulator screen - •
tap— Tap at specific coordinates on the screen - •
swipe— Perform swipe gestures - •
enter-text— Type text into focused text fields - •
get-device-info— Get simulator device information - •
install-app— Install the app on the simulator - •
uninstall-app— Uninstall the app from the simulator
Related Skills
When implementing fixes, load these skills for guidance:
- •
app:swiftui-architecture— SwiftUI patterns, state management, and architectural guidance - •
app:swift-testing— Testing patterns and best practices
Debugging Workflow Example
- •User reports: "The login button doesn't work"
- •Capture screenshot showing the button
- •Check runtime logs for tap events or errors
- •Identify the issue in code (e.g., missing action binding)
- •Propose fix: "I'll connect the button's action to the LoginIntent as defined in app-intent-driven-development"
- •Get confirmation
- •Implement fix
- •Rebuild app
- •Take new screenshot showing working button
- •Verify logs show successful tap handling
Before/After Verification
After implementing changes:
- •Rebuild the app with XcodeBuildMCP
- •Launch the updated app in the simulator
- •Take a new screenshot of the same view
- •Compare build/runtime logs (before and after)
- •Present screenshots side by side
- •Ask: "Does this resolve the issue?"
- •If not, repeat the feedback loop