
React Native Patterns
- 199 installs
- 655 repo stars
- Updated August 2, 2026
- spencerpauly/awesome-cursor-skills
Helps with frontend development tasks.
About
react-native-patterns is a Claude Code skill for frontend development. It helps solo builders move faster with AI-assisted coding.
- react-native-patterns
- Frontend Development
- AI-coding skill
React Native Patterns by the numbers
- 199 all-time installs (skills.sh)
- +20 installs in the week ending Jul 27, 2026 (Skillselion tracking)
- Ranked #857 of 2,245 Frontend Development skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/spencerpauly/awesome-cursor-skills --skill react-native-patternsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 199 |
|---|---|
| repo stars | ★ 655 |
| Last updated | August 2, 2026 |
| Repository | spencerpauly/awesome-cursor-skills ↗ |
What it does
Helps with frontend development tasks.
Files
React Native Patterns
Build production-quality mobile apps with React Native and Expo.
Project Setup
Expo (recommended for most projects):
npx create-expo-app@latest my-app
cd my-app
npx expo startBare React Native (when you need full native control):
npx @react-native-community/cli init MyAppUse Expo unless you need a custom native module that Expo doesn't support.
Navigation
Use expo-router (file-based routing) or @react-navigation/native:
app/
├── _layout.tsx # Root layout (tabs, stack, drawer)
├── index.tsx # Home screen
├── (tabs)/
│ ├── _layout.tsx # Tab navigator
│ ├── home.tsx
│ ├── profile.tsx
│ └── settings.tsx
└── [id].tsx # Dynamic routePlatform-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: 4 },
}),
});For larger differences, use platform-specific files:
Component.ios.tsxComponent.android.tsx
Styling
Use StyleSheet.create for performance (styles are sent to native once):
const styles = StyleSheet.create({
container: { flex: 1, padding: 16 },
title: { fontSize: 24, fontWeight: '700' },
});For a Tailwind-like experience, use nativewind:
<View className="flex-1 p-4">
<Text className="text-2xl font-bold">Hello</Text>
</View>Performance
FlatList over ScrollView for long lists:
<FlatList
data={items}
keyExtractor={(item) => item.id}
renderItem={({ item }) => <ItemRow item={item} />}
initialNumToRender={10}
maxToRenderPerBatch={5}
windowSize={5}
/>Memoize expensive components:
const ItemRow = React.memo(({ item }: { item: Item }) => (
<View><Text>{item.name}</Text></View>
));Avoid:
- Inline styles (creates new objects every render)
- Anonymous functions in
renderItem - Large images without caching (
expo-imagehandles this)
Common Libraries
| Need | Library |
|---|---|
| Navigation | expo-router or @react-navigation/native |
| State | zustand, jotai, or React context |
| Data fetching | @tanstack/react-query |
| Images | expo-image |
| Icons | @expo/vector-icons |
| Storage | expo-secure-store (sensitive), @react-native-async-storage/async-storage (general) |
| Animations | react-native-reanimated |
| Gestures | react-native-gesture-handler |
| Forms | react-hook-form + zod |
Tips
- Test on both iOS and Android from the start, not at the end
- Use
expo-dev-clientfor custom native modules with Expo - Handle safe areas with
react-native-safe-area-context - Always handle keyboard avoidance for forms (
KeyboardAvoidingView) - Use
expo-updatesfor OTA updates in production