PluginBench
Skill
Pass
Audit score 90

react-native-design

wshobson/agents

Master React Native styling, navigation, and Reanimated animations for cross-platform mobile apps.

What is react-native-design?

This skill teaches React Native styling patterns, React Navigation 6+, and Reanimated 3 for building performant cross-platform mobile applications. Use it when building React Native apps, implementing navigation, creating animations, or optimizing mobile performance.

  • Style components with StyleSheet and styled-components for performance
  • Implement navigation patterns with React Navigation 6+
  • Create 60fps animations with Reanimated 3 on the UI thread
  • Build responsive layouts for different screen sizes and safe areas
  • Implement platform-specific designs for iOS and Android
  • Handle gesture-driven interactions with Gesture Handler

How to install react-native-design

npx skills add https://github.com/wshobson/agents --skill react-native-design
Prerequisites
  • React Native project setup
  • Node.js and npm/yarn
  • Familiarity with React hooks and TypeScript recommended
Claude Code
Cursor
Windsurf
Cline

How to use react-native-design

  1. 1.Install the skill using the provided command
  2. 2.Review the Quick Start Component example for animation patterns
  3. 3.Apply StyleSheet.create for all component styles to avoid inline styles
  4. 4.Use React.memo and useCallback to memoize components and prevent rerenders
  5. 5.Implement navigation with React Navigation ParamList types
  6. 6.Use Reanimated worklets with runOnUI for animations on the UI thread
  7. 7.Test on real devices to verify performance matches simulator

Use cases

Good for
  • Building cross-platform mobile apps with React Native
  • Implementing tab, stack, and drawer navigation patterns
  • Creating smooth press animations and gesture interactions
  • Styling responsive card components and list layouts
  • Handling safe areas on notched devices and different screen sizes
Who it's for
  • React Native developers
  • Mobile app engineers
  • Cross-platform development teams
  • Developers building iOS/Android apps with JavaScript

react-native-design FAQ

When should I use Reanimated instead of React Native Animated?

Use Reanimated 3 for complex, performant animations that run on the UI thread at 60fps. It's better for gesture-driven interactions and smooth transitions.

How do I handle navigation type safety?

Define ParamList types for all navigators and use TypeScript to ensure type safety across navigation params and screens.

Why are my animations janky?

Move animations to the UI thread using Reanimated worklets with runOnUI. Avoid animations on the JavaScript thread and test on real devices.

What's the best way to handle long lists?

Always use FlatList instead of ScrollView with map(). FlatList virtualizes items for better performance with large datasets.

How do I handle safe areas and notches?

Use SafeAreaView or the useSafeAreaInsets hook to handle notched devices and different screen layouts across iOS and Android.

Full instructions (SKILL.md)

Source of truth, from wshobson/agents.


name: react-native-design description: 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.

React Native Design

Master React Native styling patterns, React Navigation, and Reanimated 3 to build performant, cross-platform mobile applications with native-quality user experiences.

When to Use This Skill

  • Building cross-platform mobile apps with React Native
  • Implementing navigation with React Navigation 6+
  • Creating performant animations with Reanimated 3
  • Styling components with StyleSheet and styled-components
  • Building responsive layouts for different screen sizes
  • Implementing platform-specific designs (iOS/Android)
  • Creating gesture-driven interactions with Gesture Handler
  • Optimizing React Native performance

Detailed section: Core Concepts

Originally a 6471-byte section in this SKILL.md. Moved to references/details.md to fit Codex's 8 KB skill body cap.

Quick Start Component

import React from 'react';
import {
  View,
  Text,
  StyleSheet,
  Pressable,
  Image,
} from 'react-native';
import Animated, {
  useSharedValue,
  useAnimatedStyle,
  withSpring,
} from 'react-native-reanimated';

interface ItemCardProps {
  title: string;
  subtitle: string;
  imageUrl: string;
  onPress: () => void;
}

const AnimatedPressable = Animated.createAnimatedComponent(Pressable);

export function ItemCard({ title, subtitle, imageUrl, onPress }: ItemCardProps) {
  const scale = useSharedValue(1);

  const animatedStyle = useAnimatedStyle(() => ({
    transform: [{ scale: scale.value }],
  }));

  return (
    <AnimatedPressable
      style={[styles.card, animatedStyle]}
      onPress={onPress}
      onPressIn={() => { scale.value = withSpring(0.97); }}
      onPressOut={() => { scale.value = withSpring(1); }}
    >
      <Image source={{ uri: imageUrl }} style={styles.image} />
      <View style={styles.content}>
        <Text style={styles.title} numberOfLines={1}>
          {title}
        </Text>
        <Text style={styles.subtitle} numberOfLines={2}>
          {subtitle}
        </Text>
      </View>
    </AnimatedPressable>
  );
}

const styles = StyleSheet.create({
  card: {
    backgroundColor: '#ffffff',
    borderRadius: 16,
    overflow: 'hidden',
    shadowColor: '#000',
    shadowOffset: { width: 0, height: 2 },
    shadowOpacity: 0.1,
    shadowRadius: 8,
    elevation: 4,
  },
  image: {
    width: '100%',
    height: 160,
    backgroundColor: '#f3f4f6',
  },
  content: {
    padding: 16,
    gap: 4,
  },
  title: {
    fontSize: 18,
    fontWeight: '600',
    color: '#1f2937',
  },
  subtitle: {
    fontSize: 14,
    color: '#6b7280',
    lineHeight: 20,
  },
});

Best Practices

  1. Use TypeScript: Define navigation and prop types for type safety
  2. Memoize Components: Use React.memo and useCallback to prevent unnecessary rerenders
  3. Run Animations on UI Thread: Use Reanimated worklets for 60fps animations
  4. Avoid Inline Styles: Use StyleSheet.create for performance
  5. Handle Safe Areas: Use SafeAreaView or useSafeAreaInsets
  6. Test on Real Devices: Simulator/emulator performance differs from real devices
  7. Use FlatList for Lists: Never use ScrollView with map for long lists
  8. Platform-Specific Code: Use Platform.select for iOS/Android differences

Common Issues

  • Gesture Conflicts: Wrap gestures with GestureDetector and use simultaneousHandlers
  • Navigation Type Errors: Define ParamList types for all navigators
  • Animation Jank: Move animations to UI thread with runOnUI worklets
  • Memory Leaks: Cancel animations and cleanup in useEffect
  • Font Loading: Use expo-font or react-native-asset for custom fonts
  • Safe Area Issues: Test on notched devices (iPhone, Android with cutouts)