Managing Simulators
List All Simulators
Filter by Platform
Show Only Available Simulators
JSON Output
Booting & Shutting Down
Boot a Simulator
Shutdown a Simulator
Open Simulator.app
Creating Simulators
Create a New Simulator
Find Available Options
Cloning Simulators
Duplicate an existing simulator with all its settings and data:Clone by UDID
Use the Clone
Renaming Simulators
Change a simulator’s display name without creating a new device. The UDID stays the same, so saved destinations, scripts, andflowdeck config entries that use the UDID keep working.
Deleting Simulators
Delete by UDID
Delete Unavailable Simulators
Remove all simulators that are no longer available:Prune Stale Simulators
Delete simulators that have never been booted, have not been booted in 90+ days, or are unavailable:Screenshots
Capture a screenshot (and accessibility tree when needed) via UI automation:Related: UI Automation (Core Feature)
FlowDeck’s UI automation is a core CLI feature (not a simulator subcommand) that targets iOS simulators. See the UI Automation overview for examples and the full command reference for all commands and flags.Device Orientation
Get Current Orientation
portrait, portrait-upside-down, landscape-left, landscape-right
Example JSON output:
Set Orientation
confirmed: true in JSON output once verified.
Pass --no-wait when you want the command to return as soon as the rotation event is delivered. This is useful for UI surfaces that rotate their local simulator frame immediately and do not need to block on CoreSimulator’s delayed visual confirmation. success stays true on this path since the event was dispatched without error, but confirmed is always false — nothing was verified.
Rotation only takes effect if the front-most app supports the target orientation. If the app does not support the requested orientation, the command reports the orientation that was actually applied.
Hardware and Debug Controls
blended, copies, misaligned, offscreen, slow-animations.
Accessibility & Localization
Dynamic Type (Content Size)
extra-small, small, medium, large, extra-large, extra-extra-large, extra-extra-extra-large, accessibility-medium, accessibility-large, accessibility-extra-large, accessibility-extra-extra-large, accessibility-extra-extra-extra-large. Takes effect immediately for apps that honor UIContentSizeCategory.
Increase Contrast
Language & Locale
Changing or resetting the language reboots a booted simulator automatically so the change takes effect across the system. A shut-down simulator applies the change on its next boot. Appearance also supports
flowdeck simulator appearance reset (back to light).Reduce Motion
Reduce Transparency
Show Borders
VoiceOver
Color Filter
off, grayscale, protanopia, deuteranopia, tritanopia. --intensity accepts 0.25-1.0 and is not valid for grayscale.
Liquid Glass
--opacity accepts 0.0-1.0. --look-and-feel accepts clear or tinted.
Audio
--output and --input accept systemDefault or a device UID from flowdeck simulator audio devices. --volume accepts an integer 0-100. At least one of --output, --input, or --volume is required for set.
Reduce Motion, Reduce Transparency, Show Borders, VoiceOver, Color Filter, Liquid Glass, and Audio apply immediately to a booted simulator without a reboot. The same nine settings are also reachable from the FlowDeck macOS app’s simulator panel, under the Settings menu.
Status Bar Overrides
Force fixed status bar values — handy for clean App Store screenshots and deterministic UI tests.--time, --data-network, --wifi-mode, --wifi-bars, --cellular-mode, --cellular-bars, --operator-name, --battery-state, --battery-level. At least one is required.
Push Notifications
Deliver a simulated remote push from a JSON payload — no APNs required.aps key and be 4096 bytes or less.
Privacy Permissions
Pre-grant, revoke, or reset app permissions so UI tests don’t hit system prompts.all, calendar, contacts, contacts-limited, location, location-always, photos, photos-add, media-library, microphone, motion, reminders, siri. grant/revoke require --bundle-id; reset does not.
Pasteboard
Keychain
Watch + Phone Pairing
Pair a watch and phone simulator for WatchConnectivity (WCSession) testing.
The watch and phone must have compatible runtimes (e.g. watchOS 11 + iOS 18).
--activate makes the new pair the active pair; a freshly created pair is already active, so re-activating is a no-op. WCSession delivery between simulators can be unreliable regardless of pairing — pairing only ensures a connectable pair exists.Launch an embedded Watch companion
When an iOS app embeds a Watch app atHost.app/Watch/*.app, you can launch that companion on a paired watch simulator without re-running the iPhone app:
flowdeck run of the iPhone target only detects the embedded Watch product; it does not launch the watch until this command (or the macOS simulator panel header toggle) is used.
