mobile-app-developer-skill/SKILL.md
Expert in cross-platform mobile development (React Native/Flutter), bridging native performance with shared business logic.
npx skillsauth add 404kidwiz/claude-supercode-skills mobile-app-developerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provides cross-platform mobile development expertise specializing in React Native and Flutter. Builds high-performance mobile applications with offline-first architectures, native module integration, and optimized delivery pipelines for iOS and Android.
Which framework fits the project?
│
├─ **React Native (0.76+)**
│ ├─ Team knows React? → **Yes** (Fastest ramp-up)
│ ├─ Need OTA Updates? → **Yes** (Expo Updates / CodePush)
│ ├─ Heavy Native UI? → **Maybe** (New Architecture makes this easier, but complex)
│ └─ Ecosystem? → **Massive** (npm, vast library support)
│
├─ **Flutter (3.24+)**
│ ├─ Pixel Perfection needed? → **Yes** (Skia/Impeller rendering guarantees consistency)
│ ├─ Heavy Animation? → **Yes** (60/120fps default)
│ ├─ Desktop support needed? → **Yes** (First-class Windows/macOS/Linux)
│ └─ Dart knowledge? → **Required** (Learning curve for JS devs)
│
└─ **Expo (Managed RN)**
├─ Rapid MVP? → **Yes** (Zero config, EAS Build)
├─ Custom Native Code? → **Yes** (Config Plugins handle 99% of cases)
└─ Ejecting? → **No** (Prebuild allows native code without ejecting)
| Architecture | React Native | Flutter | Best For | |--------------|--------------|---------|----------| | MVVM | MobX / Legend-State | Provider / Riverpod | Reactive UI, clean separation | | Redux-style | Redux Toolkit / Zustand | BLoC / Cubit | Complex enterprise apps, strict flow | | Atomic | Recoil / Jotai | Riverpod | Fine-grained updates, high performance | | Offline-First | WatermelonDB / Realm | Hive / Isar / Drift | Apps needing robust sync |
| Metric | Target | Optimization Strategy | |--------|--------|-----------------------| | Cold Start | < 1.5s | Hermes (RN), Lazy Loading, Deferred initialization | | Frame Rate | 60fps (min) / 120fps (target) | Memoization, release thread (JS) vs UI thread, Impeller (Flutter) | | Bundle Size | < 30MB (Universal) | ProGuard/R8, Split APKs, Asset Optimization | | Memory | < 200MB (Avg) | Image caching, List recycling (FlashList) |
Red Flags → Escalate to mobile-developer (Native):
Goal: Initialize a high-performance React Native app with Fabric & TurboModules.
Steps:
Initialization (Expo)
npx create-expo-app@latest my-app -t default
cd my-app
npx expo install expo-router react-native-reanimated
Configuration (app.json)
{
"expo": {
"newArchEnabled": true,
"plugins": [
"expo-router",
"expo-font",
["expo-build-properties", {
"ios": { "newArchEnabled": true },
"android": { "newArchEnabled": true }
}]
]
}
}
Directory Structure (File-based Routing)
/app
/_layout.tsx # Root layout (Provider setup)
/index.tsx # Home screen
/(tabs)/ # Tab navigation group
/_layout.tsx # Tab configuration
/home.tsx
/settings.tsx
/product/[id].tsx # Dynamic route
/components # UI Components
/services # API & Logic
/store # State Management
Navigation Implementation
// app/_layout.tsx
import { Stack } from 'expo-router';
import { QueryClientProvider } from '@tanstack/react-query';
export default function RootLayout() {
return (
<QueryClientProvider client={queryClient}>
<Stack screenOptions={{ headerShown: false }}>
<Stack.Screen name="(tabs)" />
<Stack.Screen name="modal" options={{ presentation: 'modal' }} />
</Stack>
</QueryClientProvider>
);
}
Goal: Render 10,000+ list items at 60fps.
Steps:
Replace FlatList
import { FlashList } from "@shopify/flash-list";
const MyList = ({ data }) => {
return (
<FlashList
data={data}
renderItem={({ item }) => <ListItem item={item} />}
estimatedItemSize={100} // Critical for performance
keyExtractor={item => item.id}
onEndReached={loadMore}
onEndReachedThreshold={0.5}
/>
);
};
Memoize List Items
const ListItem = React.memo(({ item }) => {
return (
<View style={styles.item}>
<Text>{item.title}</Text>
</View>
);
}, (prev, next) => prev.item.id === next.item.id);
Image Optimization
expo-image (uses SDWebImage/Glide native caching).cachePolicy="memory-disk".transition={200} for smooth loading.Use case: Adding native code without ejecting.
// plugins/withCustomNative.js
const { withAndroidManifest } = require('@expo/config-plugins');
const withCustomNative = (config) => {
return withAndroidManifest(config, async (config) => {
const androidManifest = config.modResults;
// Add permission
androidManifest.manifest['uses-permission'].push({
$: { 'android:name': 'android.permission.BLUETOOTH' }
});
return config;
});
};
module.exports = withCustomNative;
Use case: Secure login with FaceID/TouchID.
import * as LocalAuthentication from 'expo-local-authentication';
export function useBiometrics() {
const authenticate = async () => {
const hasHardware = await LocalAuthentication.hasHardwareAsync();
if (!hasHardware) return false;
const isEnrolled = await LocalAuthentication.isEnrolledAsync();
if (!isEnrolled) return false;
const result = await LocalAuthentication.authenticateAsync({
promptMessage: 'Login with FaceID',
fallbackLabel: 'Use Passcode',
});
return result.success;
};
return { authenticate };
}
Use case: Handling auth tokens, retries, and network errors gracefully.
import axios from 'axios';
import * as SecureStore from 'expo-secure-store';
const api = axios.create({ baseURL: 'https://api.example.com' });
api.interceptors.request.use(async (config) => {
const token = await SecureStore.getItemAsync('auth_token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
api.interceptors.response.use(
(response) => response,
async (error) => {
if (error.response?.status === 401) {
// Trigger token refresh logic
// If refresh fails, redirect to login
}
return Promise.reject(error);
}
);
openapi-generator).flexDirection, justifyContent).testID="login_btn").development
Expert in automating Excel workflows using Node.js (ExcelJS, SheetJS) and Python (pandas, openpyxl).
content-media
Expert in designing durable, scalable workflow systems using Temporal, Camunda, and Event-Driven Architectures.
tools
Use when user needs WordPress development, theme or plugin creation, site optimization, security hardening, multisite management, or scaling WordPress from small sites to enterprise platforms.
tools
Expert in Windows Server, Active Directory (AD DS), Hybrid Identity (Entra ID), and PowerShell automation.