mobile-dev

Diagnose and manage Expo React Native development sessions including Metro, emulators, and native rebuilds.

1|Updated Mar 26, 2026
One-click install
npx skills add https://github.com/arndvs/ctrlshft --skill mobile-dev-arndvs
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: mobile-dev
Source: https://github.com/arndvs/ctrlshft/tree/main/skills/mobile-dev
Command: npx skills add https://github.com/arndvs/ctrlshft --skill mobile-dev-arndvs

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Expo mobile development sessions often fail due to stale Metro state, offline emulators, corrupted node_modules, or confusion about when a native rebuild is required. This Skill provides a deterministic startup and troubleshooting workflow so agents and developers reach a working dev client without guesswork. ## Core Features & Use Cases - Clean State Reset: Force-stops the app, clears ADB reverse mappings, and verifies port 8081 and emulator status before starting. - Native Rebuild Decision Tree: A question table determines whether changes to native modules, app.config.ts plugins, bundle IDs, or entitlements require a full rebuild versus a Metro-only restart. - Emulator and Metro Startup: Boots the verified AVD, configures adb reverse port mappings, starts Metro in development build mode, and launches the dev client via ADB intent. - Diagnostic Checklist: Systematic checks for Metro reachability, emulator connectivity via 10.0.2.2, dev client currency, and EXPO_PUBLIC_API_URL configuration. - Use Case: When a redbox appears after installing a new dependency, run the diagnostic checklist to confirm Metro is serving a development build, the emulator can reach the host, and node_modules are not corrupted. ## Quick Start Use the mobile-dev skill to reset my Expo dev environment, start the Android emulator and Metro, and verify the app loads in the development build.

Frequently Asked Questions about mobile-dev

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I fix Expo Metro bundler connection issues on Android emulator?▼

Verify Metro is listening on port 8081, confirm the emulator shows as device in adb devices, and test reachability with adb shell curl http://10.0.2.2:8081/status. Set up adb reverse tcp:8081 tcp:8081 so the emulator can reach the host Metro server.

When do I need a native rebuild versus just restarting Metro in Expo?▼

Rebuild when you add or remove native modules, change plugins in app.config.ts, modify the bundle ID or package name, change newArchEnabled, or update googleServicesFile or entitlements. TypeScript, JavaScript, and CSS-only changes only require restarting Metro.

Why does Expo say 'Using Expo Go' instead of development build?▼

Metro started without the dev client flag, so it targets the Expo Go runtime instead of your custom development build. Stop Metro and restart with the dev client flag, then confirm the terminal shows 'Using development build'.

Why can't the Android emulator reach localhost API on my machine?▼

The Android emulator maps host localhost to the special address 10.0.2.2, so using localhost in EXPO_PUBLIC_API_URL fails. Set EXPO_PUBLIC_API_URL to use 10.0.2.2 and run adb reverse tcp:3001 tcp:3001 for the API port.

How do I fix corrupted node_modules after installing Expo packages?▼

Check for leftover tmp directories under node_modules, then remove node_modules across apps and packages and run a clean pnpm install. Verify alignment with the Expo SDK afterward using expo doctor.