Marketplace react-native-best-practices

Provides React Native performance optimization guidelines for FPS, TTI, bundle size, memory leaks, re-renders, and animations. Applies to tasks involving Hermes optimization, JS thread blocking, bridge overhead, FlashList, native modules, or debugging jank and frame drops.

install
source · Clone the upstream repo
git clone https://github.com/aiskillstore/marketplace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/callstackincubator/react-native-best-practices" ~/.claude/skills/aiskillstore-marketplace-react-native-best-practices && rm -rf "$T"
manifest: skills/callstackincubator/react-native-best-practices/SKILL.md
source content

React Native Best Practices

Overview

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".

Skill Format

Each reference file follows a hybrid format for fast lookup and deep understanding:

  • Quick Pattern: Incorrect/Correct code snippets for immediate pattern matching
  • Quick Command: Shell commands for process/measurement skills
  • Quick Config: Configuration snippets for setup-focused skills
  • Quick Reference: Summary tables for conceptual skills
  • Deep Dive: Full context with When to Use, Prerequisites, Step-by-Step, Common Pitfalls

Impact ratings: CRITICAL (fix immediately), HIGH (significant improvement), MEDIUM (worthwhile optimization)

When to Apply

Reference these guidelines when:

  • Debugging slow/janky UI or animations
  • Investigating memory leaks (JS or native)
  • Optimizing app startup time (TTI)
  • Reducing bundle or app size
  • Writing native modules (Turbo Modules)
  • Profiling React Native performance
  • Reviewing React Native code for performance

Priority-Ordered Guidelines

PriorityCategoryImpactPrefix
1FPS & Re-rendersCRITICAL
js-*
2Bundle SizeCRITICAL
bundle-*
3TTI OptimizationHIGH
native-*
,
bundle-*
4Native PerformanceHIGH
native-*
5Memory ManagementMEDIUM-HIGH
js-*
,
native-*
6AnimationsMEDIUM
js-*

Quick Reference

Critical: FPS & Re-renders

Profile first:

# Open React Native DevTools
# Press 'j' in Metro, or shake device → "Open DevTools"

Common fixes:

  • Replace ScrollView with FlatList/FlashList for lists
  • Use React Compiler for automatic memoization
  • Use atomic state (Jotai/Zustand) to reduce re-renders
  • Use
    useDeferredValue
    for expensive computations

Critical: Bundle Size

Analyze 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:

  • Avoid barrel imports (import directly from source)
  • Remove unnecessary Intl polyfills (Hermes has native support)
  • Enable tree shaking (Expo SDK 52+ or Re.Pack)
  • Enable R8 for Android native code shrinking

High: TTI Optimization

Measure TTI:

  • Use
    react-native-performance
    for markers
  • Only measure cold starts (exclude warm/hot/prewarm)

Common fixes:

  • Disable JS bundle compression on Android (enables Hermes mmap)
  • Use native navigation (react-native-screens)
  • Defer non-critical work with
    InteractionManager

High: Native Performance

Profile native:

  • iOS: Xcode Instruments → Time Profiler
  • Android: Android Studio → CPU Profiler

Common fixes:

  • Use background threads for heavy native work
  • Prefer async over sync Turbo Module methods
  • Use C++ for cross-platform performance-critical code

References

Full documentation with code examples in

references/
:

JavaScript/React (
js-*
)

FileImpactDescription
js-lists-flatlist-flashlist.md
CRITICALReplace ScrollView with virtualized lists
js-profile-react.md
MEDIUMReact DevTools profiling
js-measure-fps.md
HIGHFPS monitoring and measurement
js-memory-leaks.md
MEDIUMJS memory leak hunting
js-atomic-state.md
HIGHJotai/Zustand patterns
js-concurrent-react.md
HIGHuseDeferredValue, useTransition
js-react-compiler.md
HIGHAutomatic memoization
js-animations-reanimated.md
MEDIUMReanimated worklets
js-uncontrolled-components.md
HIGHTextInput optimization

Native (
native-*
)

FileImpactDescription
native-turbo-modules.md
HIGHBuilding fast native modules
native-sdks-over-polyfills.md
HIGHNative vs JS libraries
native-measure-tti.md
HIGHTTI measurement setup
native-threading-model.md
HIGHTurbo Module threads
native-profiling.md
MEDIUMXcode/Android Studio profiling
native-platform-setup.md
MEDIUMiOS/Android tooling guide
native-view-flattening.md
MEDIUMView hierarchy debugging
native-memory-patterns.md
MEDIUMC++/Swift/Kotlin memory
native-memory-leaks.md
MEDIUMNative memory leak hunting
native-android-16kb-alignment.md
CRITICALThird-party library alignment for Google Play

Bundling (
bundle-*
)

FileImpactDescription
bundle-barrel-exports.md
CRITICALAvoid barrel imports
bundle-analyze-js.md
CRITICALJS bundle visualization
bundle-tree-shaking.md
HIGHDead code elimination
bundle-analyze-app.md
HIGHApp size analysis
bundle-r8-android.md
HIGHAndroid code shrinking
bundle-hermes-mmap.md
HIGHDisable bundle compression
bundle-native-assets.md
HIGHAsset catalog setup
bundle-library-size.md
MEDIUMEvaluate dependencies
bundle-code-splitting.md
MEDIUMRe.Pack code splitting

Searching References

# 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 → Skill Mapping

ProblemStart 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
Native library alignment issue
native-android-16kb-alignment.md

Attribution

Based on "The Ultimate Guide to React Native Optimization" by Callstack.