React Native Development
Deep integration with React Native ecosystem for cross-platform mobile development
它会碰到什么
扫了多少2 个文本文件,11 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0
这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。
技能内容
React Native Development Skill
Overview
This skill provides deep integration with the React Native ecosystem for cross-platform mobile development. It enables execution of React Native CLI commands, component generation, build optimization, and comprehensive debugging capabilities.
Allowed Tools
bash- Execute React Native CLI, Expo CLI, and npm/yarn commandsread- Analyze React Native project files, configurations, and componentswrite- Generate and modify React Native components and configurationsedit- Update existing React Native code and configurationsglob- Search for React Native components and configuration filesgrep- Search for patterns in React Native codebase
Capabilities
Core Development
- React Native CLI Operations
- Initialize new React Native projects
- Run Metro bundler with custom configurations
- Execute platform-specific builds (iOS/Android)
- Link native dependencies
- Generate native code bridges
- Expo CLI Operations
- Create and manage Expo projects
- Configure EAS Build and EAS Submit
- Manage Expo config plugins
- Handle over-the-air updates
- Prebuild for bare workflow ejection
- Component Generation
- Generate TypeScript-based functional components
- Create custom hooks with proper typing
- Implement React Navigation screens and navigators
- Build reusable UI component libraries
- Generate Storybook stories for components
State Management
- Redux Toolkit Integration
- Generate Redux slices with createSlice
- Configure RTK Query for API caching
- Implement async thunks with proper typing
- Set up Redux DevTools integration
- Create selectors with createSelector
- Zustand/Jotai/Recoil
- Configure lightweight state stores
- Implement atomic state patterns
- Set up persistence middleware
- Create derived state computations
Navigation
- React Navigation
- Configure Stack, Tab, and Drawer navigators
- Implement type-safe navigation with TypeScript
- Set up deep linking configurations
- Handle authentication flows
- Implement nested navigation patterns
Performance
- Performance Optimization
- Configure Hermes JavaScript engine
- Implement FlatList/FlashList optimizations
- Set up React Native Performance monitoring
- Analyze and fix re-render issues
- Implement lazy loading and code splitting
- Native Module Integration
- Configure TurboModules and JSI
- Bridge native code (Objective-C/Swift/Java/Kotlin)
- Set up Codegen for native modules
- Debug native crashes and issues
Testing
- Testing Configuration
- Configure Jest with React Native preset
- Set up React Native Testing Library
- Implement component snapshot testing
- Configure Detox for E2E testing
- Mock native modules effectively
Debugging
- Debug Tools
- Configure Flipper plugins
- Set up Reactotron integration
- Use React DevTools for component inspection
- Debug network requests
- Profile JavaScript performance
Target Processes
This skill integrates with the following processes:
react-native-app-setup.js- Project initialization and configurationcross-platform-ui-library.js- Shared component developmentmobile-testing-strategy.js- Test implementation and coveragemobile-performance-optimization.js- Performance tuning
Dependencies
Required
- Node.js 18+
- npm or yarn package manager
- React Native CLI (
npx react-native) - Watchman (macOS)
Optional
- Expo CLI (
npx expo) - Android Studio with Android SDK
- Xcode (macOS only)
- Flipper
- Reactotron
Configuration
Project Structure
project-root/
├── src/
│ ├── components/
│ ├── screens/
│ ├── navigation/
│ ├── store/
│ ├── hooks/
│ ├── services/
│ ├── utils/
│ └── types/
├── __tests__/
├── android/
├── ios/
├── metro.config.js
├── babel.config.js
├── tsconfig.json
└── package.json
Metro Configuration
// metro.config.js
const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
const config = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: true,
},
}),
},
};
module.exports = mergeConfig(getDefaultConfig(__dirname), config);
Usage Examples
Initialize Project
# Create new React Native project
npx react-native init MyApp --template react-native-template-typescript
# Or with Expo
npx create-expo-app MyApp --template expo-template-blank-typescript
Generate Component
// src/components/Button/Button.tsx
import React from 'react';
import { TouchableOpacity, Text, StyleSheet, ViewStyle, TextStyle } from 'react-native';
interface ButtonProps {
title: string;
onPress: () => void;
variant?: 'primary' | 'secondary';
disabled?: boolean;
}
export const Button: React.FC<ButtonProps> = ({
title,
onPress,
variant = 'primary',
disabled = false,
}) => {
return (
<TouchableOpacity
style={[styles.button, styles[variant], disabled && styles.disabled]}
onPress={onPress}
disabled={disabled}
activeOpacity={0.8}
>
<Text style={[styles.text, styles[`${variant}Text`]]}>{title}</Text>
</TouchableOpacity>
);
};
const styles = StyleSheet.create({
button: {
paddingVertical: 12,
paddingHorizontal: 24,
borderRadius: 8,
alignItems: 'center',
},
primary: {
backgroundColor: '#007AFF',
},
secondary: {
backgroundColor: 'transparent',
borderWidth: 1,
borderColor: '#007AFF',
},
disabled: {
opacity: 0.5,
},
text: {
fontSize: 16,
fontWeight: '600',
},
primaryText: {
color: '#FFFFFF',
},
secondaryText: {
color: '#007AFF',
},
});
Configure Navigation
// src/navigation/RootNavigator.tsx
import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { HomeScreen } from '../screens/HomeScreen';
import { DetailsScreen } from '../screens/DetailsScreen';
export type RootStackParamList = {
Home: undefined;
Details: { id: string };
};
const Stack = createNativeStackNavigator<RootStackParamList>();
export const RootNavigator: React.FC = () => {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home">
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
);
};
Configure Redux Store
// src/store/store.ts
import { configureStore } from '@reduxjs/toolkit';
import { setupListeners } from '@reduxjs/toolkit/query';
import { api } from './api';
import userReducer from './slices/userSlice';
export const store = configureStore({
reducer: {
user: userReducer,
[api.reducerPath]: api.reducer,
},
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware().concat(api.middleware),
});
setupListeners(store.dispatch);
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;
Quality Gates
Code Quality
- TypeScript strict mode enabled
- ESLint with React Native config
- Prettier for code formatting
- No any types in production code
Performance Benchmarks
- App launch time < 2 seconds
- FPS maintained at 60fps during scrolling
- Memory usage within platform limits
- Bundle size optimized with tree shaking
Test Coverage
- Unit test coverage > 80%
- Component test coverage > 70%
- E2E critical paths covered
Error Handling
Common Issues
- Metro bundler cache issues
npx react-native start --reset-cache
- iOS pod installation failures
cd ios && pod install --repo-update
- Android Gradle sync issues
cd android && ./gradlew clean
- Native module linking issues
npx react-native link
# Or for newer versions, use autolinking
Related Skills
flutter-dart- Alternative cross-platform frameworkmobile-testing- Comprehensive testing frameworksmobile-perf- Performance profiling and optimizationpush-notifications- Push notification implementation
Version History
- 1.0.0 - Initial release with core React Native capabilities
想直接用这个技能?
本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。
它属于哪个仓库
星标★ 1,796
本站分层T1
该仓技能数2115
原文件路径
library/specializations/mobile-development/skills/react-native-dev/SKILL.md