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
  • simctl and devicectl for 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