ios-dev

star 10

iOS/React Native development with Expo. Use when working on mobile app, running builds, debugging device issues, or setting up development environment including tethering.

majiayu000 By majiayu000 schedule Updated 2/5/2026

name: ios-dev description: iOS/React Native development with Expo. Use when working on mobile app, running builds, debugging device issues, or setting up development environment including tethering.

iOS Development Guide

Project Structure

mobile/
├── app/                    # Expo Router pages
│   ├── _layout.tsx
│   ├── index.tsx           # Home screen
│   └── room/[id].tsx       # Voice call room
├── src/
│   ├── components/         # UI components
│   ├── hooks/              # Custom hooks (WebRTC, Socket, Speech)
│   └── types/
├── ios/                    # Native iOS project (generated by prebuild)
└── .env                    # Environment variables

Key Commands

cd mobile

# Development (WiFi - same network as Mac)
npx expo start --dev-client

# Development (Tethering - requires tunnel)
npx expo start --dev-client --tunnel

# Build for specific device
npx expo run:ios --device "DEVICE_NAME"

# Clean rebuild (after config changes)
npx expo prebuild --platform ios --clean

# List available devices
xcrun xctrace list devices

Environment Configuration

# WiFi development
EXPO_PUBLIC_SIGNALING_SERVER_URL=http://192.168.x.x:3001

# Production (Render server)
EXPO_PUBLIC_SIGNALING_SERVER_URL=https://webrtc-signaling-xxxx.onrender.com

Tethering Development

When Mac is connected to iPhone's Personal Hotspot:

  1. Problem: iPhone cannot directly access devices on its own hotspot
  2. Solution: Use ngrok tunnel
# Install ngrok (first time)
npm install -g @expo/ngrok@^4.1.0

# Start with tunnel
npx expo start --dev-client --tunnel

# Get tunnel URL
curl -s http://127.0.0.1:4040/api/tunnels | grep -o '"public_url":"https://[^"]*"'

Important: Use HTTPS URL (iOS App Transport Security requirement)

Troubleshooting

Issue Solution
"Device is busy" Unlock iPhone, reconnect USB
Metro connection fails Check IP address, or use --tunnel
"main" not registered Restart Metro with --clear
Build fails after config change Run npx expo prebuild --clean
Simulator no audio Use real device for audio testing

Development Workflow

  1. Start signaling server: cd server && npm run dev
  2. Start Metro: cd mobile && npx expo start --dev-client
  3. Open app on iPhone, enter Metro URL
  4. For code changes: Hot reload automatic
  5. For native changes: Rebuild with npx expo run:ios --device
Install via CLI
npx skills add https://github.com/majiayu000/claude-skill-registry-data --skill ios-dev
Repository Details
star Stars 10
call_split Forks 4
navigation Branch main
article Path SKILL.md
More from Creator