react-native-best-practices
Optimiser les performances de React Native
Les applications React Native souffrent souvent de problèmes de performances comme des animations lentes, des fuites de mémoire et des bundles volumineux. Cette compétence fournit des directives d'optimisation testées par les experts de Callstack pour améliorer les FPS, réduire le temps de démarrage et éliminer les fuites de mémoire.
스킬 ZIP 다운로드
Claude에서 업로드
설정 → 기능 → 스킬 → 스킬 업로드로 이동
토글을 켜고 사용 시작
테스트해 보기
"react-native-best-practices" 사용 중입니다. Mon FlatList défile lentement avec plus de 500 éléments
예상 결과:
- 1. **Correction immédiate** : Passez de FlatList à FlashList pour 70% de meilleures performances sur les grandes listes
- 2. **Optimisation clé** : Assurez-vous d'utiliser `keyExtractor` avec des IDs uniques, pas l'index
- 3. **Optimisation du rendu** : Enveloppez les éléments de liste avec `React.memo` et utilisez la prop `areItemsEqual`
- 4. **Gestion des images** : Utilisez la prop `cache` pour les images distantes et le mode de redimensionnement 'cover'
- 5. **Éviter dans le rendu** : Gardez les calculs coûteux hors de renderItem et utilisez useCallback
"react-native-best-practices" 사용 중입니다. Mon application met 4 secondes à devenir interactive au lancement
예상 결과:
- **Gains rapides (commencez ici) :**
- - Désactiver la compression du bundle JS pour Hermes mmap sur Android (économise ~300ms)
- - Différer les travaux non critiques avec InteractionManager.runAfterInteractions
- - Utiliser react-native-screens pour la navigation native au lieu des routeurs basés sur JS
- **Analyse du bundle :**
- - Exécuter source-map-explorer pour trouver les grandes dépendances
- - Retirer les polyfills Intl non utilisés (Hermes a le support natif Intl)
- - Remplacer les imports barrel par des imports directs pour activer le tree shaking
보안 감사
낮은 위험Documentation-only skill containing React Native optimization guidelines. Static analyzer flagged shell command examples in markdown code blocks as 'external_commands', but these are documentation patterns, not executable code. All 1101 detections are false positives - the skill only provides guidance and reference materials without executing any code.
위험 요인
⚙️ 외부 명령어 (4)
🔑 환경 변수 (1)
📁 파일 시스템 액세스 (2)
⚡ 스크립트 포함 (1)
품질 점수
만들 수 있는 것
Débogage des applications React Native lentes
Un développeur mobile remarque que son application React Native a un défilement saccadé et des animations lentes. Utilisez cette compétence pour identifier si le problème vient du blocage du thread JS, des cycles de rendu ou du rendu natif, puis appliquez des corrections ciblées.
Réduction du temps de démarrage de l'application
Une équipe veut réduire le temps d'interactivité de leur application de 3 secondes à moins d'une seconde. La compétence guide à travers l'analyse du bundle, la configuration d'Hermes et la configuration de la navigation native pour des cold starts plus rapides.
Optimisation des performances de liste
Un fil social avec des centaines d'éléments cause des à-coups lors du défilement. La compétence recommande de passer de ScrollView à FlashList, d'implémenter une extraction de clé appropriée et d'éviter les re-rendus avec une memoization correcte.
이 프롬프트를 사용해 보세요
Mon application React Native a [symptôme spécifique : défilement lent/animations saccadées/utilisation élevée de la mémoire/démarrage lent]. Quelles sont les 3 premières choses que je dois vérifier et comment les corriger ?
Mon bundle React Native fait [X] Mo. Aidez-moi à utiliser source-map-explorer ou Expo Atlas pour identifier ce qui occupe de l'espace, puis suggérez des optimisations spécifiques pour les plus gros composants.
La mémoire de mon application augmente au fil du temps et finit par planter. Guidez-moi à travers le processus pour identifier s'il s'agit d'une fuite de mémoire JS ou d'une fuite de mémoire native, et quels outils et patterns utiliser pour chaque cas.
J'utilise l'API Animated de React Native pour [animation spécifique] mais elle perd des images sur les appareils plus anciens. Qu'est-ce qui cause cela et comment puis-je utiliser les worklets Reanimated pour obtenir des animations fluides à 60fps ?
모범 사례
- Profilez avant d'optimiser - utilisez React DevTools, source-map-explorer et les profileurs de plateforme pour identifier les vrais goulots d'étranglement au lieu de deviner
- Utilisez FlashList au lieu de FlatList pour les listes de plus de 100 éléments, et fournissez toujours un keyExtractor unique utilisant des IDs stables, pas l'index de liste
- Activez React Compiler (Expo SDK 52+, React Native 0.76+) pour une memoization automatique qui élimine les re-rendus inutiles sans useMemo/useCallback manuel
피하기
- Utiliser ScrollView pour les grandes listes - cela rend tous les éléments upfront causant une inflation de la mémoire et un défilement lent ; utilisez toujours FlatList ou FlashList
- Les exports barrel (importer depuis des fichiers index) - cela empêche le tree shaking et inclut du code non utilisé ; importez directement depuis les fichiers source
- Bloquer le thread JS avec des calculs coûteux pendant les animations - utilisez les worklets Reanimated pour exécuter les animations sur le thread UI
자주 묻는 질문
Quelle est la manière la plus rapide d'améliorer les performances de React Native ?
Comment mesurer précisément les FPS de React Native ?
Dois-je utiliser des modules natifs ou des bibliothèques JavaScript ?
Comment réduire la taille du bundle de mon React Native ?
Qu'est-ce qui cause les fuites de mémoire dans React Native ?
Comment optimiser les animations pour 60fps ?
개발자 세부 정보
라이선스
MIT
리포지토리
https://github.com/callstackincubator/agent-skills/tree/main/skills/react-native-best-practices/참조
main
파일 구조
📁 images/
📄 bundle-treemap-source-map-explorer.png
📄 controlled-textinput-pingpong.png
📄 flashlight-flatlist-vs-flashlist.png
📄 view-hierarchy-flattening.png
📄 xcode-instruments-templates.png
📄 js-lists-flatlist-flashlist.md
📄 js-uncontrolled-components.md
📄 native-android-16kb-alignment.md
📄 native-sdks-over-polyfills.md
📄 SKILL.md