Make sure you’ve completed the installation guide before proceeding.
Start the Development Server
Navigate to your project directory and start the Expo development server:Choose Your Platform
- iOS
- Android
- Web
Run on iOS Simulator
Launch iOS Simulator
With the development server running, press This will automatically open the iOS Simulator and install the app.
i in the terminal, or run:Wait for Build
The first build may take a few minutes. You’ll see build progress in the terminal.
Subsequent builds will be much faster thanks to Metro’s caching.
Test on Physical iOS Device
- Install Expo Go from the App Store
- Ensure your phone and computer are on the same Wi-Fi network
- Scan the QR code shown in the terminal with your iPhone camera
- Tap the notification to open in Expo Go
Explore the App Structure
GymApp uses Expo Router for file-based routing. Here’s what you’ll find:Main Entry Point
The root layout is defined inapp/_layout.tsx:
app/_layout.tsx
Tab Navigation
The app uses tab-based navigation with two main tabs:- Home (
app/(tabs)/index.tsx) - Welcome screen - Explore (
app/(tabs)/explore.tsx) - Features overview
Modal Example
There’s also a modal screen atapp/modal.tsx demonstrating modal presentation.
Make Your First Edit
Development Tools
Open Developer Menu
Access debugging tools with keyboard shortcuts:- iOS Simulator:
Cmd + D - Android Emulator:
Cmd + M(Mac) orCtrl + M(Windows/Linux) - Web Browser:
F12or right-click and select “Inspect”
Available Tools
Reload App
Manually reload the entire app
Toggle Inspector
Inspect element layout and styles
Toggle Performance
Monitor frame rate and performance
Remote Debugging
Debug with Chrome DevTools
Run ESLint
GymApp includes ESLint configuration for code quality:eslint-config-expo for consistent React Native best practices.
Reset Project Template
The starter code includes example screens. When you’re ready to start fresh:- Move the current
appdirectory toapp-example - Create a blank
appdirectory for your code - Preserve all the example code for reference
Common Development Commands
Here are the most useful commands frompackage.json:
package.json
Next Steps
Now that you have GymApp running, explore these topics:Project Structure
Learn how the codebase is organized
Routing
Understanding Expo Router file-based navigation
Theming
Theme system and styling components
Components
Explore reusable UI components
Troubleshooting
App won't reload after changes
App won't reload after changes
- Try refreshing manually from the developer menu
- Restart the development server with
--clearflag - Check that you’re editing the correct file
Cannot connect to Metro bundler
Cannot connect to Metro bundler
- Ensure your device/emulator and computer are on the same network
- Check that port 8081 is not blocked by a firewall
- Try using
--tunnelflag:npm start -- --tunnel
iOS Simulator opens but app doesn't install
iOS Simulator opens but app doesn't install
- Reset the simulator: Device > Erase All Content and Settings
- Run
npx expo start --clearto clear cache - Check Xcode is properly installed:
xcode-select -p
Android build fails with Gradle error
Android build fails with Gradle error
- Clean the Android build:
cd android && ./gradlew clean && cd .. - Check Java version:
java -version(should be 17) - Ensure ANDROID_HOME environment variable is set
For more help, refer to the Expo documentation or join the Expo Discord community.