---
modificationDate: November 12, 2026
title: Run a Flutter app on a remote Android Emulator or iOS Simulator
description: Build a Flutter app for the Android Emulator or iOS Simulator, then install and control it on Expo Simulators from an archive URL.
---

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.

# Run a Flutter app on a remote Android Emulator or iOS Simulator

Build a Flutter app for the Android Emulator or iOS Simulator, then install and control it on Expo Simulators from an archive URL.

<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/works-with/flutter/" "<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/works-with/flutter/","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 > Works with
Pages in this section:
- [Overview](https://docs.expo.dev/eas/simulators/works-with/overview.md)
- [Expo and React Native](https://docs.expo.dev/eas/simulators/works-with/expo-and-react-native.md)
- [Expo Go](https://docs.expo.dev/eas/simulators/works-with/expo-go.md)
- [Native Android and iOS](https://docs.expo.dev/eas/simulators/works-with/native-ios-and-android.md)
- [Flutter](https://docs.expo.dev/eas/simulators/works-with/flutter.md) (this page)
- [Unity and hybrid](https://docs.expo.dev/eas/simulators/works-with/unity-and-hybrid.md)
- [Appium](https://docs.expo.dev/eas/simulators/works-with/appium.md)
- [Maestro](https://docs.expo.dev/eas/simulators/works-with/maestro.md)
Full documentation tree: [llms.txt](https://docs.expo.dev/llms.txt)

</AgentInstructions>

Expo Simulators runs Flutter apps that are built for the Android Emulator or iOS Simulator. Build the app for the emulator or simulator with the Flutter CLI, publish the build to a URL, and pass the URL to `eas simulator:start`. You control the app with device-level commands, such as snapshots, presses, and screenshots.

## Build the app

#### Android

```sh
flutter build apk --debug
```

Use the **.apk** that the command creates. An **.aab** fails to install.

#### iOS

```sh
flutter build ios --simulator
tar -czf Runner.app.tar.gz -C build/ios/iphonesimulator Runner.app
```

The second command compresses **Runner.app** into **Runner.app.tar.gz**.

## Start a session with the build

Upload the file to storage that returns it directly. Then pass its URL:

```sh
eas simulator:start --platform ios --type agent-device --application-archive-url "https://example.com/Runner.app.tar.gz" --name "Flutter build review" --non-interactive
```

EAS CLI needs **package.json** and an app config with the Expo Services project ID in the current directory. You can also use the REST API with only the project ID. For both setups, see [Native Android and iOS apps](https://docs.expo.dev/eas/simulators/works-with/native-ios-and-android.md#start-a-session-with-the-archive).

## Control the app

```sh
eas simulator:exec npx agent-device@latest open <application-id> --platform ios
eas simulator:exec npx agent-device@latest snapshot -i
eas simulator:exec npx agent-device@latest screenshot ./artifacts/home.png
```

Replace `<application-id>` with the bundle identifier or package name of the Flutter app. Stop the session when you finish:

```sh
eas simulator:stop
```

## Limitations

Device-level control works for Flutter apps. The React Native features of the controllers do not work, and Fast Refresh with Metro does not apply. See [Expo Simulators limitations](https://docs.expo.dev/eas/simulators/limitations.md).

## Common questions

#### Can I use Flutter hot reload with Expo Simulators?

No. Expo Simulators does not provide a Flutter hot reload workflow. To see a change, rebuild the app and start a new session with the new build.
