| name | mobile-developer |
| description | Expert mobile developer for React Native, native Swift/SwiftUI, Kotlin/Compose, and mobile CI/CD (Fastlane, Codemagic, Bitrise, EAS). Use for everything mobile that flutter-mobile does NOT cover. For Flutter 3.41.x work, use flutter-mobile skill instead. |
| allowed-tools | Bash, Read, Write, Edit, Glob, Grep |
| metadata | {"triggers":"React Native, React Native New Architecture, Hermes, TurboModules, SwiftUI, Kotlin Compose, Fastlane, Codemagic, Bitrise, EAS Update, CodePush, Detox, native module, brownfield, Expo, MAUI","related-skills":"flutter-mobile, mobile-design","domain":"frontend","role":"specialist","scope":"implementation","output-format":"code"} |
| last-reviewed | 2026-03-15 |
Iron Law
FOR FLUTTER WORK — USE flutter-mobile SKILL INSTEAD. This skill is for React Native, native Swift/Kotlin, and mobile CI/CD only.
Mobile Developer Skill
Disambiguation — Which Skill to Use
| Task | Use This Skill | Use flutter-mobile Instead |
|---|
| React Native app | YES | No |
| Flutter screen/provider/widget | No | YES |
| Native Swift/SwiftUI module | YES | No |
| Native Kotlin/Compose module | YES | No |
| Fastlane lanes / Codemagic pipeline | YES | No |
| EAS Update / CodePush OTA | YES | No |
| Flutter CI/CD (GitHub Actions, build) | No — use deployment-engineer agent | No |
| Detox E2E (React Native) | YES | No |
| Maestro E2E (Flutter) | No | YES (via flutter-mobile) |
| App Store signing (any) | No | No — use asc-signing-setup skill |
Capabilities
1. React Native (RN 0.74+, New Architecture)
New Architecture (Fabric renderer, TurboModules, JSI), Hermes engine, Metro bundler configuration, Flipper debugging, Codegen for typed native modules, and the bridge-free JSI layer for synchronous native calls.
2. Expo (SDK 50+)
EAS Build for managed and bare workflows, EAS Update for over-the-air JS bundle delivery, development builds with custom native code, config plugins for extending native projects without ejecting.
3. Native Integration
Swift/SwiftUI platform channel implementations (method channels, event channels), Kotlin/Compose native module authoring, brownfield integration (embedding RN screens in an existing native app or vice versa).
4. Architecture
Clean Architecture for React Native (data/domain/presentation layers), MVVM with React Query or Zustand, MVI with Redux Toolkit, BLoC pattern adapted for RN, feature-first folder structure mirroring the flutter-mobile convention.
5. Performance
App startup time reduction (Hermes bytecode, lazy loading), memory leak detection (Flipper Memory Monitor, Instruments, Android Profiler), battery impact analysis, FlatList/FlashList virtualization, Reanimated 3 for 60fps UI-thread animations, InteractionManager for deferred heavy work.
6. Data Management
Realm for complex relational offline data, WatermelonDB for high-performance sync, MMKV for fast key-value storage, offline-first sync patterns with conflict resolution (last-write-wins, CRDT), background sync with WorkManager (Android) and BGTaskScheduler (iOS).
7. Mobile CI/CD
Fastlane lanes (match for code signing, gym for builds, pilot/deliver for distribution), Codemagic YAML workflows, Bitrise pipelines, GitHub Actions with mobile-specific caching (CocoaPods, Gradle), CodePush for hotfix OTA, EAS Update for Expo-managed OTA.
8. Testing
Jest unit tests with @testing-library/react-native, Detox for black-box E2E on device/emulator, Maestro for declarative E2E (RN and native), XCTest for Swift unit tests, Firebase Test Lab and Bitrise device farm for multi-device coverage.
9. Security
OWASP MASVS compliance (MASVS-STORAGE, MASVS-CRYPTO, MASVS-NETWORK, MASVS-AUTH), react-native-keychain / expo-secure-store for credential storage, certificate pinning via react-native-ssl-pinning or TrustKit (iOS), RASP (Runtime Application Self-Protection), jailbreak/root detection.
Quick Reference — React Native Setup
npx create-expo-app MyApp --template blank-typescript
cd MyApp
npx expo install expo-router react-native-screens react-native-safe-area-context
npm install -g eas-cli
eas login
eas build:configure
npx @react-native-community/cli init MyApp --template react-native-template-typescript
cd MyApp
npx pod-install ios
npx expo start
npx react-native run-ios
npx react-native run-android
npm install --save-dev detox @types/detox
npx detox init
Fastlane CI/CD Example
default_platform(:ios)
platform :ios do
lane :beta do
increment_build_number(
build_number: ENV["BUILD_NUMBER"]
)
match(type: "appstore")
build_app(scheme: "MyApp", configuration: "Release")
upload_to_testflight(skip_waiting_for_build_processing: true)
end
lane :deploy do
match(type: "appstore")
build_app(scheme: "MyApp", configuration: "Release")
upload_to_app_store(force: true, skip_screenshots: true)
end
end
platform :android do
lane :beta do
gradle(
task: "bundle",
build_type: "Release",
project_dir: "android/"
)
upload_to_play_store(track: "internal")
end
lane :deploy do
gradle(task: "bundle", build_type: "Release", )
upload_to_play_store( , )
EAS Update (OTA) Example
eas update --channel preview --message "Fix checkout crash"
eas update --channel production --message "Stable release"
{
"build": {
"preview": {
"distribution": "internal",
"ios": { "simulator": false }
},
"production": {
"ios": { "buildConfiguration": "Release" },
"android": { "buildType": "apk" }
}
},
"update": {
"channel": "production"
}
}
Documentation Sources
Before generating code, consult these sources for current syntax and APIs:
| Source | Tool | Purpose |
|---|
| React Native | Context7 MCP | RN APIs, hooks, native modules, New Architecture APIs |
| Expo | Context7 MCP | EAS, SDK APIs, config plugins, expo-router |
| Swift/SwiftUI | Context7 MCP | SwiftUI views, Combine, platform integrations |
| Kotlin/Compose | Context7 MCP | Jetpack Compose, coroutines, platform integrations |
| Fastlane | WebFetch docs.fastlane.tools | Lane actions, match, gym, pilot, deliver |
| Detox | Context7 MCP | E2E matchers, device API, configuration |
Hard Prohibitions
- Never use this skill for Flutter UI work — use
flutter-mobile
- No
AsyncStorage for sensitive data — use react-native-keychain or expo-secure-store
- No array index as
key in FlatList/FlashList — use stable unique IDs
- No inline functions in
renderItem — use useCallback to prevent re-renders
- No JS-thread animations — always use
useNativeDriver: true or Reanimated 3
- No
console.log in production — use a structured logger (e.g., react-native-logs)
- No raw HTTP without SSL pinning for auth or payment endpoints
- No secrets in JS bundle — use EAS secrets or native keystore
Post-Code Review
After writing code, dispatch these reviewer agents:
code-reviewer — general quality, DRY, error handling
security-reviewer — OWASP MASVS compliance, secure storage, network security
flutter-security-expert — only if the feature also has a Flutter counterpart that shares native code