skills/react-native-skills/README.md
A structured repository for creating and maintaining React Native Best Practices optimized for agents and LLMs.
rules/ - Individual rule files (one per rule)
_sections.md - Section metadata (titles, impacts, descriptions)_template.md - Template for creating new rulesarea-description.md - Individual rule filesmetadata.json - Document metadata (version, organization, abstract)AGENTS.md - Compiled output (generated)rendering-text-in-text-component.md - Wrap strings in Text componentsrendering-no-falsy-and.md - Avoid falsy && operator in JSXlist-performance-virtualize.md - Use virtualized lists (LegendList,
FlashList)list-performance-function-references.md - Keep stable object referenceslist-performance-callbacks.md - Hoist callbacks to list rootlist-performance-inline-objects.md - Avoid inline objects in renderItemlist-performance-item-memo.md - Pass primitives for memoizationlist-performance-item-expensive.md - Keep list items lightweightlist-performance-images.md - Use compressed images in listslist-performance-item-types.md - Use item types for heterogeneous listsanimation-gpu-properties.md - Animate transform/opacity instead of layoutanimation-gesture-detector-press.md - Use GestureDetector for press
animationsanimation-derived-value.md - Prefer useDerivedValue over useAnimatedReactionscroll-position-no-state.md - Never track scroll in useStatenavigation-native-navigators.md - Use native stack and native tabsreact-state-dispatcher.md - Use functional setState updatesreact-state-fallback.md - State should represent user intent onlyreact-state-minimize.md - Minimize state variables, derive valuesstate-ground-truth.md - State must represent ground truthreact-compiler-destructure-functions.md - Destructure functions earlyreact-compiler-reanimated-shared-values.md - Use .get()/.set() for shared
valuesui-expo-image.md - Use expo-image for optimized imagesui-image-gallery.md - Use Galeria for lightbox/galleriesui-menus.md - Native dropdown and context menus with Zeegoui-native-modals.md - Use native Modal with formSheetui-pressable.md - Use Pressable instead of TouchableOpacityui-measure-views.md - Measuring view dimensionsui-safe-area-scroll.md - Use contentInsetAdjustmentBehaviorui-scrollview-content-inset.md - Use contentInset for dynamic spacingui-styling.md - Modern styling patterns (gap, boxShadow, gradients)design-system-compound-components.md - Use compound componentsmonorepo-native-deps-in-app.md - Install native deps in app directorymonorepo-single-dependency-versions.md - Single dependency versionsimports-design-system-folder.md - Import from design system folderjs-hoist-intl.md - Hoist Intl formatter creationfonts-config-plugin.md - Load fonts natively at build timerules/_template.md to rules/area-description.mdrendering- for Core Renderinglist-performance- for List Performanceanimation- for Animationscroll- for Scroll Performancenavigation- for Navigationreact-state- for React Statestate- for State Architecturereact-compiler- for React Compilerui- for User Interfacedesign-system- for Design Systemmonorepo- for Monorepoimports- for Third-Party Dependenciesjs- for JavaScriptfonts- for FontsEach rule file should follow this structure:
---
title: Rule Title Here
impact: MEDIUM
impactDescription: Optional description
tags: tag1, tag2, tag3
---
## Rule Title Here
Brief explanation of the rule and why it matters.
**Incorrect (description of what's wrong):**
```tsx
// Bad code example
```
Correct (description of what's right):
// Good code example
Reference: Link
## File Naming Convention
- Files starting with `_` are special (excluded from build)
- Rule files: `area-description.md` (e.g., `animation-gpu-properties.md`)
- Section is automatically inferred from filename prefix
- Rules are sorted alphabetically by title within each section
## Impact Levels
- `CRITICAL` - Highest priority, causes crashes or broken UI
- `HIGH` - Significant performance improvements
- `MEDIUM` - Moderate performance improvements
- `LOW` - Incremental improvements