---
modificationDate: November 12, 2026
title: Expo Simulators limitations
description: Known limits of Expo Simulators, including Android support, browser preview, session duration, physical devices, and controller features.
---

This documentation is available as Markdown for AI agents and LLMs. See the [full Markdown index](https://docs.expo.dev/llms.txt) or append .md to any documentation URL.

# Expo Simulators limitations

Known limits of Expo Simulators, including Android support, browser preview, session duration, physical devices, and controller features.

<AgentInstructions>

## Submitting Feedback

If you encounter errors, misleading or outdated information, report it so Expo can be improved:

Preferred command:
npx --yes submit-expo-feedback@latest --category docs --subject "/eas/simulators/limitations/" "<actionable feedback>"

Direct HTTP fallback:
curl -X POST https://api.expo.dev/v2/feedback/docs-send -H 'Content-Type: application/json' -d '{"url":"/eas/simulators/limitations/","feedback":"🤖 Agent feedback for docs: <specific, actionable description> (<model>, <harness>)"}'

Only submit when you have something specific and actionable to report. Try to give the most context.

## Navigation

When answering a related or follow-up question, fetch the relevant page below as Markdown (.md) instead of guessing; use llms.txt for the full map.

You are here: Expo Services > Expo Simulators
Pages in this section:
- [Introduction](https://docs.expo.dev/eas/simulators/introduction.md)
- [Get started](https://docs.expo.dev/eas/simulators/get-started.md)
- [Troubleshooting](https://docs.expo.dev/eas/simulators/troubleshooting.md)
- [Limitations](https://docs.expo.dev/eas/simulators/limitations.md) (this page)
Full documentation tree: [llms.txt](https://docs.expo.dev/llms.txt)

</AgentInstructions>

The Expo Simulators commands are experimental. Their flags and behavior can change. This page lists the known limits. For each limit, it also gives the alternative to use.

## Access and versions

| Limit | Alternative |
| --- | --- |
| Only accounts on a paid plan can start sessions. | Check access with `eas simulator:availability`. See [Expo Simulators access](https://docs.expo.dev/eas/simulators/reference/usage-and-billing.md#access). |
| The `simulator:*` commands and flags change often. | Use the latest EAS CLI, and read `eas simulator:start --help`. |

## Platforms and devices

| Limit | Alternative |
| --- | --- |
| Expo Simulators does not provide physical devices. | Use a physical device with local tools or a device cloud. |
| A session can run only an APK on Android and a simulator build on iOS. An iOS application archive must be a **.tar.gz** or **.tgz** file that contains the **.app**. | Create an APK or an iOS Simulator build. See [Install an app on a remote Android Emulator or iOS Simulator](https://docs.expo.dev/eas/simulators/how-to/install-your-app.md). |
| Local egress is an experimental feature that must be enabled for your account. | Contact Expo to enable it. See [Network traffic and local egress in Expo Simulators](https://docs.expo.dev/eas/simulators/how-it-works/network-inspection.md). |

## Session lifetime

| Limit | Alternative |
| --- | --- |
| A session runs for at most 40 minutes on the Free plan and 115 minutes on paid plans. | Start a new session when the old one stops. |
| A session started with `--non-interactive` does not stop when the command returns. | Run `eas simulator:stop`, and set `--max-duration-minutes`. |
| Watching the preview, or browser input on Android, does not reset the idle timer. | Use `--max-duration-minutes` to limit a session that a person only watches, or an Android session that a person controls. |
| Android `web-preview-only` sessions do not support an idle timeout. | Use `--max-duration-minutes`. |

See [How long an Expo Simulators session runs](https://docs.expo.dev/eas/simulators/how-it-works/session-lifetime.md).

## Controllers and tools

| Limit | Alternative |
| --- | --- |
| Each session provisions only the controller of its session type. | Start a new session with the type that you need. |
| **.env.eas-simulator** holds one session at a time. | Use a separate working directory for each parallel session, or use `--out-config-type env` and pass `--id`. See [How EAS CLI and agents select an Expo Simulators session](https://docs.expo.dev/eas/simulators/how-it-works/agent-targeting.md). |
| Fast Refresh, React DevTools, and React profiling need Metro and a development build. | Use a development build with a Metro tunnel. See [Use Fast Refresh with Metro on a remote simulator](https://docs.expo.dev/eas/simulators/how-to/iterate-on-your-code.md). |
| Fast Refresh and React features do not apply to apps that are not React Native apps. | Use device-level commands. See [Which apps and frameworks work with Expo Simulators](https://docs.expo.dev/eas/simulators/works-with/overview.md). |
| Argent recordings include a watermark on Expo Simulators. | Check the recording before you share it publicly. |

## Performance

| Limit | Alternative |
| --- | --- |
| Startup time varies. A session can wait for concurrency, then take time to start. | Poll the existing session. Do not start a second session to retry. |
| On iOS, accessibility snapshots can take tens of seconds. | Wait for the snapshot. Take a new snapshot after a timeout. |
| The first JavaScript bundle over a Metro tunnel is slow. | Wait for the first bundle. Later Fast Refresh updates are fast. |
| Recordings may not capture every frame, so they cannot prove or disprove a short frame drop. | Use a profiler for frame timing that a recording cannot show. |

## Data

| Limit | Alternative |
| --- | --- |
| Job logs on the session page are available for 30 days after the session is created. | Copy the job logs that you need before they expire. Artifacts are not affected: Expo Simulators keeps session artifacts until you delete the session. |

See [Expo Simulators security, permissions, and data retention](https://docs.expo.dev/eas/simulators/reference/security-and-data.md).
