Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
jeffallan avatar

React Native Expert

  • 3.7k installs
  • 10.8k repo stars
  • Updated May 20, 2026
  • jeffallan/claude-skills

How to build production-ready cross-platform mobile apps with React Native and Expo, including navigation setup, native module integration, performance optimization, and platform-specific handling.

About

React Native Expert guides developers through building production-ready cross-platform mobile applications with React Native and Expo. Covers core workflows: setup with Expo Router or React Navigation and TypeScript, feature-based project structure, component implementation with platform-specific code paths, performance optimization via FlatList memo + useCallback patterns and Flipper profiling, and testing on both iOS and Android real devices. Handles navigation hierarchies (tabs, stacks, drawers), native module integration, SafeAreaView notch handling, keyboard input management, and memory leak prevention. Includes error recovery strategies for Metro bundler, iOS/Android build failures, and native module resolution. Developers use this when building Expo or React Native apps, setting up navigation architectures, integrating native modules, or optimizing scroll performance. Setup with Expo Router or React Navigation plus TypeScript; verify with `npx expo doctor` before proceeding. Optimize FlatList rendering using memo + useCallback; profile with Flipper or React DevTools.

  • Setup with Expo Router or React Navigation plus TypeScript; verify with `npx expo doctor` before proceeding
  • Optimize FlatList rendering using memo + useCallback; profile with Flipper or React DevTools
  • Platform-specific code via Platform.select or .ios.tsx/.android.tsx splits for iOS/Android differences
  • Handle SafeAreaView for notches, KeyboardAvoidingView for forms, Android back-button navigation
  • Error recovery for Metro bundler, iOS/Android builds, native module resolution with `npx expo install`

React Native Expert by the numbers

  • 3,740 all-time installs (skills.sh)
  • +96 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #39 of 1,048 Mobile Development skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

react-native-expert capabilities & compatibility

Capabilities
project setup with expo router and react navigat · flatlist performance optimization with memo + us · platform specific ios and android code handling · navigation hierarchy implementation (tabs, stack · native module integration and configuration · safearea and keyboard input management · metro bundler and build error recovery · flipper and react devtools profiling
Works with
github
Use cases
frontend · debugging · testing · api development
Platforms
macOS · Windows · Linux
IDEs
vscode · cursor ide
Runs
Runs locally
Pricing
Free
npx skills add https://github.com/jeffallan/claude-skills --skill react-native-expert

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3.7k
repo stars10.8k
Security audit3 / 3 scanners passed
Last updatedMay 20, 2026
Repositoryjeffallan/claude-skills

What it does

Build, optimize, and debug cross-platform mobile apps using React Native and Expo with navigation, native modules, and platform-specific handling.

Who is it for?

Building Expo or React Native mobile apps, setting up tab/stack/drawer navigation, integrating native modules, improving scroll performance, handling SafeArea and keyboard input, configuring Expo SDK projects.

Skip if: Web-only development, non-mobile projects, single-platform native iOS or Android development without cross-platform requirements.

When should I use this skill?

Initializing React Native or Expo project, implementing navigation, optimizing FlatList performance, handling platform-specific code, integrating native modules, debugging Metro bundler or build errors.

What you get

Deliver TypeScript React Native components with optimized FlatList rendering, correct navigation architecture, platform-specific code, and error recovery strategies for both iOS and Android.

  • TypeScript React Native components
  • Navigation setup (tabs, stacks, drawers)
  • Optimized FlatList implementations

By the numbers

  • Supports React Native 0.73+
  • Supports Expo SDK 50+
  • Covers FlatList optimization with memo and useCallback patterns

Files

SKILL.mdMarkdownGitHub ↗

React Native Expert

Senior mobile engineer building production-ready cross-platform applications with React Native and Expo.

Core Workflow

1. Setup — Expo Router or React Navigation, TypeScript config → _run npx expo doctor to verify environment and SDK compatibility; fix any reported issues before proceeding_ 2. Structure — Feature-based organization 3. Implement — Components with platform handling → _verify on iOS simulator and Android emulator; check Metro bundler output for errors before moving on_ 4. Optimize — FlatList, images, memory → _profile with Flipper or React DevTools_ 5. Test — Both platforms, real devices

Error Recovery

  • Metro bundler errors → clear cache with npx expo start --clear, then restart
  • iOS build fails → check Xcode logs → resolve native dependency or provisioning issue → rebuild with npx expo run:ios
  • Android build fails → check adb logcat or Gradle output → resolve SDK/NDK version mismatch → rebuild with npx expo run:android
  • Native module not found → run npx expo install <module> to ensure compatible version, then rebuild native layers

Reference Guide

Load detailed guidance based on context:

TopicReferenceLoad When
Navigationreferences/expo-router.mdExpo Router, tabs, stacks, deep linking
Platformreferences/platform-handling.mdiOS/Android code, SafeArea, keyboard
Listsreferences/list-optimization.mdFlatList, performance, memo
Storagereferences/storage-hooks.mdAsyncStorage, MMKV, persistence
Structurereferences/project-structure.mdProject setup, architecture

Constraints

MUST DO

  • Use FlatList/SectionList for lists (not ScrollView)
  • Implement memo + useCallback for list items
  • Handle SafeAreaView for notches
  • Test on both iOS and Android real devices
  • Use KeyboardAvoidingView for forms
  • Handle Android back button in navigation

MUST NOT DO

  • Use ScrollView for large lists
  • Use inline styles extensively (creates new objects)
  • Hardcode dimensions (use Dimensions API or flex)
  • Ignore memory leaks from subscriptions
  • Skip platform-specific testing
  • Use waitFor/setTimeout for animations (use Reanimated)

Code Examples

Optimized FlatList with memo + useCallback

import React, { memo, useCallback } from 'react';
import { FlatList, View, Text, StyleSheet } from 'react-native';

type Item = { id: string; title: string };

const ListItem = memo(({ title, onPress }: { title: string; onPress: () => void }) => (
  <View style={styles.item}>
    <Text onPress={onPress}>{title}</Text>
  </View>
));

export function ItemList({ data }: { data: Item[] }) {
  const handlePress = useCallback((id: string) => {
    console.log('pressed', id);
  }, []);

  const renderItem = useCallback(
    ({ item }: { item: Item }) => (
      <ListItem title={item.title} onPress={() => handlePress(item.id)} />
    ),
    [handlePress]
  );

  return (
    <FlatList
      data={data}
      keyExtractor={(item) => item.id}
      renderItem={renderItem}
      removeClippedSubviews
      maxToRenderPerBatch={10}
      windowSize={5}
    />
  );
}

const styles = StyleSheet.create({
  item: { padding: 16, borderBottomWidth: StyleSheet.hairlineWidth },
});

KeyboardAvoidingView Form

import React from 'react';
import {
  KeyboardAvoidingView,
  Platform,
  ScrollView,
  TextInput,
  StyleSheet,
  SafeAreaView,
} from 'react-native';

export function LoginForm() {
  return (
    <SafeAreaView style={styles.safe}>
      <KeyboardAvoidingView
        style={styles.flex}
        behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
      >
        <ScrollView contentContainerStyle={styles.content} keyboardShouldPersistTaps="handled">
          <TextInput style={styles.input} placeholder="Email" autoCapitalize="none" />
          <TextInput style={styles.input} placeholder="Password" secureTextEntry />
        </ScrollView>
      </KeyboardAvoidingView>
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  safe: { flex: 1 },
  flex: { flex: 1 },
  content: { padding: 16, gap: 12 },
  input: { borderWidth: 1, borderRadius: 8, padding: 12, fontSize: 16 },
});

Platform-Specific Component

import { Platform, StyleSheet, View, Text } from 'react-native';

export function StatusChip({ label }: { label: string }) {
  return (
    <View style={styles.chip}>
      <Text style={styles.label}>{label}</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  chip: {
    paddingHorizontal: 12,
    paddingVertical: 4,
    borderRadius: 999,
    backgroundColor: '#0a7ea4',
    // Platform-specific shadow
    ...Platform.select({
      ios: { shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.2, shadowRadius: 4 },
      android: { elevation: 3 },
    }),
  },
  label: { color: '#fff', fontSize: 13, fontWeight: '600' },
});

Output Format

When implementing React Native features, deliver: 1. Component code — TypeScript, with prop types defined 2. Platform handlingPlatform.select or .ios.tsx / .android.tsx splits as needed 3. Navigation integration — route params typed, back-button handling included 4. Performance notes — memo boundaries, key extractor strategy, image caching

Knowledge Reference

React Native 0.73+, Expo SDK 50+, Expo Router, React Navigation 7, Reanimated 3, Gesture Handler, AsyncStorage, MMKV, React Query, Zustand

Documentation

Related skills

How it compares

Use react-native-expert for Expo Router file-based apps; pick React Navigation guides when not using Expo's app directory model.

FAQ

What is the correct way to optimize FlatList rendering?

Wrap list items with memo, memoize renderItem and onPress callbacks with useCallback, set maxToRenderPerBatch to 10, windowSize to 5, and enable removeClippedSubviews for performance.

How do I handle platform-specific code in React Native?

Use Platform.select() for inline styles/logic, or create .ios.tsx/.android.tsx file splits. Handle iOS SafeAreaView for notches and Android back-button navigation separately.

What should I do when Metro bundler fails?

Clear cache with `npx expo start --clear`, then restart. Check Metro bundler output for specific errors. For native issues, run `npx expo install <module>` and rebuild.

Is React Native Expert safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Mobile Developmentfrontendtesting

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.