What is Expo Go?
Expo Go is a free, open-source app available on iOS and Android that includes a pre-configured runtime with many Expo SDK modules built-in. It allows you to load and run Expo projects by scanning a QR code.Instant Preview
Scan a QR code and see your app running in seconds
No Build Required
Skip Xcode and Android Studio setup completely
Hot Reload
See changes instantly with Fast Refresh
50+ SDK Modules
Camera, Location, Sensors, and more included
Installation
Download Expo Go from your device’s app store:iOS
Download from the App Store
Android
Download from Google Play
How to Use Expo Go
Scan QR code
- iOS: Use the Camera app to scan the QR code
- Android: Open Expo Go and tap “Scan QR code”
Your device and computer must be on the same WiFi network. If they’re not, use
npx expo start --tunnel.What’s Included
Expo Go comes with these SDK modules pre-installed:Core Modules
- expo-asset - Asset loading system
- expo-constants - App and device constants
- expo-file-system - File system access
- expo-font - Custom fonts
- expo-keep-awake - Prevent screen sleep
Device Features
- expo-camera - Camera access
- expo-location - GPS and location
- expo-sensors - Accelerometer, gyroscope, magnetometer
- expo-battery - Battery information
- expo-device - Device information
- expo-brightness - Screen brightness control
Media & UI
- expo-image - Optimized image component
- expo-image-picker - Select photos and videos
- expo-video - Video playback
- expo-audio - Audio playback and recording
- expo-blur - Blur effects
- expo-glass-effect - Glass morphism (iOS 18+)
- expo-symbols - SF Symbols (iOS)
Storage & Network
- expo-sqlite - SQLite database
- expo-secure-store - Encrypted storage
- expo-network - Network information
- expo-linking - Deep linking
Authentication
- expo-auth-session - OAuth flows
- expo-apple-authentication - Sign in with Apple
- expo-local-authentication - Biometric auth
Utilities
- expo-barcode-scanner - Scan barcodes and QR codes
- expo-clipboard - Clipboard access
- expo-haptics - Haptic feedback
- expo-web-browser - In-app browser
- expo-sharing - Share content
- expo-calendar - Calendar access
- expo-contacts - Contacts access
See full module list
See full module list
For a complete list of modules included in Expo Go, see the Expo SDK documentation.Note: The exact list depends on the Expo SDK version. Expo Go typically includes the latest stable SDK.
Limitations
Expo Go has important limitations you should understand:What You Can’t Do
- Use
react-native-firebase - Add custom fonts via native configuration
- Use native payment SDKs
- Integrate analytics that require native code
- Use libraries with native dependencies not in Expo Go
- Test app icons and splash screens
- Test push notifications with your own credentials
When to Use Expo Go
Perfect for:
- Learning Expo and React Native
- Rapid prototyping
- Demos and presentations
- Quick testing on device
- Tutorials and workshops
- Apps using only Expo SDK modules
Transitioning from Expo Go
When you outgrow Expo Go, transition to development builds:Option 1: Local Development Build
Option 2: EAS Build (Cloud)
Development builds work just like Expo Go, but with your exact dependencies and configuration.
Development Workflow Comparison
Expo Go
Pros:- Instant setup
- No build process
- Fast iteration
- Easy sharing
- Module limitations
- No custom native code
- Can’t test final app
Development Build
Pros:- Any native module
- Custom native code
- Full configuration
- Test production features
- Requires build step
- Longer setup time
- Need native tools (or EAS)
Common Scenarios
Can I use Expo Go for production?
Can I use Expo Go for production?
No. Expo Go is a development tool only. For production:
- Create a development build or use
expo prebuild - Build for production with EAS Build or locally
- Submit to app stores
How do I add a library not in Expo Go?
How do I add a library not in Expo Go?
You need to create a development build:Or use EAS Build to build in the cloud.
Can I share my app with others using Expo Go?
Can I share my app with others using Expo Go?
Why does my app work in Expo Go but not in production?
Why does my app work in Expo Go but not in production?
Common reasons:
- Using development-only features
- Hardcoded localhost URLs
- Missing permissions in app.json
- Environment-specific code
- Different bundle identifiers
Debugging in Expo Go
Developer Menu
Access the developer menu by:- iOS: Shake device or press Cmd+D (simulator)
- Android: Shake device or press Cmd+M / Ctrl+M (emulator)
- Terminal: Press
mwhereexpo startis running
- Reload
- Toggle Element Inspector
- Toggle Performance Monitor
- Debug Remote JS (legacy)
- Open React DevTools
Console Logs
View logs in multiple places:- Terminal where you ran
expo start - React DevTools (press
jin terminal) - Expo Go app (shake device, tap “Show Dev Menu”, “Debug Remote JS”)
Element Inspector
- Shake device
- Tap “Toggle Element Inspector”
- Tap any UI element to inspect
Tips & Tricks
Speed up development
Speed up development
- Enable Fast Refresh (on by default)
- Keep Expo Go open between changes
- Use
rto manually reload if needed - Clear Metro cache if things seem broken:
Test on multiple devices
Test on multiple devices
- Start dev server:
npx expo start - Open Expo Go on multiple devices
- Scan the same QR code
- All devices update together!
Work offline
Work offline
Expo Go requires network connection to load apps. For offline development:
- Create a development build
- Load the build on your device
- Develop offline (build includes all code)
Share with team
Share with team
Next Steps
Development Workflow
Master the development cycle
Create a Project
Build your first app
Development Builds
Go beyond Expo Go
Build & Deploy
Ship to production