UI はローカライズ済みです。スキルの紹介と説明文書は選択した言語へ AI が自動翻訳し、コード・コマンド・パス・専門用語は原文のままです。原作者の文書が優先されます。
スキルを探す
生産性・共同作業 · SKILL.md

react-native-performance

react-native-performance

Optimize React Native rendering for smooth 60fps mobile experiences. Use when optimizing React Native app performance, reducing re-renders, or fixing frame drops.

Independent GitHub snapshot · Automated classification · Original documentation governs

スキルの説明

GitHub

name: react-native-performance description: Optimize React Native rendering for smooth 60fps mobile experiences. Use when optimizing React Native app performance, reducing re-renders, or fixing frame drops. metadata: triggers: files: - '/*.tsx' - '/*.ts' keywords: - FlatList - memo - useMemo - useCallback - performance - optimization

React Native Performance

Priority: P0 (CRITICAL)

Tune FlatList for 60fps

  • windowSize: Reduce to 5-10 for memory-heavy lists (default 21). initialNumToRender should cover first viewport.
  • getItemLayout: Provide for fixed-height items. Skips runtime measurement.
  • removeClippedSubviews: Enable for Android (default true) to offload clipped items.
  • maxToRenderPerBatch: Limit to 5-10 items per frame to prevent JS thread blockage.
  • keyExtractor: Use stable unique IDs, never array index.

See optimization guide for FlatList configuration examples with getItemLayout, windowSize, and memoization patterns.

Accelerate Core Rendering

  • ** Engine**: Ensure Hermes engine enabled (default in 0.7x). Verify via global.HermesInternal.
  • Animations: Use Native Driver (useNativeDriver: true) or Reanimated 3 for GPU-accelerated 60fps animations.
  • Re-renders: Use React.memo and useMemo for expensive props. Profile via Flipper (React DevTools) for flamegraphs.
  • Network: Batch API calls. Use React Query/Zustand to prevent unnecessary screen refreshes.
  • Images: Use react-native-fast-image for caching and priority. Avoid large PNGs; use WebP.

Reduce Bundle and Startup Time

  • Hermes: Enable for faster startup (default in RN 0.70+).
  • Tree Shaking: Remove unused imports.
  • ProGuard/R8: Enable code shrinking on Android.
  • Lazy Screens: Use lazy prop for stack screens (enabled by default).

Anti-Patterns

  • No ScrollView for Large Lists: Use FlatList.
  • No Inline Styles: Use StyleSheet.create (optimized).
  • No console.log in Production: Strip with babel plugin.

References

See references/optimization-guide.md for FlatList configuration, memoization rules, and bundle analysis.

Canonical response anchors

When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:

  • Android
  • Provide
保存したスキル