Skip to content

Simulators

Run your mobile app in iOS and Android simulators in the browser, and know when to build a new simulator

Open the Simulator page from the main menu. It appears for mobile apps built with Expo.

Simulators run a development build of your mobile app in a real iOS or Android simulator, right in the browser. The in-browser preview shows your app rendered for the web, so it can’t run native code. A simulator runs the native app, so you can check screens that use the camera, a local database, or other native packages before you publish.

A simulator connects to your app’s running preview. Once it’s built, your edits show up in it the same way they do in the in-browser preview. You only build it again when your app’s native code or configuration changes. See When to build again.

You need edit access to the app to see the Simulator page and start simulator builds.

There are three ways to see a mobile app while you build. Most edits only need the first one.

PreviewWhereRuns native codeUse it for
In-browser previewThe Preview PanelNoLayout, styling, navigation, and app logic. It updates as you edit, on every plan.
Draftbit Preview appYour own phone, by scanning the QR code from the Live Preview button in the top barOnly the native libraries built into the appTrying your app in your hand. It doesn’t require the Pro plan.
SimulatorsThe Simulator pageYes, including the native packages your app addsScreens that need native packages the other two can’t run, and checking your app on iOS and Android before you publish.

The Draftbit Preview app runs your code with its own fixed set of native libraries. If a screen needs a native package that isn’t in that set, the screen won’t load in the Preview app. Build a simulator to test it.

Each platform has two simulators, one for each version of your app:

  • Saved runs the version from your last save.
  • Unsaved runs your working build, including changes you haven’t saved yet.

You can start builds from three places:

  • Top bar: click the Simulators Simulators button, then choose Build iOS Simulators or Build Android Simulators. This builds both the saved and unsaved versions for that platform. Once both exist, the button reads Update iOS Simulators or Update Android Simulators.
  • Simulator page: two build cards sit in the upper-right corner for the selected platform, one for Saved and one for Unsaved. Click a card’s rebuild button to build only that version.
  • Publishing page: the Simulators tab has the same Build iOS Simulators and Build Android Simulators buttons, plus the full history of your simulator builds under In Progress and Recent Simulator Builds.

Building one platform doesn’t rebuild the other. A build can take a few minutes. You can keep working while it runs.

Each build card shows when that simulator was last built successfully, such as Built Oct 12, 2026, or Never built if it hasn’t been built yet. While a build runs or after it ends, the card also shows its latest attempt:

StatusMeaning
StartingDraftbit is starting the build.
QueuedThe build is waiting to start.
BuildingThe build is running.
Latest rebuild failedThe last build didn’t finish. The card still shows the date of the last successful build.
Latest rebuild cancelledThe last build was cancelled.

You can only run one build of each version at a time. If you start another while one is running, Draftbit asks you to wait for it to finish. When you build the saved and unsaved versions together and only one of them starts, the error says which one failed. The other build keeps going, and you can retry the failed one from its build card.

The bar above the simulator has these controls:

ControlDescription
iOS / AndroidSwitch platforms. Each platform has its own builds.
Saved / UnsavedSwitch between the saved and working versions of your app. Simulators don’t have a side-by-side view; use Comparing Builds in the Preview Panel for that.
DeviceChoose an iPhone or iPad for iOS, or a Pixel or Nexus phone for Android. iOS starts on iPhone 16 Pro and Android on Pixel 8 Pro.
Restart preview serverRestart the preview server for the version you’re viewing. Try it when the simulator is stuck or after a dependency change.
ThemeSwitch the simulator between light and dark mode.

The simulator has its own toolbar for device actions such as rotating it. Pan and zoom the canvas around the simulator, and use Fit Simulator in the controls at the bottom to center it again. On larger screens, the Logs panel opens next to the simulator so you can see your app’s output while you test.

Simulators are for testing your app as a user would. To select an element and edit it, use the Preview Panel.

If the selected simulator hasn’t been built yet, the page shows a message such as No saved iOS simulator yet. Use that version’s build card to create it.

A simulator keeps the native code it was built with. Code changes reach it through the running preview, but native changes only take effect after a new build.

Build new simulators after you:

  • add, remove, or upgrade a package that includes native code
  • add or change a config plugin
  • change native settings in your app configuration, such as permissions, the bundle ID, or the package name
  • upgrade your app’s Expo SDK version

You don’t need a new build for:

  • new screens, components, and styles
  • app logic, navigation, and data changes
  • packages written only in JavaScript

If you’re not sure whether a package includes native code, ask the agent. When a screen works in the in-browser preview but fails in the simulator right after you added a package, a new build usually fixes it.

Simulators use the values you set for the Development environment. Staging and Production values are for publishing. If a simulator needs a variable, make sure it’s turned on for Development. After you change a value, reload the simulator to pick it up. You only need a new build when the variable is used by your app’s native configuration, such as app.config.js or a config plugin. See Environment Variables.

Imported and connected Expo apps can build simulators too. They need the same setup as publishing to the Apple App Store and Google Play Store. On iOS, the simulator may ask you to confirm opening your app each time it starts.

  • Simulators are for mobile apps built with Expo. Web apps, websites, and API backends don’t have a Simulator page.
  • Simulators need the Pro plan or higher, and edit access to the app.
  • You can’t select or edit elements in the simulator.
  • A simulator build is for previewing in Draftbit only. To install your app on your own device, emulator, or simulator, use Testing Builds. To ship it, publish to TestFlight, the App Store, or Google Play.