React native
Complete React Native and Expo optimization guide combining Callstack profiling with Vercel code patterns. Covers FPS, TTI, bundle size, memory, lists, animations, state, UI, and React Compiler. Use for any React Native performance, debugging, or best practices task.From its SKILL.md
npx -y skills add gigs-slc/react-native-skills --skill react-nativeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
7.1 KB, as published. Nobody here has run it
React Native Complete Guide
The ultimate React Native optimization guide combining:
- Callstack - Profiling, measurement, and native optimization (27 references)
- Vercel - Code patterns, UI, and best practices (36 rules)
When to Apply
Reference these guidelines when:
- Debugging slow/janky UI or animations
- Optimizing list and scroll performance
- Investigating memory leaks (JS or native)
- Optimizing app startup time (TTI)
- Reducing bundle or app size
- Implementing animations with Reanimated
- Building UI with native components
- Working with React Compiler
- Structuring monorepo projects
Priority-Ordered Guidelines
| Priority | Category | Impact | Source |
|---|---|---|---|
| 1 | Core Rendering | CRITICAL | Vercel |
| 2 | List Performance | CRITICAL | Both |
| 3 | FPS & Re-renders | CRITICAL | Callstack |
| 4 | Bundle Size | CRITICAL | Callstack |
| 5 | Animation | HIGH | Both |
| 6 | Navigation | HIGH | Vercel |
| 7 | TTI Optimization | HIGH | Callstack |
| 8 | UI Patterns | HIGH | Vercel |
| 9 | Native Performance | HIGH | Callstack |
| 10 | State Management | MEDIUM | Vercel |
| 11 | React Compiler | MEDIUM | Both |
| 12 | Memory Management | MEDIUM | Callstack |
| 13 | Monorepo | MEDIUM | Vercel |
Quick Reference: Code Patterns (Vercel)
Core Rendering (CRITICAL)
rendering-no-falsy-and- Never use && with falsy values (crashes app)rendering-text-in-text-component- Wrap strings in Text components
List Performance (CRITICAL)
list-performance-virtualize- Use FlashList/LegendList for any listlist-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- Use compressed, appropriately-sized imageslist-performance-item-expensive- Move expensive work outside itemslist-performance-item-types- Use item types for heterogeneous lists
Animation (HIGH)
animation-gpu-properties- Animate only transform and opacityanimation-derived-value- Use useDerivedValue for computed animationsanimation-gesture-detector-press- Use Gesture.Tap for press animations
Navigation (HIGH)
navigation-native-navigators- Use native stack/tabs over JS navigators
UI Patterns (HIGH)
ui-expo-image- Use expo-image for all imagesui-image-gallery- Use Galeria for lightboxesui-pressable- Use Pressable over TouchableOpacityui-safe-area-scroll- Use contentInsetAdjustmentBehaviorui-scrollview-content-inset- Use contentInset for dynamic spacingui-menus- Use native context menus (zeego)ui-native-modals- Use native modals over JS bottom sheetsui-measure-views- Use onLayout, not measure()ui-styling- Use StyleSheet.create, gap, borderCurve
State Management (MEDIUM)
react-state-minimize- Derive values, minimize statereact-state-dispatcher- Use dispatch updatersreact-state-fallback- Use fallback pattern for reactive defaultsstate-ground-truth- State represents truth, derive visuals
React Compiler (MEDIUM)
react-compiler-destructure-functions- Destructure functions earlyreact-compiler-reanimated-shared-values- Use .get()/.set() not .value
Monorepo (MEDIUM)
monorepo-native-deps-in-app- Install native deps in app packagemonorepo-single-dependency-versions- Single versions across packages
Configuration (LOW)
fonts-config-plugin- Load fonts at build timeimports-design-system-folder- Re-export from design systemjs-hoist-intl- Hoist Intl formatter creation
Quick Reference: Profiling & Measurement (Callstack)
FPS & Re-renders (CRITICAL)
# Open React Native DevTools
# Press 'j' in Metro, or shake device → "Open DevTools"
js-profile-react.md- React DevTools profilingjs-measure-fps.md- FPS monitoringjs-react-compiler.md- Automatic memoizationjs-atomic-state.md- Jotai/Zustand patternsjs-concurrent-react.md- useDeferredValue, useTransition
Bundle Size (CRITICAL)
npx react-native bundle \
--entry-file index.js \
--bundle-output output.js \
--platform ios \
--sourcemap-output output.js.map \
--dev false --minify true
npx source-map-explorer output.js --no-border-checks
bundle-barrel-exports.md- Avoid barrel importsbundle-analyze-js.md- JS bundle visualizationbundle-tree-shaking.md- Dead code eliminationbundle-r8-android.md- Android code shrinkingbundle-hermes-mmap.md- Disable bundle compression
TTI Optimization (HIGH)
native-measure-tti.md- TTI measurement setupbundle-hermes-mmap.md- Enable Hermes mmap- Defer non-critical work with
InteractionManager
Native Performance (HIGH)
- iOS: Xcode Instruments → Time Profiler
- Android: Android Studio → CPU Profiler
native-turbo-modules.md- Building fast native modulesnative-threading-model.md- Turbo Module threadsnative-profiling.md- Platform profiling guides
Memory Management (MEDIUM)
js-memory-leaks.md- JS memory leak huntingnative-memory-leaks.md- Native memory leaksnative-memory-patterns.md- C++/Swift/Kotlin memory
Animations (MEDIUM)
js-animations-reanimated.md- Reanimated worklets
Problem → Solution Mapping
| Problem | Vercel Rules | Callstack References |
|---|---|---|
| App crashes | rendering-no-falsy-and, rendering-text-in-text-component | - |
| List scroll jank | list-performance-* | js-lists-flatlist-flashlist.md |
| Animation drops frames | animation-gpu-properties | js-animations-reanimated.md |
| Too many re-renders | react-state-minimize | js-profile-react.md, js-react-compiler.md |
| Slow startup (TTI) | - | native-measure-tti.md, bundle-hermes-mmap.md |
| Large app size | - | bundle-analyze-app.md, bundle-r8-android.md |
| Memory growing | - | js-memory-leaks.md, native-memory-leaks.md |
| TextInput lag | - | js-uncontrolled-components.md |
| Native module slow | - | native-turbo-modules.md |
File Structure
react-native/
├── SKILL.md # This file
├── AGENTS.md # Full 74KB compiled Vercel guide
├── rules/ # 36 individual Vercel rule files
│ ├── list-performance-*.md
│ ├── animation-*.md
│ ├── ui-*.md
│ └── ...
└── references/ # 27 Callstack reference files
├── js-*.md
├── native-*.md
├── bundle-*.md
└── images/
Attribution
Combined from:
- "The Ultimate Guide to React Native Optimization" by Callstack
- React Native Skills by Vercel