mobile-react-native
Helps you build cross-platform mobile apps using React Native and Expo with pre-configured navigation and styling.
Install
mkdir -p .claude/skills/mobile-react-native && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/11839" && unzip -o skill.zip -d .claude/skills/mobile-react-native && rm skill.zipInstalls to .claude/skills/mobile-react-native
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
React Native development with Expo, navigation, native modules, and cross-platform patternsKey capabilities
- →Initialize new React Native projects with Expo
- →Implement navigation structures using React Navigation (Stack, Tab navigators)
- →Apply cross-platform styling with StyleSheet and `useWindowDimensions`
- →Manage application state using Zustand with persistence
- →Perform API calls and manage data fetching with React Query
- →Integrate native modules via Expo (Location, ImagePicker, Notifications)
How it works
This skill provides guidance and code examples for React Native development using Expo, covering project setup, navigation, styling, state management, API calls, and native module integration.
Inputs & outputs
When to use mobile-react-native
- →Initializing new React Native projects with Expo
- →Setting up stack and tab navigation flows
- →Writing platform-specific styling
- →Managing mobile app component structure
About this skill
React Native Development Skill
Build cross-platform mobile apps.
Expo Setup
npx create-expo-app@latest my-app
cd my-app
npx expo start
Navigation
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
const Stack = createNativeStackNavigator();
const Tab = createBottomTabNavigator();
function HomeStack() {
return (
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
);
}
export default function App() {
return (
<NavigationContainer>
<Tab.Navigator>
<Tab.Screen
name="HomeTab"
component={HomeStack}
options={{ tabBarIcon: ({color}) => <HomeIcon color={color} /> }}
/>
<Tab.Screen name="Profile" component={ProfileScreen} />
</Tab.Navigator>
</NavigationContainer>
);
}
Styling
import { StyleSheet, View, Text, useWindowDimensions } from 'react-native';
function Card({ title, children }) {
const { width } = useWindowDimensions();
const isTablet = width > 768;
return (
<View style={[styles.card, isTablet && styles.cardTablet]}>
<Text style={styles.title}>{title}</Text>
{children}
</View>
);
}
const styles = StyleSheet.create({
card: {
backgroundColor: '#fff',
borderRadius: 12,
padding: 16,
marginVertical: 8,
shadowColor: '#000',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.1,
shadowRadius: 8,
elevation: 3
},
cardTablet: {
maxWidth: 600,
alignSelf: 'center'
},
title: {
fontSize: 18,
fontWeight: '600',
marginBottom: 8
}
});
State Management
import { create } from 'zustand';
import { persist, createJSONStorage } from 'zustand/middleware';
import AsyncStorage from '@react-native-async-storage/async-storage';
const useStore = create(
persist(
(set) => ({
user: null,
setUser: (user) => set({ user }),
logout: () => set({ user: null })
}),
{
name: 'user-storage',
storage: createJSONStorage(() => AsyncStorage)
}
)
);
API Calls
import { useQuery, useMutation } from '@tanstack/react-query';
function UserList() {
const { data, isLoading, error, refetch } = useQuery({
queryKey: ['users'],
queryFn: () => fetch('/api/users').then(r => r.json())
});
if (isLoading) return <ActivityIndicator />;
return (
<FlatList
data={data}
keyExtractor={item => item.id}
renderItem={({ item }) => <UserCard user={item} />}
onRefresh={refetch}
refreshing={isLoading}
/>
);
}
Native Modules (Expo)
import * as Location from 'expo-location';
import * as ImagePicker from 'expo-image-picker';
import * as Notifications from 'expo-notifications';
async function getLocation() {
const { status } = await Location.requestForegroundPermissionsAsync();
if (status !== 'granted') return null;
return Location.getCurrentPositionAsync({});
}
async function pickImage() {
const { status } = await ImagePicker.requestMediaLibraryPermissionsAsync();
if (status !== 'granted') return null;
return ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
allowsEditing: true,
quality: 0.8
});
}
Best Practices
- Use FlatList for long lists (not ScrollView)
- Memoize expensive components
- Handle offline states
- Test on real devices
- Use Hermes for performance
When not to use it
- →When developing for a single platform without cross-platform requirements
- →When not using Expo for React Native development
- →When a simpler state management solution is preferred over Zustand
Limitations
- →Requires `npx create-expo-app` for project initialization
- →Navigation examples use `@react-navigation/native` and related libraries
- →State management examples use Zustand and `AsyncStorage`
How it compares
This skill offers a complete, Expo-centric approach to React Native development, providing structured patterns for common mobile app features, unlike generic React Native tutorials.
Compared to similar skills
mobile-react-native side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| mobile-react-native (this skill) | 0 | 6mo | Review | Intermediate |
| json-render-react-native | 1 | 5mo | No flags | Intermediate |
| react-native-architecture | 55 | 2mo | Review | Advanced |
| react-native-design | 33 | 2mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
json-render-react-native
vercel-labs
React Native renderer for json-render that turns JSON specs into native mobile UIs. Use when working with @json-render/react-native, building React Native UIs from JSON, creating mobile component catalogs, or rendering AI-generated specs on mobile.
react-native-architecture
wshobson
Build production React Native apps with Expo, navigation, native modules, offline sync, and cross-platform patterns. Use when developing mobile apps, implementing native integrations, or architecting React Native projects.
react-native-design
wshobson
Master React Native styling, navigation, and Reanimated animations for cross-platform mobile development. Use when building React Native apps, implementing navigation patterns, or creating performant animations.
heroui-native
heroui-inc
HeroUI Native component library for React Native (Tailwind v4 via Uniwind). Use when working with HeroUI Native components, installing HeroUI Native, customizing themes, or accessing component documentation. Keywords: HeroUI Native, heroui-native, React Native UI, Uniwind.
react-native
alinaqi
React Native mobile patterns, platform-specific code
frontend-mobile-development-component-scaffold
sickn33
You are a React component architecture expert specializing in scaffolding production-ready, accessible, and performant components. Generate complete component implementations with TypeScript, tests, s