skills/react-native-architect/SKILL.md
React Native 0.76+ architect with New Architecture, Fabric renderer, TurboModules, and production navigation/state patterns. Activate on: React Native app, RN architecture, Fabric, TurboModules, React Navigation, Expo integration, RN performance, native modules. NOT for: web-only React (use frontend-architect), Expo-specific workflows (use expo-workflow-expert), Flutter (use flutter-bloc-state-manager).
npx skillsauth add curiositech/windags-skills react-native-architectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Expert in building production React Native applications with the New Architecture (Fabric + TurboModules), performant navigation, and scalable state management.
Is data persisted across app restarts?
├─ YES: Is it frequently accessed/updated?
│ ├─ YES: MMKV + Zustand (persistent store)
│ └─ NO: AsyncStorage + Context
└─ NO: Is data from server?
├─ YES: TanStack Query + optimistic updates
└─ NO: Local component complexity?
├─ Simple: useState/useReducer
├─ Cross-component: Zustand
└─ Atomic updates: Jotai
Performance requirement?
├─ 60fps critical (UI interactions, gestures)
│ └─ React Native Reanimated 3 (UI thread worklets)
├─ Layout transitions only
│ └─ Fabric's LayoutAnimation API
└─ Simple state changes
└─ Animated API or CSS transitions
Need native functionality?
├─ Existing in community: Use @react-native-community/* package
├─ Simple data access: TurboModule with Codegen spec
├─ Complex native UI: Fabric native component
└─ Heavy computation: JSI module with C++ bridge
App complexity?
├─ Single stack: Stack Navigator
├─ Tab + Stack: Nested navigators with typed routes
├─ Drawer + Tabs: Bottom Tabs inside Drawer
└─ Complex routing: Expo Router with file-based routing
Detection: Unable to resolve module, ViewManager not found, or native crashes
Diagnosis: New Architecture compatibility issues
Fix:
react-native.config.js for New Architecture flagcd ios && pod install --repo-updatenpx react-native clean && cd ios && xcodebuild cleanDetection: Memory profiler shows steady climb, app killed by OS Diagnosis: Bridge reference leaks between JS and native Fix:
Detection: Performance monitor shows JS thread >16ms, dropped frames Diagnosis: Animations running on JS thread instead of UI thread Fix:
useAnimatedStylerunOnUI() for expensive calculationsDetection: Time to Interactive profiling, user complaints Diagnosis: Bundle size or initialization bottlenecks Fix:
HermesInternal existsReact.lazy() with Suspensereact-native-performanceDetection: Users return to wrong screen, navigation stack corrupted Diagnosis: Missing navigation state persistence Fix:
NavigationContainer state persistencegetStateFromPath/getPathFromState for URL syncScenario: Displaying 10MB product catalog with images, filtering, and real-time updates.
Decision Process:
Data Transfer: 10MB JSON over old bridge = 3-5s blocking
State Strategy:
// TurboModule for efficient data transfer
const productData = await ProductCatalog.getChunkedData(chunkSize: 1000);
// Virtualized rendering
<FlashList
data={products}
estimatedItemSize={120}
renderItem={({ item }) => <ProductCard product={item} />}
onEndReached={() => fetchNextPage()}
/>
Performance Trade-offs:
What novice misses:
Expert optimization:
newArchEnabled: true in config)global.HermesInternal exists)Web-only React development → Use frontend-architect instead
Expo managed workflow specifics → Use expo-workflow-expert instead
Cross-platform mobile strategy → Use flutter-bloc-state-manager for Flutter
React Native <0.70 → Use legacy React Native skills
data-ai
license: Apache-2.0 NOT for unrelated tasks outside this domain.
development
Use when designing caching strategies (cache-aside, write-through, write-behind), implementing distributed locks, building rate limiters, leaderboards, real-time streams (XADD/consumer groups), pub/sub, or tuning eviction policies. Triggers: thundering-herd on cache miss, dogpile on key expiry, Redlock vs SET-NX-PX choice, sliding-window rate limiter, hot-key on a single cluster slot, big-key blowup, MULTI/EXEC across slots, KEYS in production. NOT for Redis Cluster operations/admin (different domain), embedded KV (SQLite, leveldb), in-process LRU caches, or Memcached.
tools
Drawing the `'use client'` boundary correctly in React Server Components apps (Next.js App Router, RSC frameworks) — leaf-pushing, slot composition, serialization rules, and environment poisoning prevention. Grounded in react.dev and Next.js 16 docs.
development
Use when designing rate limiting for an API, choosing between token bucket / sliding window / leaky bucket / fixed window, implementing it in Redis, deciding edge (Cloudflare/Upstash) vs origin enforcement, sizing per-user vs per-IP vs per-endpoint quotas, returning the right 429 response with Retry-After, or fixing the boundary-burst bug in fixed-window limiters. Triggers: 429 too many requests, INCR + EXPIRE, ZADD + ZREMRANGEBYSCORE + ZCARD, X-RateLimit-Remaining header, Cloudflare WAF rate limiting rules, Upstash @upstash/ratelimit, leaky bucket shaping vs policing, distributed rate limiter consistency. NOT for DDoS mitigation specifically (different scale), CAPTCHA / bot management, full WAF design, or per-user quota billing.