Provides best practices and coding standards for building performant React Native and Expo applications, focusing on list optimization, animations, and native module integration. It guides developers on using specific libraries like FlashList and Reanimated to ensure high mobile app performance.
Say it in your own words; the assistant finds this recipe by itself. Examples:
Use this skill when developing React Native or Expo components, specifically when optimizing list rendering performance or implementing complex animations. It is also appropriate when configuring native modules, handling platform-specific APIs, or structuring monorepo projects with native dependencies.
Comprehensive best practices for React Native and Expo applications. Contains rules across multiple categories covering performance, animations, UI patterns, and platform-specific optimizations.
Reference these guidelines when:
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | List Performance | CRITICAL | list-performance- |
| 2 | Animation | HIGH | animation- |
| 3 | Navigation | HIGH | navigation- |
| 4 | UI Patterns | HIGH | ui- |
| 5 | State Management | MEDIUM | react-state- |
| 6 | Rendering | MEDIUM | rendering- |
| 7 | Monorepo | MEDIUM | monorepo- |
| 8 | Configuration | LOW | fonts-, imports- |
list-performance-virtualize - Use FlashList for large listslist-performance-item-memo - Memoize list item componentslist-performance-callbacks - Stabilize callback referenceslist-performance-inline-objects - Avoid inline style objectslist-performance-function-references - Extract functions outside renderlist-performance-images - Optimize images in listslist-performance-item-expensive - Move expensive work outside itemslist-performance-item-types - Use item types for heterogeneous listsanimation-gpu-properties - Animate only transform and opacityanimation-derived-value - Use useDerivedValue for computed animationsanimation-gesture-detector-press - Use Gesture.Tap instead of Pressablenavigation-native-navigators - Use native stack and native tabs over JS navigatorsui-expo-image - Use expo-image for all imagesui-image-gallery - Use Galeria for image lightboxesui-pressable - Use Pressable over TouchableOpacityui-safe-area-scroll - Handle safe areas in ScrollViewsui-scrollview-content-inset - Use contentInset for headersui-menus - Use native context menusui-native-modals - Use native modals when possibleui-measure-views - Use onLayout, not measure()ui-styling - Use StyleSheet.create or Nativewindreact-state-minimize - Minimize state subscriptionsreact-state-dispatcher - Use dispatcher pattern for callbacksreact-state-fallback - Show fallback on first renderreact-compiler-destructure-functions - Destructure for React Compilerreact-compiler-reanimated-shared-values - Handle shared values with compilerrendering-text-in-text-component - Wrap text in Text componentsrendering-no-falsy-and - Avoid falsy && for conditional renderingmonorepo-native-deps-in-app - Keep native dependencies in app packagemonorepo-single-dependency-versions - Use single versions across packagesfonts-config-plugin - Use config plugins for custom fontsimports-design-system-folder - Organize design system importsjs-hoist-intl - Hoist Intl object creationRead individual rule files for detailed explanations and code examples:
rules/list-performance-virtualize.md
rules/animation-gpu-properties.md
Each rule file contains:
For the complete guide with all rules expanded: AGENTS.md
AGENTS.mdREADME.mdSKILL.mdmetadata.jsonrules/_sections.mdrules/_template.mdrules/animation-derived-value.mdrules/animation-gesture-detector-press.mdrules/animation-gpu-properties.mdrules/design-system-compound-components.mdrules/fonts-config-plugin.mdrules/imports-design-system-folder.mdrules/js-hoist-intl.mdrules/list-performance-callbacks.mdrules/list-performance-function-references.mdrules/list-performance-images.mdrules/list-performance-inline-objects.mdrules/list-performance-item-expensive.mdrules/list-performance-item-memo.mdrules/list-performance-item-types.mdrules/list-performance-virtualize.mdrules/monorepo-native-deps-in-app.mdrules/monorepo-single-dependency-versions.mdrules/navigation-native-navigators.mdrules/react-compiler-destructure-functions.mdrules/react-compiler-reanimated-shared-values.mdrules/react-state-dispatcher.mdrules/react-state-fallback.mdrules/react-state-minimize.mdrules/rendering-no-falsy-and.mdrules/rendering-text-in-text-component.mdrules/scroll-position-no-state.mdrules/state-ground-truth.mdrules/ui-expo-image.mdrules/ui-image-gallery.mdrules/ui-measure-views.mdrules/ui-menus.mdrules/ui-native-modals.mdrules/ui-pressable.mdrules/ui-safe-area-scroll.mdrules/ui-scrollview-content-inset.mdrules/ui-styling.mdVendored from vercel-labs/agent-skills, commit 063bee94c3f4, path skills/react-native-skills, licence MIT. The upstream licence file ships inside the skill.