iOS Dev - VS Code Extension

One-click iOS development in VS Code with big action buttons, tool management, and AI agent integration.
Features
Large, touch-friendly buttons in the sidebar for common actions:
- Build & Run - One click to build and launch on simulator/device
- Build - Build without running
- Lint - Run SwiftLint with inline diagnostics
- Deploy - Install to device without launching
- Screenshot - Capture simulator screen
Visual status of required development tools with one-click installation:
- Xcode (required)
- SwiftLint
- SwiftFormat
- xcbeautify
- ios-deploy
- xcode-build-server
Missing tools? Click "Install All Missing Tools" to install via Homebrew.
📱 Destination Manager
- Lists all simulators grouped by iOS version
- Shows connected physical devices
- Boot/shutdown simulators from VS Code
- Remember last used destination
🏗 Project Abstraction Layer
Your own config layer on top of Xcode projects (.vscode/ios-dev.json):
{
"xcworkspacePath": "MyApp.xcworkspace",
"defaultScheme": "MyApp",
"defaultDestination": "iPhone 15 Pro",
"lintPaths": ["Sources/", "Features/"],
"preBuildScript": "./scripts/codegen.sh",
"postBuildScript": "./scripts/upload-symbols.sh",
"preLintScript": "./scripts/generate-mocks.sh"
}
🤖 AI Agent Integration
VS Code Commands (for Copilot/extensions)
ios-dev.agent.build - Build and return JSON result
ios-dev.agent.lint - Lint and return violations as JSON
ios-dev.agent.getErrors - Get current build/lint errors
ios-dev.agent.screenshot - Take simulator screenshot
ios-dev.agent.getLogs - Get simulator logs
ios-dev.agent.listDestinations
ios-dev.agent.listSchemes
ios-dev.agent.listTools
ios-dev.agent.getStatus
MCP Server (for external agents)
HTTP server on port 3000 (configurable):
GET /tools - List available tools
POST /execute - Execute a tool
GET /health - Health check
Available MCP tools:
ios_build - Build project
ios_run - Build and run
ios_lint - Run linter
ios_screenshot - Take screenshot
ios_get_logs - Get simulator logs
ios_list_simulators - List simulators
ios_boot_simulator - Boot a simulator
ios_get_errors - Get current errors
ios_select_scheme - Select build scheme
ios_select_destination - Select target device
- And more...
Requirements
- macOS (required for iOS development)
- Xcode installed
- Homebrew (for installing optional tools)
Extension Settings
| Setting |
Description |
Default |
ios-dev.xcworkspacePath |
Path to .xcworkspace or .xcodeproj |
Auto-detected |
ios-dev.defaultScheme |
Default build scheme |
First available |
ios-dev.defaultDestination |
Default simulator/device |
None |
ios-dev.lintPaths |
Paths to lint |
Entire project |
ios-dev.preBuildScript |
Script to run before build |
None |
ios-dev.postBuildScript |
Script to run after build |
None |
ios-dev.preLintScript |
Script to run before lint |
None |
ios-dev.xcbeautifyEnabled |
Use xcbeautify for build output |
true |
ios-dev.mcp.enabled |
Enable MCP server |
true |
ios-dev.mcp.port |
MCP server port |
3000 |
Commands
| Command |
Description |
iOS Dev: Build |
Build the project |
iOS Dev: Run |
Build and run on selected destination |
iOS Dev: Lint |
Run SwiftLint |
iOS Dev: Deploy to Device |
Build and install without running |
iOS Dev: Take Screenshot |
Capture simulator screen |
iOS Dev: Select Workspace |
Choose .xcworkspace or .xcodeproj |
iOS Dev: Select Scheme |
Choose build scheme |
iOS Dev: Select Destination |
Choose simulator or device |
iOS Dev: Setup Autocomplete |
Generate buildServer.json for SourceKit-LSP |
iOS Dev: Install All Missing Tools |
Install missing tools via Homebrew |
Architecture
src/
├── extension.ts # Entry point
├── core/
│ ├── types.ts # TypeScript interfaces
│ ├── project.ts # Project config management
│ └── exec.ts # Process execution utilities
├── cli/
│ ├── simctl.ts # xcrun simctl wrapper
│ ├── devicectl.ts # xcrun devicectl wrapper
│ ├── xcodebuild.ts # xcodebuild wrapper
│ └── swiftlint.ts # SwiftLint wrapper
├── tools/
│ └── manager.ts # Tool installation & status
├── destinations/
│ └── manager.ts # Simulator/device management
├── build/
│ └── manager.ts # Build orchestration
├── lint/
│ └── manager.ts # Lint orchestration
├── ui/
│ ├── webview.ts # Big button HTML/CSS
│ └── provider.ts # Webview provider
├── agents/
│ └── api.ts # VS Code command API for agents
└── mcp/
└── server.ts # HTTP MCP server
License
MIT