react-native-best-practices

提供 React Native 性能优化指南,涵盖 FPS、TTI、打包体积、内存泄漏、重渲染与动画。适用于涉及 Hermes 优化、JS 线程阻塞、桥接开销、FlashList、原生模块或调试卡顿与掉帧的任务。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "react-native-best-practices" with this command: npx skills add kunhai-88/skills/kunhai-88-skills-react-native-best-practices

React Native 最佳实践

React Native 应用性能优化指南,涵盖 JavaScript/React、原生(iOS/Android)与打包优化。基于 Callstack 的「React Native 优化终极指南」。

技能格式

每个参考文件遵循混合格式,用于快速查找与深度理解:

  • 快速模式:错误/正确代码片段用于即时模式匹配
  • 快速命令:Shell 命令用于流程/度量技能
  • 快速配置:配置片段用于设置聚焦技能
  • 快速参考:摘要表用于概念技能
  • 深度探索:完整上下文,包含何时使用、先决条件、逐步、常见陷阱

影响评级:CRITICAL(立即修复)、HIGH(显著改进)、MEDIUM(值得优化)

何时应用

在以下场景参考这些指南:

  • 调试慢/卡顿 UI 或动画
  • 调查内存泄漏(JS 或原生)
  • 优化应用启动时间(TTI)
  • 减少打包或应用大小
  • 编写原生模块(Turbo Modules)
  • 分析 React Native 性能
  • 审查 React Native 代码性能

优先级排序指南

优先级类别影响前缀
1FPS 与重渲染关键js-*
2打包体积关键bundle-*
3TTI 优化native-*, bundle-*
4原生性能native-*
5内存管理中高js-*, native-*
6动画js-*

速查

关键:FPS 与重渲染

先分析

# 打开 React Native DevTools
# 在 Metro 中按 'j',或摇动设备 → "Open DevTools"

常见修复

  • 用 FlatList/FlashList 替换 ScrollView 用于列表
  • 使用 React Compiler 进行自动 memoization
  • 使用原子状态(Jotai/Zustand)减少重渲染
  • 对昂贵计算使用 useDeferredValue

关键:打包体积

分析打包

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

常见修复

  • 避免 barrel 导入(从源直接导入)
  • 移除不必要的 Intl polyfills(Hermes 有原生支持)
  • 启用 tree shaking(Expo SDK 52+ 或 Re.Pack)
  • 为 Android 原生代码启用 R8

高:TTI 优化

度量 TTI

  • 使用 react-native-performance 用于标记
  • 仅度量冷启动(排除热/预热)

常见修复

  • 在 Android 上禁用 JS 打包压缩(启用 Hermes mmap)
  • 使用原生导航(react-native-screens)
  • InteractionManager 延迟非关键工作

高:原生性能

分析原生

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

常见修复

  • 对重型原生工作使用后台线程
  • 优先异步而非同步 Turbo Module 方法
  • 对跨平台性能关键代码使用 C++

参考

完整文档与代码示例在 references/

JavaScript/React (js-*):js-lists-flatlist-flashlist(CRITICAL:用虚拟化列表替换 ScrollView)、js-profile-react、js-measure-fps、js-memory-leaks、js-atomic-state、js-concurrent-react、js-react-compiler、js-animations-reanimated、js-uncontrolled-components。
原生 (native-*):native-turbo-modules、native-sdks-over-polyfills、native-measure-tti、native-threading-model、native-profiling、native-platform-setup、native-view-flattening、native-memory-patterns、native-memory-leaks、native-android-16kb-alignment(CRITICAL:第三方库对齐用于 Google Play)。
打包 (bundle-*):bundle-barrel-exports(CRITICAL:避免 barrel 导入)、bundle-analyze-js(CRITICAL:JS 打包可视化)、bundle-tree-shaking、bundle-analyze-app、bundle-r8-android、bundle-hermes-mmap、bundle-native-assets、bundle-library-size、bundle-code-splitting。

问题 → 技能映射

问题从...开始
应用感觉慢/卡顿js-measure-fps.md → js-profile-react.md
太多重渲染js-profile-react.md → js-react-compiler.md
慢启动(TTI)native-measure-tti.md → bundle-analyze-js.md
应用体积大bundle-analyze-app.md → bundle-r8-android.md
内存增长js-memory-leaks.md 或 native-memory-leaks.md
动画掉帧js-animations-reanimated.md
列表滚动卡顿js-lists-flatlist-flashlist.md
TextInput 延迟js-uncontrolled-components.md
原生模块慢native-turbo-modules.md → native-threading-model.md
原生库对齐问题native-android-16kb-alignment.md

归因

基于 Callstack 的「React Native 优化终极指南」。

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

react-native-best-practices

No summary provided by upstream source.

Repository SourceNeeds Review
General

marketing-psychology

No summary provided by upstream source.

Repository SourceNeeds Review
General

marketing-ideas

No summary provided by upstream source.

Repository SourceNeeds Review