mcpField
1
1k-performance

1k-performance

github.com/onekeyhq开发2.5k63 次安装今天更新
代码仓库

关于 1k-performance

面向 OneKey monorepo 中 React 和 React Native 开发的性能优化指南,涵盖请求批处理、列表渲染、桥接开销及避免阻塞界面。

主要功能

  1. 01并发请求批处理
  2. 02React Native 桥接优化
  3. 03列表渲染指南
  4. 04记忆化模式
  5. 05重型操作调度

适用场景

  1. 01限制多个 API 调用的并发数
  2. 02优化长列表渲染
  3. 03减少组件不必要的重新渲染

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/onekeyhq/app-monorepo --skill 1k-performance

安装后在 Claude Code 中输入/1k-performance确认已加载。

附带文件references/rules/performance.md

详细介绍

OneKey 性能优化

OneKey monorepo 中 React/React Native 应用的性能优化模式与最佳实践。

快速参考

类别关键优化适用场景
并发请求限制为 3-5 个,使用 executeBatched多个 API 调用、网络密集型操作
桥接优化尽量减少跨桥接调用,批量处理数据React Native 桥接开销、iOS/Android
列表渲染FlashList、windowSize={5}、content-visibility包含 100+ 个项目的列表
记忆化memo、useMemo、useCallback耗时计算、防止重复渲染
重量级操作InteractionManager、setTimeout会阻塞 UI 的操作

关键性能规则

❌ 禁止:并发请求过多
// ❌ BAD - Can freeze UI with 15+ requests
const requests = items.map(item => fetchData(item));
await Promise.all(requests);
✅ 正确:限制并发数的批量执行
async function executeBatched<T>(
  tasks: Array<() => Promise<T>>,
  concurrency = 3,
): Promise<Array<PromiseSettledResult<T>>> {
  const results: Array<PromiseSettledResult<T>> = [];
  for (let i = 0; i < tasks.length; i += concurrency) {
    const batch = tasks.slice(i, i + concurrency);
    const batchResults = await Promise.allSettled(
      batch.map((task) => task()),
    );
    results.push(...batchResults);
  }
  return results;
}

const tasks = items.map(item => () => fetchData(item));
await executeBatched(tasks, 3); // Max 3 concurrent

🚨 内置优化

已完成优化——无需采取任何操作:

组件优化详情
ListViewwindowSize={5}自动限制可见项目数量
TabscontentVisibility: 'hidden'隐藏未激活的标签页
DialogcontentVisibility: 'hidden'关闭时隐藏

详细指南

如需了解全面的性能优化策略,请参阅 performance.md。

涵盖主题:

  • 并发请求控制
  • React Native 桥接优化
  • 卸载重量级操作
  • 列表渲染(windowSize、FlashList、content-visibility)
  • 记忆化与回调
  • 状态更新优化
  • 图像优化
  • 异步操作与竞态条件
  • 真实 iOS AppHang 案例分析

相关技能

  • /1k-coding-patterns - 通用编码模式与约定
  • /1k-sentry - Sentry 错误分析(包含性能问题)

评论

支持 Markdown