First run
Simulator vs. Expo Go vs. dev build.
Time to actually run the app. Three modes ā Expo Go (fastest), simulator (Mac iOS or Android emulator), dev build (most realistic). This lesson covers when to use which.
1. The first run on Expo Go
$cd apps/mobile$pnpm dev
You'll see a QR code in the terminal:
Metro Bundler readyāŗ Scan the QR code above with Expo Go (Android) or the Camera app (iOS)āŗ Press a ā open Androidāŗ Press i ā open iOS simulatorāŗ Press w ā open web
- Install the Expo Go app on your phone
- Make sure your phone is on the SAME Wi-Fi as your computer
- Scan the QR ā your app loads on the phone
2. Simulator / emulator
Press i in the Metro terminal (Mac only ā opens iOS simulator) or a (Android emulator, needs Android Studio installed and an AVD). The app loads in a window on your computer.
3. Dev build
Expo Go runs your JS but uses Expo's pre-bundled native modules. If you add a library that needs a custom native module (e.g., Bluetooth, BLE, camera with custom config), Expo Go can't load it ā you need a dev build.
$eas build --profile development --platform ios
Same QR-code workflow, but you scan with your dev build app instead of Expo Go. Once you've made a dev build, JS updates still flow live; only native changes require a rebuild.
Same network, different APIs
When you scan with Expo Go, your phone runs the JS but tries to talk to your API. localhost won't work ā the phone's localhost is itself, not your computer.
// WRONG ā won't work on a physical deviceexport const API_URL = 'http://localhost:8080'// RIGHT ā your computer's LAN IP, reachable from the phoneexport const API_URL = 'http://192.168.1.42:8080'
Find your LAN IP: ifconfig on Mac/Linux, ipconfig on Windows. Look for the 192.168.x.x or 10.0.x.x address. The simulator can use http://localhost:8080 because it shares the host's network.
The dev menu
Shake your phone (or press m in Metro) to open the dev menu ā reload bundle, toggle perf monitor, enable network inspector. You'll use this constantly.
Quick check
Try it
Run your scaffolded app on BOTH a simulator/emulator AND a physical device:
cd apps/mobile && pnpm dev- Press
i(Mac) ora(Windows/Linux with AVD) to open simulator - Install Expo Go on your phone (App Store / Play Store)
- Scan the QR code with your phone
- Once both are running: take a screenshot of each. Paste both in
notes.md.
That completes chapter 1's assignment.
What's next
Chapter 2 ā Shared types + API client. We'll wire grit sync so your TypeScript types match your Go structs end to end.
Spot a typo? Have an idea?
Help us improve this lesson. One click opens a GitHub issue with the lesson URL pre-filled ā suggest clearer wording, report a bug, or request more depth. The course keeps improving thanks to learners like you.
Suggest an improvement on GitHub