React Native Best Practices

SkillFiles & storage

React Native development. Cross-platform code, native modules, performance. Use when building mobile apps.

Available today. Use it from your connected AI after setup.

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