Expo Go — Development Preview
Using Expo Go to preview your app on a real phone instantly during development — no compilation, no waiting.
Building and installing a real app binary every time you want to test a code change would take 5–15 minutes per iteration. You'd spend more time waiting for builds than writing code.
Expo Go solves this. It's a free app you install on your phone that acts as a universal container for any Expo project. During development, your code runs inside Expo Go — which means changes on your laptop appear on your phone within seconds, not minutes.
The "Why First" Scenario
You're building the partner app's profile screen. You change the layout, adjust the font size, and move a button. Each of these changes takes 30 seconds to write.
Without Expo Go: you'd need to build an APK after each change (10 minutes), install it on your phone (1 minute), test it, then repeat. An afternoon of work produces maybe 15 iterations.
With Expo Go: you save the file, and your phone updates in 2 seconds. An afternoon produces 200 iterations — 13x more.
The speed difference is not marginal. Expo Go is the difference between being productive and being frustrated.
The Excel Analogy
Think of Expo Go like Google Sheets' "Preview mode" when someone shares a file with you.
You don't need to install anything to view the file — Google provides the viewer. The owner can edit their copy, and you see the changes in near real time. You're seeing the live content, not a frozen export.
Expo Go is the viewer on your phone. Your VS Code on your laptop is the source. Any change you save flows to your phone through the shared network connection — just like Google Sheets flows changes through the internet.
Installing Expo Go on Your Phone
Open the App Store or Play Store on your phone
Search for "Expo Go"
The app is published by Expo and is free. It has an orange logo with a diamond shape.
Install it
The app is about 30–50 MB. Install it normally.
Open Expo Go
When it opens, you'll see a simple home screen with:
- A QR code scanner button
- A "Recently opened" list (empty for now)
- A "Log in" option (optional — you can use it without logging in for basic previews)
Starting Your Development Server
Your laptop needs to be running a development server before Expo Go can connect to it. Both your laptop and your phone must be on the same Wi-Fi network.
Open your React Native project in VS Code
Navigate to the folder with your Expo project and open it in VS Code.
Open the integrated terminal
View → Terminal, or `Ctrl + ``.
Start the Expo development server
The terminal output will show:
Scan the QR code with your phone
Android: Open Expo Go → tap the QR code icon → scan the QR code in your terminal.
iOS: Open the Camera app (not Expo Go) → point it at the QR code → a banner appears at the top of the screen saying "Open in Expo Go" → tap it.
Your app loads on your phone
The first load takes 20–30 seconds as Expo Go downloads and caches your JavaScript bundle. After the first load, subsequent reloads are much faster (2–5 seconds).
Hot Module Replacement — Instant Updates
Once your app is running in Expo Go, any code change you save in VS Code triggers an automatic update. You don't need to rescan the QR code or restart the server.
The process:
This is called Hot Module Replacement (HMR). It's one of the most significant productivity features of modern mobile development.
What triggers a full reload vs a hot update:
| Type of change | What happens |
|---|---|
| JSX layout changes | Hot update — instant |
| Style changes (colors, sizes) | Hot update — instant |
| Logic changes in a component | Hot update — instant |
Changes to app.json (app name, icon) | Full reload required — press r in terminal |
| Adding a new native module | Full EAS Build required — Expo Go cannot load new native code |
Changes to package.json (adding a package) | May require full reload, sometimes a full build |
Sharing Your Development Build With Others
If someone else wants to preview your development build — a teammate, Subhash reviewing your work — they need to:
- Be on the same Wi-Fi network as your laptop, OR
- Use a tunnel
For option 2 (anyone on the internet, regardless of network):
This uses Expo's tunnel service to create a public URL that Expo Go can connect to from anywhere. The QR code still works, but now the connection goes through Expo's servers rather than your local network.
Tunnel mode is slower than local network. Expect 5–10 second update times instead of 2 seconds. Use it only when you need to share across networks. For your own development, use the default (local network) mode.
What Expo Go Cannot Do
Expo Go is a development preview tool — it is not equivalent to a production build. Some features that work in a real app do not work in Expo Go, and some features that appear to work in Expo Go behave differently in production.
| Feature | Expo Go | Real build |
|---|---|---|
| Basic UI, navigation, forms | Works | Works |
| Supabase queries and auth | Works | Works |
| Push notifications | Limited — only Expo's own push service | Full — APNs and FCM direct |
| In-app purchases | Does not work | Works |
| Custom native modules (not in Expo SDK) | Does not work | Works (if included in build) |
| Deep links (custom URL scheme) | Partially works | Fully works |
| Background tasks | Limited | Fully works |
| Camera, GPS, accelerometer | Works (Expo SDK versions) | Works |
| App icon and splash screen | Shows Expo defaults | Shows your custom assets |
| App name in recent apps list | Shows "Expo Go" | Shows your app name |
The features that "do not work" in Expo Go are not bugs — they are by design. Expo Go ships with a fixed set of native modules. If your app uses a native module outside that set, you need a development build (a custom version of Expo Go compiled specifically for your project). This is an advanced topic covered separately.
For the EduTrack training modules, everything you'll build in Phase 1–2 works in Expo Go. Push notifications and custom native modules come in Phase 3 when you need a development build.
Common Problems and Fixes
QR code scanned but nothing loads:
- Confirm your phone and laptop are on the same Wi-Fi network
- Try
npx expo start --tunnelto bypass the network restriction - Check that your laptop's firewall isn't blocking port 8081
App loads but shows a blank white screen:
- An error occurred in your code on startup
- Look at the terminal — the error message appears there
- Common cause: an import that doesn't exist, or a syntax error in a recently edited file
"Unable to resolve module" error:
- You added a new package to
package.jsonbut didn't install it - Run
npm installin your terminal and restart the dev server
Changes in VS Code don't appear on phone:
- Press
rin the terminal (inside the Expo dev server) to force a full reload - If that doesn't work, close and reopen the app in Expo Go
QR code expired:
- The dev server was restarted (or timed out). Run
npx expo startagain and rescan.
What You Have Now
Expo Go installed and working on your phone, connected to your development server. Any code change saves immediately to your phone within seconds.
r in the terminal to force a full reload.This is how you'll test 95% of your UI and logic during development. EAS Build is reserved for testing native features and preparing for store submission.