Skip to main content
Build an Xcode project or workspace for a simulator, a physical device, or macOS. After running flowdeck init, you can call flowdeck build with no extra flags.
# After init, build using saved settings
flowdeck build

# Build for iOS simulator
flowdeck build -w MyApp.xcworkspace -s MyApp -S "iPhone 16"

# Build for macOS
flowdeck build -w MyApp.xcworkspace -s MyApp -D "My Mac"

# Build for a physical device
flowdeck build -w MyApp.xcworkspace -s MyApp -D "John's iPhone"

# Release configuration
flowdeck build -C Release

# JSON output for automation
flowdeck build --json

# Verbose output (show xcodebuild output)
flowdeck build -v

# Extra xcodebuild arguments
flowdeck build --xcodebuild-options='-quiet'
flowdeck build --xcodebuild-env='CI=true'

# Load settings from config file
flowdeck build --config .flowdeck/ci-config.json

# Show usage examples
flowdeck build --examples

Options

OptionShortDescription
--examples-eShow usage examples
--project <path>-pProject directory
--workspace <path>-wPath to workspace (.xcworkspace) or project (.xcodeproj)
--scheme <name>-sScheme name
--configuration <name>-CBuild configuration (Debug/Release)
--simulator <name>-SSimulator name/UDID (use none for legacy macOS builds)
--device <name>-DDevice name/UDID (use “My Mac” or “My Mac Catalyst” for macOS)
--derived-data-path <path>-dDerived data path (default: ~/Library/Developer/FlowDeck/DerivedData)
--json-jOutput JSON/NDJSON events
--verbose-vShow build output in console
--config <path>-cLoad settings from JSON config file
--xcodebuild-options <args>Extra xcodebuild arguments
--xcodebuild-env <vars>Xcodebuild environment variables
If both --simulator and --device are omitted, FlowDeck uses the saved target from flowdeck init or interactive mode.

JSON Output

When --json is set, build emits NDJSON events (one JSON object per line). Example:
{"type":"status","stage":"COMPILING","message":"Compiling sources..."}
{"type":"result","success":true,"operation":"build","duration":12.5}