React Native performance optimization guidelines from Callstack's Ultimate Guide. Use this skill when writing, reviewing, or debugging React Native code for performance issues.
Performance optimization guide for React Native applications, covering JavaScript/React, Native (iOS/Android), and bundling optimizations. Based on Callstack's "Ultimate Guide to React Native Optimization".
Reference these guidelines when:
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | FPS & Re-renders | CRITICAL | js-* |
| 2 | Bundle Size | CRITICAL | bundle-* |
| 3 | TTI Optimization | HIGH | native-*, bundle-* |
| 4 | Native Performance | HIGH | native-* |
| 5 | Memory Management | MEDIUM-HIGH | js-*, native-* |
| 6 | Animations | MEDIUM | js-* |
Profile first:
# Open React Native DevTools
# Press 'j' in Metro, or shake device → "Open DevTools"
Common fixes:
useDeferredValue for expensive computationsAnalyze bundle:
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
Common fixes:
Measure TTI:
react-native-performance for markersCommon fixes:
InteractionManagerProfile native:
Common fixes:
Full documentation with code examples in references/:
js-*)js-profile-react.md - React DevTools profilingjs-measure-fps.md - FPS monitoringjs-memory-leaks.md - JS memory leak huntingjs-lists-flatlist-flashlist.md - List performancejs-atomic-state.md - Jotai/Zustand patternsjs-concurrent-react.md - useDeferredValue, useTransitionjs-react-compiler.md - Automatic memoizationjs-animations-reanimated.md - Reanimated workletsjs-uncontrolled-components.md - TextInput optimizationnative-*)native-platform-setup.md - iOS/Android tooling guidenative-profiling.md - Xcode/Android Studio profilingnative-measure-tti.md - TTI measurement setupnative-memory-patterns.md - C++/Swift/Kotlin memorynative-threading-model.md - Turbo Module threadsnative-view-flattening.md - View hierarchy debuggingnative-sdks-over-polyfills.md - Native vs JS librariesnative-turbo-modules.md - Building fast native modulesnative-memory-leaks.md - Native memory leak huntingbundle-*)bundle-analyze-js.md - JS bundle visualizationbundle-analyze-app.md - App size analysisbundle-library-size.md - Evaluate dependenciesbundle-barrel-exports.md - Avoid barrel importsbundle-tree-shaking.md - Dead code eliminationbundle-code-splitting.md - Re.Pack code splittingbundle-r8-android.md - Android code shrinkingbundle-native-assets.md - Asset catalog setupbundle-hermes-mmap.md - Disable bundle compression# Find patterns by keyword
grep -l "reanimated" references/
grep -l "flatlist" references/
grep -l "memory" references/
grep -l "profil" references/
grep -l "tti" references/
grep -l "bundle" references/
| Problem | Start With |
|---|---|
| App feels slow/janky | js-measure-fps.md → js-profile-react.md |
| Too many re-renders | js-profile-react.md → js-react-compiler.md |
| Slow startup (TTI) | native-measure-tti.md → bundle-analyze-js.md |
| Large app size | bundle-analyze-app.md → bundle-r8-android.md |
| Memory growing | js-memory-leaks.md or native-memory-leaks.md |
| Animation drops frames | js-animations-reanimated.md |
| List scroll jank | js-lists-flatlist-flashlist.md |
| TextInput lag | js-uncontrolled-components.md |
| Native module slow | native-turbo-modules.md → native-threading-model.md |
Based on "The Ultimate Guide to React Native Optimization" by Callstack.