Skills

React Native

React Native and Expo patterns for building performant mobile apps.

Install

npx skills add jezweb/claude-skills --skill react-native -g -a claude-code -y
Repository
jezweb/claude-skills1.1k
Category
Design
Updated
26d ago
License
MIT
Context cost
Mediumabout 2,218 tokens
Runs scripts
No, instructions only

What it does

React Native and Expo patterns for building performant mobile apps. Covers list performance, animations with Reanimated, navigation, UI patterns, state management, platform-specific code, and Expo workflows. Use when building or reviewing React Native code. Triggers: 'react native', 'expo', 'mobile app', 'react native performance', 'flatlist', 'reanimated', 'expo router', 'mobile development', 'ios app', 'android app'.

React Native Patterns

Performance and architecture patterns for React Native + Expo apps. Rules ranked by impact, fix CRITICAL before touching MEDIUM.

This is a starting point. The skill will grow as you build more mobile apps.

When to Apply

  • Building new React Native or Expo apps
  • Optimising list and scroll performance
  • Implementing animations
  • Reviewing mobile code for performance issues
  • Setting up a new Expo project

1. List Performance (CRITICAL)

Lists are the #1 performance issue in React Native. A janky scroll kills the entire app experience.

PatternProblemFix
ScrollView for data<ScrollView> renders all items at onceUse <FlatList> or <FlashList>, virtualised, only renders visible items
Missing keyExtractorFlatList without keyExtractor → unnecessary re-renderskeyExtractor={(item) => item.id}, stable unique key per item
Complex renderItemExpensive component in renderItem re-renders on every scrollWrap in React.memo, extract to separate component
Inline functions in renderItemrenderItem={({ item }) => <Row onPress={() => nav(item.id)} />}Extract handler: const handlePress = useCallback(...)
No getItemLayoutFlatList measures every item on scroll (expensive)Provide getItemLayout for fixed-height items: (data, index) => ({ length: 80, offset: 80 * index, index })
FlashListFlatList is good, FlashList is better for large lists@shopify/flash-list, drop-in replacement, recycling architecture
Large images in listsFull-res images decoded on main threadUse expo-image with placeholder + transition, specify dimensions

FlatList Checklist

Read the whole SKILL.md on GitHub

More in Design