关于 react-native
React Native 性能指南技能,汇集 Callstack 的性能测量与原生优化资料,以及 Vercel 的代码模式和实践规则。适用于排查卡顿、内存、启动和体积问题的 React Native 开发者。
主要功能
- 01渲染与列表性能建议
- 02FPS 与重渲染分析
- 03动画和导航模式
- 04启动时间与包体优化
- 05内存及原生性能排查
- 06单体仓库与状态管理指南
适用场景
- 01排查界面卡顿与动画掉帧
- 02分析列表滚动及重复渲染
- 03测量启动时间并缩减包体
- 04查找 JavaScript 或原生内存泄漏
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ gigs-slc/ react-native-skills --skill react-native安装后在 Claude Code 中输入/react-native确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdreferences/bundle-analyze-app.mdbundle-analyze-js.mdbundle-barrel-exports.mdbundle-code-splitting.mdbundle-hermes-mmap.mdbundle-library-size.mdbundle-native-assets.mdbundle-r8-android.mdbundle-tree-shaking.mdjs-animations-reanimated.mdjs-atomic-state.mdjs-concurrent-react.mdjs-lists-flatlist-flashlist.mdjs-measure-fps.mdjs-memory-leaks.mdjs-profile-react.mdjs-react-compiler.mdjs-uncontrolled-components.mdnative-measure-tti.mdnative-memory-leaks.mdnative-memory-patterns.mdnative-platform-setup.mdnative-profiling.mdnative-sdks-over-polyfills.mdnative-threading-model.mdnative-turbo-modules.mdnative-view-flattening.mdrules/_sections.md_template.md详细介绍
React Native 完整指南
终极 React Native 优化指南,整合了:
- Callstack - 性能分析、测量和原生优化(27 条参考)
- Vercel - 代码模式、UI 和最佳实践(36 条规则)
适用场景
在以下情况下参考这些指南:
- 调试缓慢或卡顿的 UI 或动画
- 优化列表和滚动性能
- 排查内存泄漏(JS 或原生)
- 优化应用启动时间(TTI)
- 缩减包或应用体积
- 使用 Reanimated 实现动画
- 使用原生组件构建 UI
- 使用 React Compiler
- 规划单体仓库项目结构
按优先级排列的指南
| 优先级 | 类别 | 影响 | 来源 |
|---|---|---|---|
| 1 | 核心渲染 | 严重 | Vercel |
| 2 | 列表性能 | 严重 | 两者 |
| 3 | FPS 和重复渲染 | 严重 | Callstack |
| 4 | 包体积 | 严重 | Callstack |
| 5 | 动画 | 高 | 两者 |
| 6 | 导航 | 高 | Vercel |
| 7 | TTI 优化 | 高 | Callstack |
| 8 | UI 模式 | 高 | Vercel |
| 9 | 原生性能 | 高 | Callstack |
| 10 | 状态管理 | 中 | Vercel |
| 11 | React Compiler | 中 | 两者 |
| 12 | 内存管理 | 中 | Callstack |
| 13 | 单体仓库 | 中 | Vercel |
快速参考:代码模式(Vercel)
核心渲染(严重)
rendering-no-falsy-and- 切勿将 && 与假值搭配使用(会导致应用崩溃)rendering-text-in-text-component- 将字符串包裹在 Text 组件中
列表性能(严重)
list-performance-virtualize- 所有列表都使用 FlashList/LegendListlist-performance-item-memo- 对列表项组件进行记忆化list-performance-callbacks- 稳定回调引用list-performance-inline-objects- 避免内联样式对象list-performance-function-references- 将函数移出渲染函数list-performance-images- 使用经过压缩且尺寸合适的图片list-performance-item-expensive- 将耗时操作移到列表项之外list-performance-item-types- 对异构列表使用项类型
动画(高)
animation-gpu-properties- 仅对 transform 和 opacity 添加动画animation-derived-value- 对计算所得的动画使用 useDerivedValueanimation-gesture-detector-press- 使用 Gesture.Tap 实现按压动画
导航(高)
navigation-native-navigators- 优先使用原生堆栈/标签导航器,而非 JS 导航器
UI 模式(高)
ui-expo-image- 所有图片都使用 expo-imageui-image-gallery- 使用 Galeria 实现灯箱效果ui-pressable- 优先使用 Pressable,而非 TouchableOpacityui-safe-area-scroll- 使用 contentInsetAdjustmentBehaviorui-scrollview-content-inset- 使用 contentInset 实现动态间距ui-menus- 使用原生上下文菜单(zeego)ui-native-modals- 优先使用原生模态框,而非 JS 底部弹层ui-measure-views- 使用 onLayout,而非 measure()ui-styling- 使用 StyleSheet.create、gap、borderCurve
状态管理(中)
react-state-minimize- 派生值,尽量减少状态react-state-dispatcher- 使用 dispatch 更新函数react-state-fallback- 对响应式默认值使用回退模式state-ground-truth- 状态代表真实数据,视觉效果应由此派生
React Compiler(中)
react-compiler-destructure-functions- 尽早解构函数react-compiler-reanimated-shared-values- 使用 .get()/.set(),而非 .value
单体仓库(中)
monorepo-native-deps-in-app- 在应用包中安装原生依赖monorepo-single-dependency-versions- 在所有包中统一依赖版本
配置(低)
fonts-config-plugin- 在构建时加载字体imports-design-system-folder- 从设计系统重新导出js-hoist-intl- 提升 Intl 格式化器的创建位置
快速参考:性能分析与测量(Callstack)
FPS 与重新渲染(CRITICAL)
# Open React Native DevTools
# Press 'j' in Metro, or shake device → "Open DevTools"
js-profile-react.md- React DevTools 性能分析js-measure-fps.md- FPS 监控js-react-compiler.md- 自动记忆化js-atomic-state.md- Jotai/Zustand 模式js-concurrent-react.md- useDeferredValue、useTransition
包体积(CRITICAL)
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
bundle-barrel-exports.md- 避免使用 barrel 导入bundle-analyze-js.md- JS 包可视化bundle-tree-shaking.md- 死代码消除bundle-r8-android.md- Android 代码缩减bundle-hermes-mmap.md- 禁用包压缩
TTI 优化(HIGH)
native-measure-tti.md- TTI 测量设置bundle-hermes-mmap.md- 启用 Hermes mmap- 使用
InteractionManager延后非关键工作
原生性能(HIGH)
- iOS:Xcode Instruments → Time Profiler
- Android:Android Studio → CPU Profiler
native-turbo-modules.md- 构建高性能原生模块native-threading-model.md- Turbo Module 线程native-profiling.md- 平台性能分析指南
内存管理(MEDIUM)
js-memory-leaks.md- 排查 JS 内存泄漏native-memory-leaks.md- 原生内存泄漏native-memory-patterns.md- C++/Swift/Kotlin 内存模式
动画(MEDIUM)
js-animations-reanimated.md- Reanimated worklet
问题 → 解决方案对照
| 问题 | Vercel 规则 | Callstack 参考资料 |
|---|---|---|
| 应用崩溃 | rendering-no-falsy-and、rendering-text-in-text-component | - |
| 列表滚动卡顿 | list-performance-* | js-lists-flatlist-flashlist.md |
| 动画丢帧 | animation-gpu-properties | js-animations-reanimated.md |
| 重新渲染过多 | react-state-minimize | js-profile-react.md、js-react-compiler.md |
| 启动缓慢(TTI) | - | native-measure-tti.md、bundle-hermes-mmap.md |
| 应用体积过大 | - | bundle-analyze-app.md、bundle-r8-android.md |
| 内存持续增长 | - | js-memory-leaks.md、native-memory-leaks.md |
| TextInput 卡顿 | - | js-uncontrolled-components.md |
| 原生模块运行缓慢 | - | native-turbo-modules.md |
文件结构
react-native/
├── SKILL.md # This file
├── AGENTS.md # Full 74KB compiled Vercel guide
├── rules/ # 36 individual Vercel rule files
│ ├── list-performance-*.md
│ ├── animation-*.md
│ ├── ui-*.md
│ └── ...
└── references/ # 27 Callstack reference files
├── js-*.md
├── native-*.md
├── bundle-*.md
└── images/
致谢
内容整合自:
- Callstack 的《The Ultimate Guide to React Native Optimization》
- Vercel 的 React Native Skills
评论
支持 Markdown