Expo性能优化技能Skill expo

这是一个针对Expo React Native移动应用开发的性能优化技能指南,提供启动时间优化、包大小缩减、列表虚拟化、图像处理、数据获取、导航性能、重渲染预防、动画优化和内存管理等关键规则,帮助开发者提升应用性能、减少加载时间和改善用户体验。适用于移动开发、React Native优化、性能调优和前端工程。

移动开发 0 次安装 0 次浏览 更新于 3/18/2026

名称: expo 描述: Expo React Native 性能优化指南。此技能应用于编写、审查或重构 Expo React Native 代码时,以确保最佳性能模式。触发涉及 React Native 组件、导航、列表、图像、动画、包优化或移动性能改进的任务。

社区 Expo React Native 最佳实践

全面的 Expo React Native 应用程序性能优化指南。包含 9 个类别中的 54 条规则,按影响优先级排序,以指导自动重构和代码生成。

何时应用

在以下情况下参考这些指南:

  • 编写新的 Expo React Native 组件
  • 优化应用启动时间和交互时间
  • 实现列表、图像或动画
  • 减少包大小和内存使用
  • 审查代码以解决移动性能问题

按优先级分类的规则类别

优先级 类别 影响 前缀
1 启动时间优化 关键 launch-
2 包大小优化 关键 bundle-
3 列表虚拟化 list-
4 图像优化 image-
5 数据获取模式 data-
6 导航性能 中高 nav-
7 重渲染预防 rerender-
8 动画性能 anim-
9 内存管理 低中 mem-

快速参考

1. 启动时间优化(关键)

  • launch-splash-screen-control - 在资源加载期间控制启动屏幕可见性
  • launch-preload-critical-assets - 在启动期间预加载字体和图像
  • launch-hermes-engine - 使用 Hermes 引擎以加快启动
  • launch-defer-non-critical - 延迟非关键初始化
  • launch-new-architecture - 启用新架构以实现同步本地通信
  • launch-minimize-root-imports - 最小化根 App 组件中的导入

2. 包大小优化(关键)

  • bundle-avoid-barrel-files - 避免桶文件导入
  • bundle-analyze-size - 发布前分析包大小
  • bundle-remove-unused-dependencies - 移除未使用的依赖项
  • bundle-split-by-architecture - 生成架构特定的 APK
  • bundle-enable-proguard - 为 Android 发布构建启用 ProGuard
  • bundle-optimize-fonts - 将自定义字体子集化为使用的字符
  • bundle-use-lightweight-alternatives - 使用轻量级库替代品

3. 列表虚拟化(高)

  • list-use-flashlist - 使用 FlashList 替代 FlatList
  • list-provide-estimated-size - 提供准确的 estimatedItemSize
  • list-avoid-inline-functions - 避免在 renderItem 中使用内联函数
  • list-provide-getitemlayout - 为固定高度项目提供 getItemLayout
  • list-avoid-key-prop - 避免在 FlashList 项目内部使用 key prop
  • list-batch-rendering - 配置列表批量渲染
  • list-memoize-item-components - 记忆化列表项组件

4. 图像优化(高)

  • image-use-expo-image - 使用 expo-image 替代 React Native Image
  • image-resize-to-display-size - 将图像调整为显示尺寸
  • image-use-webp-format - 使用 WebP 格式以减小文件大小
  • image-use-placeholders - 使用 BlurHash 或 ThumbHash 占位符
  • image-preload-critical - 预加载关键首屏图像
  • image-lazy-load-offscreen - 懒加载屏幕外图像

5. 数据获取模式(高)

  • data-parallel-fetching - 并行获取独立数据
  • data-request-deduplication - 去重并发请求
  • data-abort-requests - 在组件卸载时中止请求
  • data-pagination - 实现高效的分页策略
  • data-cache-strategies - 使用适当的缓存策略
  • data-optimistic-updates - 应用乐观更新以提高响应性

6. 导航性能(中高)

  • nav-use-native-stack - 使用本地堆栈导航器
  • nav-unmount-inactive-screens - 卸载非活动标签屏幕
  • nav-prefetch-screen-data - 在导航前预取数据
  • nav-optimize-screen-options - 优化屏幕选项
  • nav-avoid-deep-nesting - 避免深度嵌套导航器

7. 重渲染预防(中)

  • rerender-use-memo-components - 使用 React.memo 记忆化昂贵组件
  • rerender-use-callback - 使用 useCallback 稳定回调函数
  • rerender-use-memo-values - 使用 useMemo 记忆化昂贵计算
  • rerender-avoid-context-overuse - 避免过度使用 Context 进行频繁更新
  • rerender-split-component-state - 拆分组件以隔离更新状态
  • rerender-use-react-compiler - 启用 React Compiler 进行自动记忆化
  • rerender-avoid-anonymous-components - 避免在 JSX 中使用匿名组件

8. 动画性能(中)

  • anim-use-reanimated - 使用 Reanimated 进行 UI 线程动画
  • anim-use-native-driver - 为 Animated API 启用 useNativeDriver
  • anim-avoid-layout-animation - 优先使用变换而非布局动画
  • anim-gesture-handler-integration - 使用 Gesture Handler 与 Reanimated 集成
  • anim-interaction-manager - 在动画期间延迟繁重工作

9. 内存管理(低中)

  • mem-cleanup-useeffect - 清理订阅和定时器
  • mem-abort-fetch-requests - 在卸载时中止 fetch 请求
  • mem-avoid-closure-leaks - 避免闭包内存泄漏
  • mem-release-heavy-resources - 在不需要时释放繁重资源
  • mem-profile-with-tools - 使用开发工具分析内存使用

如何使用

阅读个别参考文件以获取详细解释和代码示例:

完整编译文档

对于包含所有规则扩展的完整指南:AGENTS.md