SkillSpark Mobile Environment Setup
Guides developers through setting up a local environment for an Expo-based mobile app on iOS and Android.
View sourceWhat this file does
Guides developers through setting up a local environment for an Expo-based mobile app on iOS and Android.
When to use it
- Onboarding new contributors to a React Native or Expo project
- Setting up iOS development on macOS for the first time
- Configuring Android Studio and emulator for mobile testing
- Testing an Expo app on a physical device via QR code
Assumes this stack
SkillSpark Mobile Environment Setup
Objective
Set up your local development environment to run the Skillspark mobile app on both iOS and Android platforms.
Please follow these steps to set everything up so that we can have a smooth mobile dev experience
Prerequisites
- Bun package manager installed
- Access to the Skillspark monorepo
- Note: macOS is required for iOS Simulator. Non-Mac users can test on physical iPhone devices.
Setup Instructions
1. Clone and Install Dependencies
cd frontend
bun install
2. iOS Setup
Option A: macOS Users - iOS Simulator
Install Xcode:
- Install Xcode from the Mac App Store (this will take a while - it's ~15GB)
- Open Xcode and accept the license agreement
- Install Command Line Tools:
xcode-select --install
Install iOS Simulator:
- Open Xcode
- Go to Xcode → Settings → Platforms
- Click the + button and install the latest iOS simulator
Verify Setup:
cd apps/mobile
bun ios
The iOS Simulator should launch and the app should load.
Option B: Windows/Linux Users - Physical iPhone Device
Install Expo Go on your iPhone:
- Download Expo Go from the App Store
- Make sure your iPhone and computer are on the same WiFi network
Run the app:
cd apps/mobile
bun start
Connect your iPhone:
- Scan the QR code displayed in terminal using your iPhone's Camera app
- It will open in Expo Go
- The app will load and hot reload as you make changes
Note: You won't be able to build standalone iOS apps or test native modules without macOS, but you can develop and test 95% of features this way.
3. Android Setup
Install Android Studio:
- Download and install Android Studio from https://developer.android.com/studio
- During installation, make sure to install:
- Android SDK
- Android SDK Platform
- Android Virtual Device (AVD)
Configure Environment Variables:
macOS/Linux - Add to your ~/.zshrc or ~/.bash_profile:
export ANDROID_HOME=$HOME/Library/Android/sdk # macOS
# export ANDROID_HOME=$HOME/Android/Sdk # Linux
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/platform-tools
Windows - Add to System Environment Variables:
ANDROID_HOME=C:\Users\YourUsername\AppData\Local\Android\Sdk
Path=%Path%;%ANDROID_HOME%\emulator;%ANDROID_HOME%\platform-tools
Then reload your terminal (or restart it).
Create an Android Emulator:
- Open Android Studio
- Click More Actions → Virtual Device Manager
- Click Create Device
- Select Pixel 6 (or any modern device)
- Click Next
- Select a system image (recommend API 33 - Android 13)
- Click Download if not already installed
- Click Next → Finish
Verify Setup:
# Start the emulator
# Either with a command with the emulator name or manually from android studio
emulator -avd Pixel_6_API_33 & ## use the name of your emulator
# In a new terminal, run the app
cd apps/mobile
bun android
4. Alternative: Physical Device Testing (All Platforms)
For quick testing without emulators:
-
Install Expo Go on your phone:
- iOS: App Store
- Android: Google Play Store
-
Ensure your phone and computer are on the same WiFi network
-
Run the app:
cd apps/mobile
bun start
- Scan the QR code with:
- iOS: Camera app → opens in Expo Go
- Android: Expo Go app → tap "Scan QR Code"
Verification Checklist
Mac Users:
- iOS Simulator launches and app loads successfully
- Android Emulator launches and app loads successfully
- Hot reload works on both platforms (make a small change and save)
- No TypeScript errors in your IDE
Windows/Linux Users:
- Android Emulator launches and app loads successfully
- Physical iPhone (with Expo Go) connects and loads app successfully
- Hot reload works on both platforms
- No TypeScript errors in your IDE
Common Issues
"Command not found: emulator"
- Make sure you've added Android SDK to your PATH and reloaded your shell/terminal
"No Android connected device found"
- Start the emulator first before running
bun android - Check running emulators:
adb devices
iOS Simulator won't launch (Mac only)
- Try:
sudo xcode-select --reset - Restart your computer
Can't connect physical device to Expo
- Ensure phone and computer are on the same WiFi network
- Try using tunnel mode:
bun start --tunnel - Check that your network allows device communication (not on guest network)
Metro bundler cache issues
cd apps/mobile
bun start --clear
Windows: Android Studio can't find SDK
- Make sure ANDROID_HOME path uses backslashes:
C:\Users\...\Android\Sdk - Run Android Studio as Administrator
Platform-Specific Notes
macOS
- ✅ Can develop for iOS and Android
- ✅ Full native module support
- ✅ Can build standalone apps for both platforms
Windows/Linux
- ✅ Can develop for Android (full support)
- ⚠️ iOS development requires physical device + Expo Go
- ❌ Cannot build standalone iOS apps (requires macOS)
- 💡 95% of features testable via Expo Go on iPhone
Getting Help
If you encounter issues:
- Check the error message carefully
- Search the Expo documentation
- Ask in slack
What's inside
5 setup sections, 2 platform-specific notes, a verification checklist, and a common issues table.
Change this for your project
- Replace
GenerateNU/skillsparkwith your own repository name - Replace
apps/mobilewith your project's mobile app path - Replace
Skillsparkwith your app's name - Replace
Pixel_6_API_33with your emulator's AVD name
Where it goes
Use as the system prompt for your model call, or as the base instructions in your agent framework.
Worth borrowing
- Separating setup instructions by OS (macOS vs Windows/Linux) to reduce confusion
- Providing a verification checklist so developers know when setup is complete
- Listing common issues with specific commands to resolve them
Related Documents
Character Persona
Defines a Fallout 2 roleplay persona for an LLM agent: charming rogue with social-first combat and moral code.
Claude Tool Use (Function Calling) Documentation
Teaches how to define and use Claude tool use (function calling) with Python, including schema rules, execution patterns, and best practices.
DiffusionDB
Documents a 14-million-image prompt dataset scraped from the Stable Diffusion Discord server, with metadata and download instructions.
coding: utf-8
Collates GPT-4.1 prompting tips from internal testing, covering agentic workflows, long context, chain of thought, and instruction following.