关于 1k-performance
面向 OneKey monorepo 中 React 和 React Native 开发的性能优化指南,涵盖请求批处理、列表渲染、桥接开销及避免阻塞界面。
主要功能
- 01并发请求批处理
- 02React Native 桥接优化
- 03列表渲染指南
- 04记忆化模式
- 05重型操作调度
适用场景
- 01限制多个 API 调用的并发数
- 02优化长列表渲染
- 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
🚨 内置优化
已完成优化——无需采取任何操作:
| 组件 | 优化 | 详情 |
|---|---|---|
ListView | windowSize={5} | 自动限制可见项目数量 |
Tabs | contentVisibility: 'hidden' | 隐藏未激活的标签页 |
Dialog | contentVisibility: 'hidden' | 关闭时隐藏 |
详细指南
如需了解全面的性能优化策略,请参阅 performance.md。
涵盖主题:
- 并发请求控制
- React Native 桥接优化
- 卸载重量级操作
- 列表渲染(windowSize、FlashList、content-visibility)
- 记忆化与回调
- 状态更新优化
- 图像优化
- 异步操作与竞态条件
- 真实 iOS AppHang 案例分析
相关技能
/1k-coding-patterns- 通用编码模式与约定/1k-sentry- Sentry 错误分析(包含性能问题)
评论
支持 Markdown