Skip to main content
FlowDeck lets you pass arguments and environment variables to your app when it launches. This is useful for:
  • Skipping onboarding flows during development
  • Setting debug flags
  • Configuring API environments
  • Testing different locales

Platform Support

Both args and env are honored on every launch target:
Launch env is delivered by prefixing the child process’s environment — SIMCTL_CHILD_<KEY> for simulator launches, DEVICECTL_CHILD_<KEY> for physical devices — never as part of the printed xcrun simctl launch ... or devicectl ... command line. Reading the verbose command line alone can never tell you whether an env var was applied, even when it worked correctly.Run with --verbose to see the actually-resolved config root, launch args, and launch env (including the literal SIMCTL_CHILD_*/DEVICECTL_CHILD_* keys sent to the process), printed directly instead of inferred from the command line.

Methods Overview

When multiple sources provide settings, they’re merged with CLI taking highest priority.

Preferred Project Settings Format

For shared project settings, prefer storing app launch settings in:
  • .flowdeck/config.json
  • .flowdeck/config.local.json
Example:
Use the top-level appLaunch block for project-wide defaults, and schemes.<scheme>.appLaunch for per-scheme overrides.

CLI Options

App Launch Arguments

Use --launch-options to pass arguments to your app:

App Launch Environment

Use --launch-env to set environment variables for your app:

Xcodebuild Arguments

Use --xcodebuild-options to pass arguments to xcodebuild:

Xcodebuild Environment

Use --xcodebuild-env to set environment variables for the build:

Combining Options

All options can be combined in any order:
Use = syntax when values start with - to avoid argument parsing issues.

Legacy Local Settings

Create .flowdeck/app-launch-settings.json in your project root for settings that apply automatically:
This file is a legacy compatibility format and is still auto-loaded by current CLI runtime paths.
Prefer .flowdeck/config.json or .flowdeck/config.local.json for new setup. Keep .flowdeck/app-launch-settings.json only when you need compatibility with older workflows.

Structure

Config File

Include app launch settings in your --config JSON file:
Use with:
--config uses the explicit command config format, which is separate from .flowdeck/config.json and .flowdeck/config.local.json. See Configuration File for the difference.

Priority and Merging

When settings come from multiple sources, they’re combined in this order:
  1. Config file (lowest priority) - base configuration
  2. Local app-launch-settings.json - compatibility override for current CLI auto-load behavior
  3. CLI options (highest priority) - overrides everything
Args are appended in order (config + local + CLI). Environment variables are merged, with higher priority sources overwriting lower priority values for the same key.
The canonical shared project-settings format is appLaunch inside .flowdeck/config.json or .flowdeck/config.local.json. The separate app-launch-settings.json file remains a legacy compatibility input.

Common Arguments Reference

Apple System Arguments

Common App Flags

UserDefaults Style

You can pass any UserDefaults value:
Your app reads these with:

Environment Variables

Set environment variables for the app process:
Your app reads these with:

Use Cases

Troubleshooting

Arguments Not Taking Effect

  1. Check the source - Make sure your JSON is valid:
  2. Verify priority - CLI options override local settings which override config file
  3. Check your app - Your app must read these values:

Values Starting with Dash

Use = syntax when values start with -:

JSON Array Format

Arguments are individual array elements:
Not: