mcpField
R
react-native-tv-best-practices

react-native-tv-best-practices

github.com/callstackincubator开发1.7k2.3k 次安装3 周前更新
代码仓库

关于 react-native-tv-best-practices

为面向电视平台的 React Native 应用提供专项审查指南,帮助开发者根据实际 TV 技术栈检查遥控导航、布局、性能、播放、无障碍、设置、测试和发布问题。

主要功能

  1. 01先识别 TV 技术栈再审查设置
  2. 02检查焦点移动和方向键导航
  3. 03评估电视布局与远距离可读性
  4. 04检查性能、播放和 DRM 问题
  5. 05审查无障碍、测试和发布指南

适用场景

  1. 01诊断焦点丢失或返回键行为异常
  2. 02检查电视界面的可读性和安全区域
  3. 03排查播放或 DRM 故障
  4. 04规划电视专项测试和发布检查

安装

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

$npx skills add https://github.com/callstackincubator/agent-skills --skill react-native-tv-best-practices

安装后在 Claude Code 中输入/react-native-tv-best-practices确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
a11y-checklist.md
a11y-implementation.md
a11y-overview.md
design-10foot.md
design-color.md
design-layout.md
design-typography.md
focus-management.md
focus-performance.md
nav-directional.md
nav-keyboard.md
nav-patterns.md
perf-animations.md
perf-lists.md
perf-memory.md
perf-network.md
perf-overview.md
release-cicd.md
setup-architecture.md
setup-cross-platform.md
setup-getting-started.md
test-e2e.md
test-javascript.md
test-strategy.md
video-debugging.md
video-players.md
video-streaming.md

详细介绍

React Native TV 最佳实践

概述

针对由 React Native 驱动、运行于 Apple TV、Android TV、Fire TV、Amazon Vega/Kepler 以及 Tizen 或 webOS 等基于 Web 的电视平台的应用的电视专属审查指南。

仅在涉及电视特有差异时使用此技能:遥控器输入、焦点引擎、10 英尺布局、平台打包、播放/DRM、低内存电视硬件和电视无障碍功能。对于常规 React Native 性能或架构问题,请使用 react-native-best-practices。

技能格式

参考文件按主题前缀分组:

  • focus-*:焦点引擎、焦点引导、焦点事件性能
  • nav-*:D-pad 导航、Back/Menu 行为、键盘/搜索输入
  • design-*:10 英尺排版、布局、颜色、焦点可见性
  • perf-*:电视硬件上的启动、内存、列表、动画和网络限制
  • video-*:播放架构、DRM/协议选择、调试
  • a11y-*:电视无障碍功能的实现和审查检查
  • setup-*:技术栈检测、设置、架构、跨平台行为
  • test-* 和 release-*:测试覆盖、E2E 和 CI/发布工作流

适用场景

当应用面向电视平台,且工作涉及以下内容时,请应用此技能:

  • 焦点移动、可见焦点、焦点恢复或遥控器/D-pad 输入
  • 电视布局的可读性、过扫描/安全区域或 10 英尺 UI 密度
  • 电视播放器控件、清单、DRM、解码器支持或播放错误
  • 低内存电视硬件上的性能,尤其是涉及视频或大型轮播列表时
  • 涉及屏幕阅读器、字幕、焦点顺序或仅通过遥控器交互的电视无障碍功能
  • react-native-tvos、Expo TV、Amazon Vega/Kepler、Tizen 或 webOS 的平台设置

开始之前——识别电视技术栈

此技能涵盖多种电视技术栈。在指出设置问题前,先检测应用面向哪种技术栈——对 Vega/Kepler 或基于 Web 的电视应用要求使用 react-native-tvos、tvOS Podfile 或 Android TV 清单,会产生误报。

技术栈检测方法设置要求
react-native-tvos(Apple TV、Android TV、Fire TV)package.json 中的 "react-native": "npm:react-native-tvos@…"tvOS Podfile(platform :tvos);Android TV 清单条目 leanback/LEANBACK_LAUNCHER;电视模拟器/仿真器
Expo + react-native-tvos除上述条件外,app.json 中还需有 @react-native-tvos/config-tvEXPO_TV=1 预构建;react-native-tvos 版本必须与 Expo SDK 匹配;并非所有 Expo 功能/库都可在电视上使用
Amazon Vega / KeplerVega/Kepler SDK 和工具(@amazon-devices/* 依赖、Kepler 清单);不使用 react-native-tvosAmazon 的 Vega/Kepler 工具链——react-native-tvos、tvOS Podfile 和 Android TV 清单均不适用
基于 Web 的电视(Tizen、webOS)Web 打包工具(Rsbuild/webpack)+ 平台打包;空间导航库平台 SDK 打包;用于焦点处理的 @noriginmedia/norigin-spatial-navigation

焦点、10 英尺设计、性能、无障碍功能和播放器指南适用于所有这些技术栈——只有设置/构建要求因技术栈而异。

审查规则

  • 在提供设置建议前,先确定目标技术栈。
  • 优先采用自然的焦点顺序,并优先使用焦点指南,而不是命令式焦点调用或宽泛的 nextFocus* 映射。
  • 将焦点丢失、焦点不可见以及返回键/菜单键行为异常视为导航问题。
  • 在调整视觉细节前,先从电视观看距离检查可读性、安全区域和焦点状态。
  • 在报告性能问题已修复前,先在支持设备中性能最弱的电视上进行分析。
  • 按层区分播放故障:清单请求、DRM 许可证交换、解码器能力、播放器状态和 React UI 控件。

按优先级排序的指南

优先级类别影响前缀
1焦点和方向键导航严重focus-*, nav-*
2列表、动画和输入性能严重perf-*
3播放和 DRM 故障高video-*
4远距离可读性和布局高design-*
5电视无障碍功能高a11y-*
6技术栈设置、测试和发布中setup-*, test-*, release-*

快速参考

  1. 根据包文件、清单、原生文件夹和平台工具检测电视技术栈。
  2. 使用遥控器或方向键操作路径复现导航,不要假设用户使用鼠标或触摸操作。
  3. 确认焦点元素始终可见、可到达,并且在模态框/路由切换后能够恢复。
  4. 更改 React 控件前,先从网络/DRM 层开始向上检查播放故障。
  5. 在支持设备中性能最弱的电视上测量列表、动画、内存和启动相关工作。

参考资料

焦点和导航
文件影响描述
focus-management.md严重焦点引擎、焦点指南、nextFocus* 和焦点恢复
focus-performance.md严重避免焦点事件处理导致帧丢失
nav-directional.md严重各电视平台的方向导航规则
nav-patterns.md严重全局/局部导航、模态框、标签页和返回行为
nav-keyboard.md中使用遥控器进行搜索和文本输入
设计
文件影响描述
design-10foot.md高远距离审查的启发式原则
design-typography.md高电视上的字体大小和可读性
design-layout.md高安全区域、间距、轮播和焦点空间
design-color.md中对比度和电视显示的色彩限制
性能
文件影响描述
perf-overview.md高电视性能目标和性能分析顺序
perf-lists.md严重虚拟化列表行和海报密集型列表
perf-animations.md严重焦点和转场动画性能
perf-memory.md高低内存导致的电视崩溃以及图像/视频内存压力
perf-network.md高遥控器输入、请求停滞和网络弹性
视频、无障碍、设置、测试
文件影响说明
video-streaming.mdHIGH电视平台协议/DRM 选择
video-players.mdHIGH播放器选择和自定义控件
video-debugging.mdHIGH清单、DRM、编解码器和播放调试
a11y-overview.mdMEDIUM电视特有的无障碍差异
a11y-implementation.mdHIGH无障碍标签、角色、实时区域和焦点
a11y-checklist.mdMEDIUM发布前无障碍审核清单
setup-getting-started.mdMEDIUMreact-native-tvos 和 Expo TV 设置
setup-cross-platform.mdMEDIUM平台检测和跨平台注意事项
setup-architecture.mdMEDIUM代码共享和项目结构
test-strategy.mdMEDIUM电视测试范围和覆盖划分
test-javascript.mdMEDIUMJS 级别的遥控器/焦点测试辅助工具
test-e2e.mdMEDIUMAppium 和电视端 E2E 覆盖
release-cicd.mdMEDIUMCI、构建指纹和发布检查

问题 → 技能映射

症状从这里开始
“焦点跳到了错误的元素”focus-management.md → 调试部分
“滚动列表时应用冻结”perf-lists.md → 虚拟化
“Fire TV 上的动画卡顿”perf-animations.md → 原生驱动
“电视上的文字太小”design-typography.md → 最小尺寸
“视频无法播放/DRM 出错”video-streaming.md → DRM 部分
“屏幕阅读器跳过了某些元素”a11y-implementation.md → 角色和标签
“返回按钮无法正常工作”nav-patterns.md → 返回导航
“键盘遮住了内容”nav-keyboard.md → 内置与自定义
“应用启动要等很久”perf-overview.md → 启动时间
“图像导致内存崩溃”perf-memory.md → 图像优化
“CI 流水线需要好几个小时”release-cicd.md → 指纹
“如何跨平台共享代码”setup-architecture.md → 代码共享

安全(电视特有)

与任何 RN 应用一样,应注意依赖项和输入的卫生;值得特别指出的电视端差异:

  • 切勿将 FairPlay/Widevine/PlayReady 密钥嵌入客户端代码——应将许可证服务视为信任边界,并确保 DRM 令牌由服务器签发。

评论

支持 Markdown