Virtual devices give you fast iteration on macOS and any desktop - no USB cables, instant resets, and repeatable screenshots for layout QA. Pair them with Expo CLI shortcuts so SDK 57 projects open on the right simulator or AVD every time.
npx expo start starts Metro; pressing i or a tells Expo CLI to find or boot a simulator/AVD and install Expo Go (managed workflow) or open your development build if one is installed.
Expo CLI targets the most recently opened iOS Simulator - if multiple simulators are booted, the last one focused wins. Use Shift+I to pick explicitly.
Android requires ANDROID_HOME on your PATH plus at least one AVD created in Android Studio's Virtual Device Manager. Expo CLI invokes emulator and adb under the hood.
Snapshots here mean PNG captures of the virtual display - useful for visual diffing, design QA, and bug reports. They are not Jest component snapshots (see Jest Setup for Expo).
RN 0.86 / SDK 57 compiles against Android 16 (API 36) - install that platform in Android Studio before npx expo run:android or emulator builds succeed.
# macOS Android env (add to ~/.zshrc)export ANDROID_HOME=$HOME/Library/Android/sdkexport PATH=$PATH:$ANDROID_HOME/emulator:$ANDROID_HOME/platform-tools# Open Simulator manually when Expo CLI appears stuckopen -a Simulator
Expo CLI stuck on "Opening simulator" - The Simulator app sometimes ignores the open command. Fix: Run open -a Simulator, choose File > Open Simulator, pick a device, then press i again.
Wrong iOS simulator receives the bundle - Multiple booted simulators confuse targeting. Fix: Quit extra simulators or use Shift+I to select one; Expo CLI always targets the most recently opened.
Android adb version mismatch - System adb conflicts with SDK platform-tools. Fix: Put $ANDROID_HOME/platform-tools first on PATH; verify with which adb.
Missing Android SDK Platform 36 - Gradle fails with SDK-not-found errors on RN 0.86. Fix: Android Studio → SDK Platforms → install Android 16 (API 36).
Expo Go SDK mismatch on simulator - Fresh SDK 57 project may not load in an older Expo Go install. Fix: Run npx expo-go download ios 57 or create a development build.
Assuming simulator equals device performance - Simulators use desktop CPU/GPU; jank profiles mislead. Fix: Profile on hardware for scroll and animation SLOs.
Screenshots with wrong theme or locale - Matrix shots taken before the app sets appearance look inconsistent. Fix: Set theme/locale in app code before capture; store metadata alongside PNGs.
Start Metro with npx expo start, then press i. On macOS only - Windows and Linux cannot run the iOS Simulator. Use Shift+I to pick a specific model.
How do I open the Android Emulator?
Create an AVD in Android Studio, ensure ANDROID_HOME is set, run npx expo start, and press a. Or run npx expo start --android to launch on server start.
What Android SDK version does React Native 0.86 require?
Android 16 (API 36). Install it under Android Studio → Settings > Languages & Frameworks > Android SDK > SDK Platforms.
Why does Expo CLI install Expo Go on my emulator?
In a managed project without a development build, Expo Go is the host native shell. For custom native modules, install expo-dev-client and use a development build instead.
How do I take a screenshot of the iOS Simulator?
xcrun simctl io booted screenshot screenshot.png
Replace booted with a specific UDID from xcrun simctl list devices.
How do I screenshot the Android Emulator?
adb exec-out screencap -p > screenshot.png
Ensure exactly one device is connected: adb devices.
Can I run multiple simulators at once?
Yes on iOS - open several via File > Open Simulator. Expo CLI targets the most recently opened one. For predictable runs, boot one simulator at a time.
Shift+I does nothing - what should I check?
Confirm Xcode Command Line Tools are installed (Xcode > Settings > Locations), accept the Xcode license (sudo xcodebuild -license), and that at least one iOS runtime exists under Settings > Components.
Does the iOS Simulator support the camera?
No - camera hardware is unavailable. Use a physical device or mock image pickers in dev.
How do I list available Android virtual devices?
emulator -list-avds
Create new AVDs in Android Studio → Virtual Device Manager.
What is a device matrix and how many devices do I need?
A device matrix is a fixed set of form factors and OS levels you test every release against. Minimum practical set: compact phone, standard phone, and one tablet on both iOS and Android.
Should I use Expo Go or a development build on emulators?
Expo Go is fine for SDK-only spikes. Switch to a development build when you add native modules, custom URL schemes, or plugins that Expo Go does not ship.
How do I reset a corrupted iOS Simulator?
In the Simulator menu: Device > Erase All Content and Settings. This fixes stuck installs and low-disk corruption.
Can I develop iOS apps on Windows?
No - the iOS Simulator requires macOS. Use a physical iPhone, a Mac CI worker, or cloud Mac services for iOS builds.