Tooluck logoTooluck
SKILL.md

react-native

Agent skill fromjezweb/claude-skills

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'.

How to install react-native

install react-native
# install the claude-skills pack with the skills CLI
npx skills add jezweb/claude-skills

# or add only this skill to Claude Code: copy the folder

plugins/frontend/skills/react-native/

# into

~/.claude/skills/react-native/ (all projects)

.claude/skills/react-native/ (one project)

plugins/frontend/skills/react-native/SKILL.md

MITFull file
1# React Native Patterns
2
3Performance and architecture patterns for React Native + Expo apps. Rules ranked by impact — fix CRITICAL before touching MEDIUM.
4
5This is a starting point. The skill will grow as you build more mobile apps.
6
7## When to Apply
8
9- Building new React Native or Expo apps
10- Optimising list and scroll performance
11- Implementing animations
12- Reviewing mobile code for performance issues
13- Setting up a new Expo project
14
15## 1. List Performance (CRITICAL)
16
17Lists are the #1 performance issue in React Native. A janky scroll kills the entire app experience.
18
19| Pattern | Problem | Fix |
20|---------|---------|-----|
21| **ScrollView for data** | `<ScrollView>` renders all items at once | Use `<FlatList>` or `<FlashList>` — virtualised, only renders visible items |
22| **Missing keyExtractor** | FlatList without `keyExtractor` → unnecessary re-renders | `keyExtractor={(item) => item.id}` — stable unique key per item |
23| **Complex renderItem** | Expensive component in renderItem re-renders on every scroll | Wrap in `React.memo`, extract to separate component |
24| **Inline functions in renderItem** | `renderItem={({ item }) => <Row onPress={() => nav(item.id)} />}` | Extract handler: `const handlePress = useCallback(...)` |
25| **No getItemLayout** | FlatList measures every item on scroll (expensive) | Provide `getItemLayout` for fixed-height items: `(data, index) => ({ length: 80, offset: 80 * index, index })` |
26…

Excerpt shown under the repository's MIT license.

More skills in claude-skills

Keep exploring

Similar skill repositories

thedotmack /

claude-mem
116k

Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More

CCCXGHGM+135 skills

Newsletter

Join the Community

Subscribe to our newsletter for the latest news and updates