Set Simulator Appearance/Locale
simctl-appearanceAdjust iOS simulator appearance—theme, dynamic type size, locale, and region—and relaunch apps to verify localized layouts.
Instructions
simctl-appearance
Control iOS simulator appearance: theme (light/dark), dynamic type size, locale, and region.
What it does
Wraps xcrun simctl ui and xcrun simctl spawn defaults write to let you switch
appearance settings on a running simulator without leaving your terminal or MCP session.
Parameters
udid (string, optional): Simulator UDID. Auto-detects booted simulator if omitted.
theme ('light' | 'dark', optional): Switch light/dark appearance.
textSize (string, optional): Dynamic type size alias (XS–AX5, see table below).
locale (string, optional): BCP-47 language code (e.g.
en,ar,de).region (string, optional): ISO 3166-1 alpha-2 region code (e.g.
US,SA). Requireslocale.bundleId (string, optional): App bundle ID — terminate + relaunch after locale change. Requires
locale.reset (boolean, optional): Reset theme, text size, and locale to system defaults (light / M / en_US). Incompatible with other flags.
Text Size Aliases
Alias | xcrun token |
XS | extra-small |
S | small |
M | medium (default) |
L | large |
XL | extra-large |
XXL | extra-extra-large |
XXXL | extra-extra-extra-large |
AX1 | accessibility-medium |
AX2 | accessibility-large |
AX3 | accessibility-extra-large |
AX4 | accessibility-extra-extra-large |
AX5 | accessibility-extra-extra-extra-large |
RTL Locales
Locales starting with ar, he, fa, ur, or yi are flagged as RTL.
The response includes a [RTL layout] note and guidance to verify RTL support.
Returns
JSON response with:
success: overall operation successudid: resolved simulator UDIDresults: per-operation{ success, message }objects (theme, textSize, locale, or reset)guidance: next-step suggestions
Examples
Switch to dark mode
await simctlAppearanceTool({ theme: 'dark' })Set large dynamic type
await simctlAppearanceTool({ textSize: 'AX3' })Set Arabic locale (Saudi Arabia) and restart app
await simctlAppearanceTool({
locale: 'ar',
region: 'SA',
bundleId: 'com.myapp.ios',
})Combine theme and text size
await simctlAppearanceTool({ theme: 'dark', textSize: 'XL' })Reset all appearance to defaults
await simctlAppearanceTool({ reset: true })Validation Rules
At least one of
theme,textSize,locale, orresetmust be provided.resetcannot be combined withtheme,textSize, orlocale.regionrequireslocale.bundleIdrequireslocale.
Important Notes
The simulator must be booted for commands to succeed.
Locale changes apply on the next cold app launch unless
bundleIdis provided.Multiple operations can be combined in a single call (e.g.,
theme+textSize).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| udid | No | ||
| reset | No | ||
| theme | No | ||
| locale | No | ||
| region | No | ||
| bundleId | No | ||
| textSize | No |