react-native

jezweb/claude-skills · updated May 30, 2026

MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.

$npx skills add https://github.com/jezweb/claude-skills --skill react-native
0 commentsdiscussion
summary

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

skill.md

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.

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

FlatList Checklist

Every FlatList should have:

<FlatList
  data={items}
  keyExtractor={(item) => item.id}
  renderItem={renderItem}           // Memoised component
  getItemLayout={getItemLayout}     // If items are fixed height
  initialNumToRender={10}           // Don't render 100 items on mount
  maxToRenderPerBatch={10}          // Batch size for off-screen rendering
  windowSize={5}                    // How many screens to keep in memory
  removeClippedSubviews={true}      // Unmount off-screen items (Android)
/>

2. Animations (HIGH)

Native animations run on the UI thread. JS animations block the JS thread and cause jank.

Pattern Problem Fix
Animated API for complex animations Animated runs on JS thread, blocks interactions Use react-native-reanimated — runs on UI thread
Layout animation Item appears/disappears with no transition LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut)
Shared element transitions Navigate between screens, element teleports react-native-reanimated shared transitions or expo-router shared elements
Gesture + animation Drag/swipe feels laggy react-native-gesture-handler + reanimated worklets — all on UI thread
Measuring layout onLayout fires too late, causes flash Use useAnimatedStyle with shared values for instant response

Reanimated Basics

import Animated, { useSharedValue, useAnimatedStyle, withSpring } from 'react-native-reanimated';

function AnimatedBox() {
  const offset = useSharedValue(0);
  const style = useAnimatedStyle(() => ({
    transform: [{ translateX: withSpring(offset.value) }],
  }));

  return (
    <GestureDetector gesture={panGesture}>
      <Animated.View style={[styles.box, style]} />
    </GestureDetector>
  );
}

3. Navigation (HIGH)

Pattern Problem Fix
Expo Router File-based routing (like Next.js) for React Native app/ directory with _layout.tsx files. Preferred for new Expo projects.
Heavy screens on stack Every screen stays mounted in the stack Use unmountOnBlur: true for screens that don't need to persist
Deep linking App doesn't respond to URLs Expo Router handles this automatically. For bare RN: Linking API config
Tab badge updates Badge count doesn't update when tab is focused Use useIsFocused() or refetch on focus: useFocusEffect(useCallback(...))
Navigation state persistence App loses position on background/kill onStateChange + initialState with AsyncStorage

Expo Router Structure

app/
├── _layout.tsx          # Root layout (tab navigator)
├── index.tsx            # Home tab
├── (tabs)/
│   ├── _layout.tsx      # Tab bar config
│   ├── home.tsx
│   ├── search.tsx
│   └── profile.tsx
├── [id].tsx             # Dynamic route
└── modal.tsx            # Modal route

4. UI Patterns (HIGH)

Pattern Problem Fix
Safe area Content under notch or home indicator <SafeAreaView> or useSafeAreaInsets() from react-native-safe-area-context
Keyboard avoidance Form fields hidden behind keyboard <KeyboardAvoidingView behavior={Platform.OS === 'ios' ? 'padding' : 'height'}>
Platform-specific code iOS and Android need different behaviour Platform.select({ ios: ..., android: ... }) or .ios.tsx / .android.tsx files
Status bar Status bar overlaps content or wrong colour <StatusBar style="auto" /> from expo-status-bar in root layout
Touch targets Buttons too small to tap Minimum 44x44pt. Use hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }}
Haptic feedback Taps feel dead expo-hapticsHaptics.impactAsync(Haptics.ImpactFeedbackStyle.Light) on important actions

5. Images and Media (MEDIUM)

Pattern Problem Fix
Image component <Image> from react-native is basic Use expo-image — caching, placeholder, transition, blurhash
Remote images without dimensions Layout shift when image loads Always specify width and height, or use aspectRatio
Large images OOM crashes on Android Resize server-side or use expo-image which handles memory
SVG SVG support isn't native react-native-svg + react-native-svg-transformer for SVG imports
Video Video playback expo-av or expo-video (newer API)

6. State and Data (MEDIUM)

Pattern Problem Fix
AsyncStorage for complex data JSON parse/stringify on every read Use MMKV (react-native-mmkv) — 30x faster than AsyncStorage
Global state Redux/MobX boilerplate for simple state Zustand — minimal, works great with React Native
Server state Manual fetch + loading + error + cache TanStack Query — same as web, works in React Native
Offline first App unusable without network TanStack Query persistQueryClient + MMKV, or WatermelonDB for complex offline
Deep state updates Spread operator hell for nested objects Immer via Zustand: set(produce(state => { state.user.name = 'new' }))

7. Expo Workflow (MEDIUM)

Pattern When How
Development build Need native modules npx expo run:ios or eas build --profile development
Expo Go Quick prototyping, no native modules npx expo start — scan QR code
EAS Build CI/CD, app store builds eas build --platform ios --profile production
EAS Update Hot fix without app store review eas update --branch production --message "Fix bug"
Config plugins Modify native config without ejecting app.config.ts with expo-build-properties or custom config plugin
Environment variables Different configs per build eas.json build profiles + expo-constants

New Project Setup

npx create-expo-app my-app --template tabs
cd my-app
npx expo install expo-image react-native-reanimated react-native-gesture-handler react-native-safe-area-context

8. Testing (LOW-MEDIUM)

Tool For Setup
Jest Unit tests, hook tests Included with Expo by default
React Native Testing Library Component tests @testing-library/react-native
Detox E2E tests on real devices/simulators detox — Wix's testing framework
Maestro E2E with YAML flows maestro test flow.yaml — simpler than Detox

Common Gotchas

Gotcha Fix
Metro bundler cache npx expo start --clear
Pod install issues (iOS) cd ios && pod install --repo-update
Reanimated not working Must be first import: import 'react-native-reanimated' in root
Expo SDK upgrade npx expo install --fix after updating SDK version
Android build fails Check gradle.properties for memory: org.gradle.jvmargs=-Xmx4g
iOS simulator slow Use physical device for performance testing — simulator doesn't reflect real perf
how to use react-native

How to use react-native on Cursor

AI-first code editor with Composer

1

Prerequisites

Before installing skills in Cursor, ensure your development environment meets these requirements:

  • Cursor installed and configured on your development machine
  • Node.js version 16.0+ with npm package manager (verify with node --version)
  • Active project directory or workspace where you want to add react-native
2

Execute installation command

Execute the skills CLI command in your project's root directory to begin installation:

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

The skills CLI fetches react-native from GitHub repository jezweb/claude-skills and configures it for Cursor.

3

Select Cursor when prompted

The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:

◆ Which agents do you want to install to?
│ ── Universal (.agents/skills) ── always included ────
│ • Amp
│ • Antigravity
│ • Cline
│ • Codex
│ ●Cursor(selected)
│ • Cursor
│ • Windsurf
4

Verify installation

Confirm successful installation by checking the skill directory location:

.cursor/skills/react-native

Reload or restart Cursor to activate react-native. Access the skill through slash commands (e.g., /react-native) or your agent's skill management interface.

Security & Verification Notice

We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.

Skills execute code in your development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.

List & Monetize Your Skill

Submit your Claude Code skill and start earning

GET_STARTED →

Use Cases

Task Automation & Efficiency

Automate repetitive workflows and reduce manual effort

Example

Generate reports, summarize documents, draft communications

Save 3-5 hours per week on routine tasks

Knowledge Enhancement

Learn new skills, understand complex topics, get expert guidance

Example

Explain concepts, provide examples, suggest learning resources

Accelerate learning and skill development by 2x

Quality Improvement

Enhance output quality through reviews, suggestions, and refinements

Example

Review drafts, suggest improvements, catch errors

Improve work quality by 30-40% with less effort

Implementation Guide

Prerequisites

  • Claude Desktop or compatible AI client with skill support
  • Clear understanding of task or problem to solve
  • Willingness to iterate and refine outputs

Time Estimate

15-45 minutes depending on use case complexity

Installation Steps

  1. 1.Install skill using provided installation command
  2. 2.Test with simple use case relevant to your work
  3. 3.Evaluate output quality and relevance
  4. 4.Iterate on prompts to improve results
  5. 5.Integrate into regular workflow if valuable

Common Pitfalls

  • Expecting perfect results without iteration
  • Not providing enough context in prompts
  • Using skill for tasks outside its intended scope
  • Accepting outputs without review and validation

Best Practices

✓ Do

  • +Start with clear, specific prompts
  • +Provide relevant context and constraints
  • +Review and refine all outputs before using
  • +Iterate to improve output quality
  • +Document successful prompt patterns

✗ Don't

  • Don't use without understanding skill limitations
  • Don't skip validation of outputs
  • Don't share sensitive information in prompts
  • Don't expect skill to replace human judgment

💡 Pro Tips

  • Be specific about desired format and style
  • Ask for multiple options to choose from
  • Request explanations to understand reasoning
  • Combine AI efficiency with human expertise

When to Use This

✓ Use When

Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.

✗ Avoid When

Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.

Learning Path

  1. 1Familiarize yourself with skill capabilities and limitations
  2. 2Start with low-risk, non-critical tasks
  3. 3Progress to more complex and valuable use cases
  4. 4Build expertise through regular use and experimentation

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.754 reviews
  • Ganesh Mohane· Dec 28, 2024

    Registry listing for react-native matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Neel Jain· Dec 20, 2024

    Useful defaults in react-native — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Emma Wang· Dec 16, 2024

    react-native has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • Aditi Sethi· Dec 12, 2024

    We added react-native from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Shikha Mishra· Dec 4, 2024

    We added react-native from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Yash Thakker· Nov 23, 2024

    react-native fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.

  • Neel Singh· Nov 11, 2024

    I recommend react-native for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Zara Kapoor· Nov 7, 2024

    react-native reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Aditi Dixit· Nov 3, 2024

    react-native fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.

  • Aditi Reddy· Oct 26, 2024

    I recommend react-native for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

showing 1-10 of 54

1 / 6