mcpField
R
react-native

react-native

github.com/claude-dev-suiteDevelopment4645 installsUpdated 5d ago
Repository

About react-native

A React Native development reference skill for developers building mobile app interfaces. It covers common implementation patterns from navigation and networking to storage and production readiness.

Key features

  1. 01Core UI component patterns
  2. 02React Navigation examples
  3. 03Platform-specific styling
  4. 04Networking with TanStack Query
  5. 05Encrypted storage guidance
  6. 06Performance and release checklist

Use cases

  1. 01Implementing product lists and screen navigation
  2. 02Fetching data and storing auth tokens
  3. 03Reviewing performance and production setup

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill react-native

After installing, type/react-nativein Claude Code to confirm it loaded.

Details

From the project README

React Native

Core Components

import { View, Text, ScrollView, FlatList, Pressable, StyleSheet } from 'react-native';

function ProductList({ products }: { products: Product[] }) {
  return (
    <FlatList
      data={products}
      keyExtractor={(item) => item.id}
      renderItem={({ item }) => (
        <Pressable onPress={() => navigate('Detail', { id: item.id })} style={styles.card}>
          <Text style={styles.title}>{item.name}</Text>
          <Text style={styles.price}>${item.price}</Text>
        </Pressable>
      )}
      ItemSeparatorComponent={() => <View style={styles.separator} />}
    />
  );
}

const styles = StyleSheet.create({
  card: { padding: 16, backgroundColor: '#fff' },
  title: { fontSize: 16, fontWeight: '600' },
  price: { fontSize: 14, color: '#666', marginTop: 4 },
  separator: { height: 1, backgroundColor: '#eee' },
});

Navigation (React Navigation)

import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';

type RootStackParamList = {
  Home: undefined;
  Detail: { id: string };
};

const Stack = createNativeStackNavigator<RootStackParamList>();
const Tab = createBottomTabNavigator();

function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="Detail" component={DetailScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

// Type-safe navigation
import { NativeStackScreenProps } from '@react-navigation/native-stack';
type DetailProps = NativeStackScreenProps<RootStackParamList, 'Detail'>;

function DetailScreen({ route, navigation }: DetailProps) {
  const { id } = route.params;
  return <Text>{id}</Text>;
}

Platform-Specific Code

import { Platform } from 'react-native';

const styles = StyleSheet.create({
  shadow: Platform.select({
    ios: { shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.1 },
    android: { elevation: 3 },
  }),
});

// File-based: Component.ios.tsx / Component.android.tsx (auto-resolved)

Networking

import { useQuery, useMutation } from '@tanstack/react-query';

function useProducts() {
  return useQuery({
    queryKey: ['products'],
    queryFn: async () => {
      const res = await fetch(`${API_URL}/products`);
      if (!res.ok) throw new Error('Failed to fetch');
      return res.json() as Promise<Product[]>;
    },
  });
}

Secure Storage

import EncryptedStorage from 'react-native-encrypted-storage';

await EncryptedStorage.setItem('auth_token', token);
const token = await EncryptedStorage.getItem('auth_token');
await EncryptedStorage.removeItem('auth_token');

Performance

TechniqueImpact
FlatList over ScrollView for listsHigh
React.memo on list itemsMedium
useCallback for event handlers in listsMedium
Hermes engine (default in RN 0.70+)High
Avoid inline styles in renderLow-Medium
InteractionManager.runAfterInteractionsMedium

Anti-Patterns

Anti-PatternFix
ScrollView for long listsUse FlatList or FlashList
Inline functions in FlatList renderItemExtract component, use React.memo
Storing tokens in AsyncStorageUse react-native-encrypted-storage
No error boundariesWrap screens in error boundaries
Ignoring keyboard on formsUse KeyboardAvoidingView

Production Checklist

  • Hermes engine enabled
  • ProGuard/R8 for Android release builds
  • App signing configured (Android keystore, iOS certificates)
  • Deep linking configured
  • Error tracking (Sentry, Bugsnag)
  • OTA updates (CodePush or Expo Updates)
  • Performance monitoring (Flipper, React DevTools)

Comments

Markdown supported