react-native-design

Стилизация React Native, навигация и анимации на Reanimated для кроссплатформенной мобильной разработки. Подключается при создании приложений на React Native, навигационных паттернов и быстрых анимаций.

Установка

$npx skills add https://github.com/wshobson/agents/tree/156b7a5e7a8b93642628a339ee4039c925b34c7f/plugins/ui-design/skills/react-native-design

Ставит скилл в текущий проект - CLI спросит, для каких агентов. С флагом -g - в домашнюю папку, для всех проектов. Другие способы

Описание автора

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)

Ещё из wshobson/agents

Все 184
  1. accessibility-complianceв один кликдоступные интерфейсы по WCAG 2.2
  2. ai-debt-detectorв один кликаудит техдолга после кода от ИИ
  3. airflow-dag-patternsв один кликпайплайны на Apache Airflow
  4. angular-migrationв один кликмиграция с AngularJS на Angular
  5. anti-reversing-techniquesв один кликанти-реверс и защита от отладки
  6. api-design-principlesв один кликпроектирование REST и GraphQL API
  7. architecture-decision-recordsв один кликзаписи архитектурных решений (ADR)
  8. architecture-patternsв один кликпаттерны архитектуры бэкенда: Clean и DDD

Похожие скиллы

Мобильные приложения
  1. AvdLee/swiftui-expert-skillAvdLee/SwiftUI-Agent-Skillэкспертные советы по SwiftUI
  2. android-emulator-qaopenai/pluginsпроверка Android-сценариев в эмуляторе
  3. Eronred/aso-skillsEronred/aso-skillsнабор скиллов для ASO и мобильного роста
  4. truongduy2611/app-store-preflight-skillstruongduy2611/app-store-preflight-skillsпроверка iOS-приложения до App Store
  5. conorluddy/ios-simulator-skillconorluddy/ios-simulator-skillуправление iOS Simulator в Claude Code
  6. rorkai/app-store-connect-cli-skillsrorkai/app-store-connect-cli-skillsавтоматизация App Store через asc CLI
  7. ehmo/platform-design-skillsehmo/platform-design-skillsдизайн по Apple HIG, Material 3, WCAG
  8. testmu-ai/appium-skillLambdaTest/agent-skillsавтотесты мобильных приложений на Appium