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- React Native project setup
- Node.js and npm/yarn
- Familiarity with React hooks and TypeScript recommended
How to use react-native-design
- 1.Install the skill using the provided command
- 2.Review the Quick Start Component example for animation patterns
- 3.Apply StyleSheet.create for all component styles to avoid inline styles
- 4.Use React.memo and useCallback to memoize components and prevent rerenders
- 5.Implement navigation with React Navigation ParamList types
- 6.Use Reanimated worklets with runOnUI for animations on the UI thread
- 7.Test on real devices to verify performance matches simulator
Use cases
- 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
- React Native developers
- Mobile app engineers
- Cross-platform development teams
- Developers building iOS/Android apps with JavaScript
react-native-design FAQ
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.
Define ParamList types for all navigators and use TypeScript to ensure type safety across navigation params and screens.
Move animations to the UI thread using Reanimated worklets with runOnUI. Avoid animations on the JavaScript thread and test on real devices.
Always use FlatList instead of ScrollView with map(). FlatList virtualizes items for better performance with large datasets.
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
- Use TypeScript: Define navigation and prop types for type safety
- Memoize Components: Use
React.memoanduseCallbackto prevent unnecessary rerenders - Run Animations on UI Thread: Use Reanimated worklets for 60fps animations
- Avoid Inline Styles: Use StyleSheet.create for performance
- Handle Safe Areas: Use
SafeAreaVieworuseSafeAreaInsets - Test on Real Devices: Simulator/emulator performance differs from real devices
- Use FlatList for Lists: Never use ScrollView with map for long lists
- Platform-Specific Code: Use Platform.select for iOS/Android differences
Common Issues
- Gesture Conflicts: Wrap gestures with
GestureDetectorand usesimultaneousHandlers - Navigation Type Errors: Define
ParamListtypes for all navigators - Animation Jank: Move animations to UI thread with
runOnUIworklets - Memory Leaks: Cancel animations and cleanup in useEffect
- Font Loading: Use
expo-fontorreact-native-assetfor custom fonts - Safe Area Issues: Test on notched devices (iPhone, Android with cutouts)
Related skills
More from wshobson/agents and the wider catalog.
tailwind-design-system
Build production-ready design systems with Tailwind CSS v4, design tokens, and component libraries.
typescript-advanced-types
Master TypeScript's advanced type system: generics, conditional types, mapped types, and utility types for type-safe applications.
nodejs-backend-patterns
Build production-ready Node.js backends with Express/Fastify, middleware patterns, auth, and database integration.
python-performance-optimization
Profile and optimize Python code using cProfile, memory profilers, and performance best practices.
brand-landingpage
Brand-first landing page designer with guided interviews and Stitch-powered iteration.
python-testing-patterns
Implement comprehensive testing strategies with pytest, fixtures, mocking, and test-driven development.