> ## Documentation Index
> Fetch the complete documentation index at: https://momentic.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Mobile configuration

> Reference for the `emulator` block in `momentic.config.yaml`. Controls mobile emulators used by the local editor and `momentic-mobile`.

The `emulator` block configures remote mobile emulators used by the local editor
and `momentic-mobile` CLI. Only applies to mobile test runs.

```yaml momentic.config.yaml theme={null}
emulator:
  region: us
  autoGrantPermissions: true
```

<ParamField path="emulator.region" type="&#x22;us&#x22; | &#x22;eu&#x22; | &#x22;as&#x22; | &#x22;us-east1&#x22; | &#x22;us-east2&#x22; | &#x22;us-west1&#x22; | &#x22;us-west2&#x22; | &#x22;eu-north1&#x22; | &#x22;as-south1&#x22;">
  Region where the emulator runs. Continent values (`us`, `eu`, `as`) are
  recommended because they let Momentic schedule across every data center in the
  continent, which improves allocation reliability compared to pinning a
  specific data-center region. Specific regions (`us-east1`, `us-east2`,
  `us-west1`, `us-west2`, `eu-north1`, `as-south1`) are still accepted when you
  need deterministic latency to a particular location. `as` is Android-only.
  When unset, Momentic picks the region closest to the user's source IP.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    region: us
  ```
</ParamField>

<ParamField path="emulator.jurisdiction" type="&#x22;us&#x22; | &#x22;eu&#x22; | &#x22;as&#x22;">
  Pin emulators to a single jurisdiction. Within that jurisdiction, the
  emulator may be scheduled in any of its data centers, but never outside it:
  unlike
  `emulator.region`, which is a scheduling preference that can fall back to
  other regions when capacity runs out, `jurisdiction` is a hard constraint,
  and creation fails if no capacity is available inside it. Set this when your
  app has data residency requirements, e.g. it must never run outside the US.
  Setting a `region` outside the jurisdiction is rejected as a configuration
  error before any emulator is created. `as` is Android-only; combining
  `platform: ios` with `jurisdiction: as` is also rejected. When unset,
  emulators may fall back to any region worldwide.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    jurisdiction: us
  ```

  `region` is not required alongside `jurisdiction`. On its own, `jurisdiction`
  schedules the emulator in whichever of the jurisdiction's data centers is
  closest. Combine the two only to express a latency preference within the
  jurisdiction, e.g. `region: us-west1` with `jurisdiction: us`.
</ParamField>

<ParamField path="emulator.autoGrantPermissions" type="boolean">
  **Android only.** Auto-grant permissions to the app under test at install and
  launch time, so permission confirmation dialogs (camera, location,
  notifications, etc.) never appear. Has no effect on iOS; use
  `emulator.autoAcceptAlerts` there instead. Default: `false`.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    autoGrantPermissions: true
  ```
</ParamField>

<ParamField path="emulator.autoAcceptAlerts" type="boolean">
  **iOS only.** Automatically accept native alert dialogs as they appear during
  the run, including permission prompts ("Allow ... to access ...") and other
  system alerts. Should not be combined with `emulator.autoDismissAlerts`. Has no
  effect on Android; use `emulator.autoGrantPermissions` there instead.
  Default: `false`.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    autoAcceptAlerts: true
  ```
</ParamField>

<ParamField path="emulator.autoDismissAlerts" type="boolean">
  **iOS only.** Automatically dismiss native alert dialogs as they appear
  during the run, declining permission prompts and closing other system alerts.
  Should not be combined with `emulator.autoAcceptAlerts`. Default: `false`.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    autoDismissAlerts: true
  ```
</ParamField>

<ParamField path="emulator.enableLogcatCapture" type="boolean">
  **Android only.** Stream emulator logcat entries into the local editor and CLI
  run output. Capture is disabled by default as a performance optimization that
  reduces continuous log streaming and can reduce emulator lag, especially
  during local editor sessions. Enable it when retaining logcat entries for
  debugging is more important than emulator responsiveness. Individual tests
  can override the project default from the test options dialog. Default:
  `false`.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    enableLogcatCapture: true
  ```
</ParamField>

<ParamField path="emulator.enableSyslogCapture" type="boolean">
  **iOS only.** Stream simulator syslog entries into the local editor and CLI
  run output. Capture is disabled by default as a performance optimization that
  reduces continuous log streaming and can reduce simulator lag, especially
  during local editor sessions. Enable it when retaining syslog entries for
  debugging is more important than simulator responsiveness. Individual tests
  can override the project default from the test options dialog. Default:
  `false`.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    enableSyslogCapture: true
  ```
</ParamField>

<ParamField path="emulator.localEmulatorStartTimeout" type="number">
  How long to wait for a local emulator or simulator to finish starting, in
  milliseconds. Raise it on slow machines such as hosted CI runners, where a
  fresh simulator or emulator can take several minutes to boot. Has no effect on
  remote emulators. Default: `300000`.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    localEmulatorStartTimeout: 420000
  ```
</ParamField>

<ParamField path="emulator.disableMomenticAccessibilityTree" type="boolean">
  Use the native Android accessibility tree inside webviews instead of
  Momentic's custom implementation. The custom implementation includes more
  elements by default. Disabling it can speed webview interactions by 1-2
  seconds but may break interactions with elements outside the viewport.
  Default: `false`.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    disableMomenticAccessibilityTree: true
  ```
</ParamField>

<ParamField path="emulator.smartWaitingTimeoutMs" type="number">
  Budget for every wait and retry on a single interaction, in milliseconds:
  settling the screen, the readiness check before Momentic locates an element
  with AI, and retrying a cached element. Raise it for apps that take a long
  time to render; lower it to fail faster. Default: `5000`.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    smartWaitingTimeoutMs: 10000
  ```
</ParamField>

<ParamField path="emulator.waitForStability" type="boolean">
  Wait for the screen to settle after every step that can change it, so one
  step's effects land before the next step runs. Assertions, extracts, and waits
  do not change the screen and are unaffected. Turn this on for apps that load
  incrementally or animate between screens. Default: `false`.

  This does not control the waits that happen *before* Momentic targets an
  element. Locating an element with AI always waits for the screen to be ready
  first, and a cached element is retried until `smartWaitingTimeoutMs` either way,
  so leaving this off does not make targeting less reliable. This setting only
  means that step's effects are not waited on before the next step begins.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    waitForStability: true
  ```
</ParamField>

<ParamField path="emulator.elementCheckTimeoutSeconds" type="number">
  Default maximum wait time for element check assertions to become true, in
  seconds. Element check steps with an explicit timeout are unaffected.
  Default: `5`.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    elementCheckTimeoutSeconds: 10
  ```
</ParamField>

<ParamField path="emulator.keyPressDelayMs" type="number">
  Default delay between key presses for type steps, in milliseconds. Steps with
  an explicit key press delay are unaffected. Increase this if your app needs
  more time to react to each keystroke. Default: `25`.

  ```yaml momentic.config.yaml theme={null}
  emulator:
    keyPressDelayMs: 60
  ```
</ParamField>
