All skills
vercel-labs avatar

/react-native-skills

@757ccb4 official
by Vercel Labsvercel-labs/agent-skills32k stars
2,784

React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.

  • 42 files
  • 155.3 KB
  • MIT
  • Updated 8 months ago
  • GitHub

Use this Skill: https://skilld.dev/gh/vercel-labs/agent-skills/react-native-skills

This session only. Nothing lands on disk.

README.md

≈1.3k tokens on demand. Your agent reads this file only when SKILL.md points to it.

React Native Guidelines

A structured repository for creating and maintaining React Native Best Practices optimized for agents and LLMs.

Structure

  • rules/ - Individual rule files (one per rule)
    • _sections.md - Section metadata (titles, impacts, descriptions)
    • _template.md - Template for creating new rules
    • area-description.md - Individual rule files
  • metadata.json - Document metadata (version, organization, abstract)
  • AGENTS.md - Compiled output (generated)

Rules

Core Rendering (CRITICAL)

  • rendering-text-in-text-component.md - Wrap strings in Text components
  • rendering-no-falsy-and.md - Avoid falsy && operator in JSX

List Performance (HIGH)

  • list-performance-virtualize.md - Use virtualized lists (LegendList, FlashList)
  • list-performance-function-references.md - Keep stable object references
  • list-performance-callbacks.md - Hoist callbacks to list root
  • list-performance-inline-objects.md - Avoid inline objects in renderItem
  • list-performance-item-memo.md - Pass primitives for memoization
  • list-performance-item-expensive.md - Keep list items lightweight
  • list-performance-images.md - Use compressed images in lists
  • list-performance-item-types.md - Use item types for heterogeneous lists

Animation (HIGH)

  • animation-gpu-properties.md - Animate transform/opacity instead of layout
  • animation-gesture-detector-press.md - Use GestureDetector for press animations
  • animation-derived-value.md - Prefer useDerivedValue over useAnimatedReaction

Scroll Performance (HIGH)

  • scroll-position-no-state.md - Never track scroll in useState

Navigation (HIGH)

  • navigation-native-navigators.md - Use native stack and native tabs

React State (MEDIUM)

  • react-state-dispatcher.md - Use functional setState updates
  • react-state-fallback.md - State should represent user intent only
  • react-state-minimize.md - Minimize state variables, derive values

State Architecture (MEDIUM)

  • state-ground-truth.md - State must represent ground truth

React Compiler (MEDIUM)

  • react-compiler-destructure-functions.md - Destructure functions early
  • react-compiler-reanimated-shared-values.md - Use .get()/.set() for shared values

User Interface (MEDIUM)

  • ui-expo-image.md - Use expo-image for optimized images
  • ui-image-gallery.md - Use Galeria for lightbox/galleries
  • ui-menus.md - Native dropdown and context menus with Zeego
  • ui-native-modals.md - Use native Modal with formSheet
  • ui-pressable.md - Use Pressable instead of TouchableOpacity
  • ui-measure-views.md - Measuring view dimensions
  • ui-safe-area-scroll.md - Use contentInsetAdjustmentBehavior
  • ui-scrollview-content-inset.md - Use contentInset for dynamic spacing
  • ui-styling.md - Modern styling patterns (gap, boxShadow, gradients)

Design System (MEDIUM)

  • design-system-compound-components.md - Use compound components

Monorepo (LOW)

  • monorepo-native-deps-in-app.md - Install native deps in app directory
  • monorepo-single-dependency-versions.md - Single dependency versions

Third-Party Dependencies (LOW)

  • imports-design-system-folder.md - Import from design system folder

JavaScript (LOW)

  • js-hoist-intl.md - Hoist Intl formatter creation

Fonts (LOW)

  • fonts-config-plugin.md - Load fonts natively at build time

Creating a New Rule

  1. Copy rules/_template.md to rules/area-description.md
  2. Choose the appropriate area prefix:
    • rendering- for Core Rendering
    • list-performance- for List Performance
    • animation- for Animation
    • scroll- for Scroll Performance
    • navigation- for Navigation
    • react-state- for React State
    • state- for State Architecture
    • react-compiler- for React Compiler
    • ui- for User Interface
    • design-system- for Design System
    • monorepo- for Monorepo
    • imports- for Third-Party Dependencies
    • js- for JavaScript
    • fonts- for Fonts
  3. Fill in the frontmatter and content
  4. Ensure you have clear examples with explanations

Rule File Structure

Each 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

Source: SKILL.md on GitHub

No third-party reports yet.

Signed by skilld at 757ccb4. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub last month.

Steadyupdated 8 months ago
metadata
{
  "author": "vercel",
  "version": "1.0.0"
}
  • Performance
  • react-native
  • expo
  • animations
  • list-virtualization
  • mobile
  • reanimated
  • native-modules
  • ui-patterns
  • monorepo

README badge

README badge for vercel-labs/agent-skills/react-native-skills

Provides React Native and Expo best practices organized by performance impact, covering list virtualization, animations with Reanimated, navigation patterns, and native module configuration. Use when optimizing list rendering, implementing GPU-accelerated animations, or structuring React Native projects with native dependencies.

Generated from the current SKILL.md.

Does this skill cover both React Native and Expo?
Yes. The skill provides best practices for React Native and Expo applications, including Expo-specific patterns like expo-image and config plugins.
What animation library does this skill assume?
The skill focuses on React Native Reanimated for animations, with rules like using useDerivedValue and animating only transform and opacity properties.
Does this cover list performance optimization?
Yes. List performance is the highest priority category, covering FlashList virtualization, memoization, callback stabilization, and image optimization in lists.
Will this skill help with monorepo setup?
Yes, but only for monorepos with native dependencies. The skill includes guidance on structuring packages and managing dependency versions across a monorepo.
Does this cover state management frameworks like Redux or Zustand?
No. The skill covers only general state subscription patterns and dispatcher patterns, not specific state management libraries.

Generated from the current SKILL.md. These answers refresh after source changes.