SuperAPI AI 工具集

performance-optimization

编程与开发

查看项目

更新于 10-16 05:23

技能介绍

用途

本技能专注于优化 React Native 0.83+ 与 Expo SDK 54+ 应用的生产环境性能,覆盖 Hermes V1、React 19.2 并发特性、Intersection Observer API、Web Performance API 以及现代优化策略。当应用出现运行缓慢、内存泄漏、帧率(FPS)问题、启动慢或包体积过大时,可使用本技能进行诊断与优化。

主要能力

React Native 0.83 性能特性

  • Hermes V1(实验性):下一代 JavaScript 引擎,改进垃圾回收、提升启动性能、增强 DevTools 调试。可在 metro.config.js 中通过 hermesParser: true 启用。
  • React 19.2 并发特性:Activity 组件用于隐藏时保留状态,useEffectEvent 提供稳定事件处理器,改进并发渲染与过渡期间的内存管理。
  • Intersection Observer API(Canary):类似 Web 的懒加载,无需滚动事件即可检测可见性。
  • Web Performance API(稳定):performance.now() 精确计时、User Timing API 自定义标记、PerformanceObserver 监控。

包体积优化

  • 使用 npx expo export --dump-sourcemap 生成包统计,配合 source-map-explorer 分析。
  • 使用 depcheck 移除未使用依赖,启用代码压缩与混淆、tree shaking、懒加载重型屏幕、优化资源尺寸,并用 expo-image 替代 react-native-fast-image。

渲染性能

  • React.memo 组件优化(含自定义比较函数)。
  • useMemo 与 useCallback 缓存计算结果与稳定回调引用。
  • 避免内联函数与对象,使用 StyleSheet.create 复用样式。

列表性能

  • 优化 FlatList 配置:initialNumToRender、maxToRenderPerBatch、windowSize、removeClippedSubviews、updateCellsBatchingPeriod、getItemLayout。
  • FlashList(@shopify/flash-list)替代 FlatList,需设置 estimatedItemSize。
  • Intersection Observer 实现懒加载。

图片优化

  • expo-image v2(Expo SDK 54+ 推荐):blurhash 占位、contentFit、transition、cachePolicy、useImage 命令式加载。
  • react-native-fast-image 用于裸 React Native 项目。
  • 使用合适尺寸图片、本地图片、渐进式加载。

内存管理

  • 在 useEffect 清理函数中取消订阅、清除定时器。
  • 内存警告时清理图片缓存(FastImage.clearMemoryCache / clearDiskCache)。

导航性能

  • 使用 lazy 与 Suspense 懒加载屏幕。
  • React Navigation 优化:enableScreens、detachPreviousScreen。

启动时间优化

  • 优化启动屏配置,使用 Hermes 加速启动。
  • 使用 InteractionManager.runAfterInteractions 延迟非关键初始化。

动画性能

  • Animated 使用 useNativeDriver: true 在原生线程运行(60fps)。
  • react-native-reanimated 处理复杂动画(useSharedValue、useAnimatedStyle、withSpring)。

性能监控

  • React Native Performance Monitor(摇动设备查看 JS/UI 帧率、RAM)。
  • @react-native-firebase/perf 自定义 trace 与 HTTP 监控。
  • React DevTools Profiler 检测慢渲染(超过 16ms 警告)。

实用技巧

  • 使用 lodash debounce 防抖昂贵操作。
  • 用 FlashList 或 RecyclerListView 虚拟化长列表,替代 ScrollView 渲染全部项目。
  • 优化 StyleSheet 复用样式对象。

使用方式

本技能以代码示例与配置片段形式提供优化方案,涵盖 metro.config.js、app.json、组件代码等。用户可根据具体性能问题(如慢列表、内存泄漏、启动慢)选择对应章节实施。

适用场景

  • 减小应用包体积
  • 优化 FlatList/SectionList 性能
  • 修复内存泄漏
  • 改善应用启动时间
  • 消除卡顿与掉帧
  • 优化图片加载与缓存
  • 减少组件重渲染
  • 实现懒加载
  • 优化导航性能
  • 分析性能瓶颈
  • 有效使用 React.memo、useMemo、useCallback
  • 实现 60fps 动画
  • 配置 Hermes V1
  • 使用 React 19.2 Activity 组件保留状态
  • 使用 Intersection Observer 懒加载
  • 使用 Web Performance API 进行性能分析
  • 迁移到 expo-image v2

限制

资料未提供本技能的具体安装命令、收费方式、价格、支持平台范围及实际优化效果数据,这些信息暂未提供。部分特性(Hermes V1、Intersection Observer)标注为实验性或 Canary 阶段,需注意稳定性。