A modern xcodebuild wrapper with JSON output
Keep the toolchain. Fix the workflow.
FlowDeck calls xcodebuild under the hood, then adds consistent commands for run, test, logs, and simulators. The output is structured, not a wall of text.
The wrapper you wish you had
xcodebuild works. The glue does not.
A typical xcodebuild flow means:
- Long destination strings that break yearly
simctlanddevicectlfor every run- Manual log streaming with predicates
- Test flags that only a regex can love
- Output that is not machine readable
A wrapper should give you a workflow. Not more scripts.
Side by side
| Task | xcodebuild | FlowDeck |
|---|---|---|
| Run on simulator | Build, then simctl install, then simctl launch |
flowdeck run -S "iPhone 16" |
| Stream logs | log stream with predicates |
flowdeck logs |
| Run one test | -only-testing:MyAppTests/LoginTests/testLogin |
flowdeck test --only LoginTests/testLogin |
| Discover schemes | xcodebuild -list and parse output |
flowdeck context |
| Machine output | Regex and hope | --json |
One wrapper, full workflow
Apple's tooling:
xcodebuildxcrunsimctldevicectllogxcresulttool...
FlowDeck:
contextbuildruntestlogssimulatordeviceclean
Less glue. More shipping.
JSON output by default
Unstructured output:
** BUILD FAILED **
... hundreds of lines of flags ...
/Users/dev/App/View.swift:42:15: error: cannot convert value...
Not friendly to automation.
FlowDeck output:
{
"type": "error",
"file": "View.swift",
"line": 42,
"message": "cannot convert value"
}
Structured output means less parsing and faster automation.
What does not change
Your
.xcodeproj and .xcworkspace
Your signing and build settings
Your Apple toolchain
FlowDeck wraps xcodebuild. It does not replace it.
Try the wrapper
7-day free trial. No credit card required.
curl -sSL https://flowdeck.studio/install.sh | sh