React Native Best Practices
SkillFiles & storageReact Native development. Cross-platform code, native modules, performance. Use when building mobile apps.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the React Native Best Practices skill
What this skill tells your AI
The instructions your AI receives, as published by 2ssk/dot-files in .claude/skills/react-native-best-practices/SKILL.md and read by ahel’s review.
Cross-platform mobile development with React Native.
Core Principles
- Cross-platform first: 80%+ shared code
- Native when needed: Platform-specific modules
- Performance: Cold start < 1.5s, memory < 120MB
- Offline-first: Local data, sync later
Cross-Platform Code
// Platform.select for different implementations
import { Platform } from 'react-native';
const styles = Platform.select({
ios: { paddingTop: 48 },
android: { paddingTop: 24 },
});
Navigation
// React Navigation
import { NavigationContainer } from '@react-navigation/native';
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
</Stack.Navigator>
</NavigationContainer>
State Management
// Zustand for simple state
import { create } from 'zustand';
const useStore = create((set) => ({
count: 0,
increment: () => set((s) => ({ count: s.count + 1 })),
}));
Offline Storage
// WatermelonDB for offline-first
import { Database } from '@nozbe/watermelondb';
const database = new Database({
schema: appSchema,
modelClasses: [User, Post],
});
Native Modules
// TurboModule for New Architecture
import type { TurboModule } from 'react-native';
import { TurboModuleRegistry } from 'react-native';
export interface Spec extends TurboModule {
startActivity(options: string): Promise<void>;
}
export default TurboModuleRegistry.getEnforcing<Spec>('CameraModule');
Push Notifications
// @notifee/react-native
import messaging from '@react-native-firebase/messaging';
await messaging().requestPermission();
const token = await messaging().getToken();
Build Commands
# iOS
cd ios && pod install && cd ..
npm run build:ios
# Android
cd android && ./gradlew assembleRelease
Quality Gates
- 80%+ cross-platform code
- Cold start < 1.5s
- Memory baseline < 120MB
- Battery drain < 4%/hour
- 60+ FPS (120 for ProMotion)
- Crash rate < 0.1%
Signals
- GitHub stars
- 251
- Forks
- 12
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
react-native-best-practices- Source
- github.com/2ssk/dot-files