# Mobile Developer

> 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.

- Skill: `kumaran-is/mobile-developer` (Agent Skill)
- Install (CLI): `npx skillmds@latest add kumaran-is/mobile-developer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kumaran-is/mobile-developer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: kumaran-is (https://skillmd.com/u/kumaran-is)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kumaran-is/mobile-developer

---


## 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

```bash
# New React Native project (Expo recommended for new projects)
npx create-expo-app MyApp --template blank-typescript
cd MyApp

# Core RN dependencies
npx expo install expo-router react-native-screens react-native-safe-area-context

# EAS CLI for builds and OTA
npm install -g eas-cli
eas login
eas build:configure
```

```bash
# Bare React Native (when full native control is required)
npx @react-native-community/cli init MyApp --template react-native-template-typescript
cd MyApp
npx pod-install ios  # Install CocoaPods dependencies
```

```bash
# Run
npx expo start           # Expo dev server
npx react-native run-ios # Bare RN iOS
npx react-native run-android # Bare RN Android

# Detox E2E setup
npm install --save-dev detox @types/detox
npx detox init
```

## Fastlane CI/CD Example

```ruby
# fastlane/Fastfile
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", project_dir: "android/")
    upload_to_play_store(track: "production", rollout: "0.1")
  end
end
```

## EAS Update (OTA) Example

```bash
# Publish an update to the preview channel
eas update --channel preview --message "Fix checkout crash"

# Promote preview to production
eas update --channel production --message "Stable release"
```

```json
// eas.json
{
  "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

