react-native-tv-best-practices

Проверяет приложения React Native TV на предмет навигации с помощью фокуса/D-pad, макета интерфейса для 10-футового экрана, интеграции воспроизведения/DRM для ТВ, производительности на ТВ с низким объемом памяти и доступности для ТВ. Используйте…

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

React Native TV Best Practices

Overview

TV-specific review guidance for React Native-backed apps on Apple TV, Android TV, Fire TV, Amazon Vega/Kepler, and web-based TV targets such as Tizen or webOS.

Use this skill only for TV deltas: remote input, focus engines, 10-foot layout, platform packaging, playback/DRM, low-memory TV hardware, and TV accessibility. For ordinary React Native performance or architecture issues, use react-native-best-practices.

Skill Format

Reference files are grouped by topic prefix:

  • focus-*: focus engines, focus guides, focus event performance
  • nav-*: D-pad navigation, Back/Menu behavior, keyboard/search input
  • design-*: 10-foot typography, layout, color, focus visibility
  • perf-*: startup, memory, lists, animation, and network constraints on TV hardware
  • video-*: playback architecture, DRM/protocol selection, debugging
  • a11y-*: TV accessibility implementation and audit checks
  • setup-*: stack detection, setup, architecture, cross-platform behavior
  • test-* and release-*: test coverage, E2E, and CI/release workflows

When to Apply

Apply this skill when the app targets a TV platform and the work involves:

  • Focus movement, visible focus, focus restoration, or remote/D-pad input
  • TV layout readability, overscan/safe areas, or 10-foot UI density
  • TV player controls, manifests, DRM, decoder support, or playback errors
  • Performance on low-memory TV hardware, especially with video or large carousels
  • TV accessibility with screen readers, captions, focus order, or remote-only interaction
  • Platform setup for react-native-tvos, Expo TV, Amazon Vega/Kepler, Tizen, or webOS

Before You Start — Identify the TV Stack

This skill covers several TV stacks. Detect which one the app targets before flagging setup issues — demanding react-native-tvos, a tvOS Podfile, or an Android TV manifest on a Vega/Kepler or web-based TV app produces false positives.

StackHow to detectSetup expectations
react-native-tvos (Apple TV, Android TV, Fire TV)"react-native": "npm:react-native-tvos@…" in package.jsontvOS Podfile (platform :tvos); Android TV leanback/LEANBACK_LAUNCHER manifest entries; TV emulator/simulator
Expo + react-native-tvosabove plus @react-native-tvos/config-tv in app.jsonEXPO_TV=1 prebuild; react-native-tvos version must match the Expo SDK; not all Expo features/libraries are available on TV
Amazon Vega / KeplerVega/Kepler SDK & tooling (@amazon-devices/* deps, Kepler manifest); no react-native-tvosAmazon's Vega/Kepler toolchain — react-native-tvos, tvOS Podfile, and Android TV manifest do not apply
Web-based TV (Tizen, webOS)web bundler (Rsbuild/webpack) + platform packaging; spatial-nav libraryPlatform SDK packaging; @noriginmedia/norigin-spatial-navigation for focus

The focus, 10-foot design, performance, accessibility, and player guidance applies across all of these — only the setup/build expectations are stack-specific.

Review Rules

  • Resolve the target stack before setup advice.
  • Prefer natural focus order and focus guides before imperative focus calls or broad nextFocus* maps.
  • Treat focus loss, invisible focus, and broken Back/Menu behavior as navigation bugs.
  • Check readability, safe areas, and focus states at TV distance before tuning visual details.
  • Profile on the weakest supported TV device before reporting performance fixes as complete.
  • Separate playback failures by layer: manifest request, DRM license exchange, decoder capability, player state, and React UI controls.

Priority-Ordered Guidelines

PriorityCategoryImpactPrefix
1Focus and D-pad navigationCRITICALfocus-*, nav-*
2List, animation, and input performanceCRITICALperf-*
3Playback and DRM failuresHIGHvideo-*
410-foot readability and layoutHIGHdesign-*
5TV accessibilityHIGHa11y-*
6Stack setup, testing, and releaseMEDIUMsetup-*, test-*, release-*

Quick Reference

  1. Detect the TV stack from package files, manifests, native folders, and platform tooling.
  2. Reproduce navigation with the remote or D-pad path, not mouse/touch assumptions.
  3. Confirm the focused element is always visible, reachable, and restored after modals/routes.
  4. Check playback failures from the network/DRM layer upward before changing React controls.
  5. Measure list, animation, memory, and startup work on the weakest supported TV target.

References

Focus and Navigation

FileImpactDescription
focus-management.mdCRITICALFocus engines, focus guides, nextFocus*, and focus restoration
focus-performance.mdCRITICALAvoiding frame drops from focus event handling
nav-directional.mdCRITICALDirectional navigation rules across TV platforms
nav-patterns.mdCRITICALGlobal/local navigation, modals, tabs, and Back behavior
nav-keyboard.mdMEDIUMSearch and text input with remotes

Design

FileImpactDescription
design-10foot.mdHIGH10-foot review heuristics
design-typography.mdHIGHTV type sizing and readability
design-layout.mdHIGHSafe areas, spacing, carousels, and focus room
design-color.mdMEDIUMContrast and TV display color constraints

Performance

FileImpactDescription
perf-overview.mdHIGHTV performance targets and profiling order
perf-lists.mdCRITICALVirtualized rows and poster-heavy lists
perf-animations.mdCRITICALFocus and transition animation performance
perf-memory.mdHIGHLow-memory TV crashes and image/video pressure
perf-network.mdHIGHRemote input, request stalls, and network resilience

Video, Accessibility, Setup, Testing

FileImpactDescription
video-streaming.mdHIGHTV platform protocol/DRM selection
video-players.mdHIGHPlayer choices and custom controls
video-debugging.mdHIGHManifest, DRM, codec, and playback debugging
a11y-overview.mdMEDIUMTV-specific accessibility differences
a11y-implementation.mdHIGHAccessible labels, roles, live regions, and focus
a11y-checklist.mdMEDIUMLaunch accessibility audit checklist
setup-getting-started.mdMEDIUMreact-native-tvos and Expo TV setup
setup-cross-platform.mdMEDIUMPlatform detection and cross-platform caveats
setup-architecture.mdMEDIUMCode sharing and project structure
test-strategy.mdMEDIUMTV testing scope and coverage split
test-javascript.mdMEDIUMJS-level remote/focus test helpers
test-e2e.mdMEDIUMAppium and TV E2E coverage
release-cicd.mdMEDIUMCI, build fingerprinting, and release checks

Problem → Skill Mapping

SymptomStart Here
"Focus jumps to wrong element"focus-management.md → Debugging section
"App freezes when scrolling lists"perf-lists.md → Virtualization
"Animations stutter on Fire TV"perf-animations.md → Native driver
"Text too small on TV"design-typography.md → Minimum sizes
"Video won't play / DRM errors"video-streaming.md → DRM section
"Screen reader skips elements"a11y-implementation.md → Roles & labels
"Back button doesn't work right"nav-patterns.md → Back navigation
"Keyboard covers content"nav-keyboard.md → Built-in vs custom
"App takes forever to start"perf-overview.md → Startup time
"Images causing memory crashes"perf-memory.md → Image optimization
"CI pipeline takes hours"release-cicd.md → Fingerprinting
"How to share code across platforms"setup-architecture.md → Code sharing

Security (TV-Specific)

General dependency/input hygiene applies as in any RN app; the TV-specific deltas worth calling out:

  • Never embed FairPlay/Widevine/PlayReady keys in client code — treat the license server as the trust boundary and keep DRM tokens server-issued.

Больше skills от callstackincubator

react-devtools
callstackincubator
React DevTools CLI for AI agents. Use when the user asks you to debug a React or React Native app at runtime, inspect component props/state/hooks, diagnose…
official
agent-device
callstackincubator
Automates interactions for Apple-platform apps (iOS, tvOS, macOS) and Android devices. Use when navigating apps, taking snapshots/screenshots, tapping, typing,…
official
assess-react-native-migration
callstackincubator
Оценивает, стоит ли и как мигрировать существующий мобильный продукт на React Native. Используйте при аудите одного или нескольких репозиториев продукта на готовность к миграции,…
official
create-react-native-library
callstackincubator
Создаёт каркас библиотек React Native с помощью create-react-native-library для автономных библиотек или локальных нативных модулей и представлений. Используйте при создании или работе над…
official
react-native-testing
callstackincubator
ВАЖНО: Ваши обучающие данные о @testing-library/react-native могут быть устаревшими или неверными — сигнатуры API, синхронное/асинхронное поведение и доступные функции различаются между v13 и v14. Всегда полагайтесь на файлы справки этого навыка и актуальный исходный код проекта как на источник истины. Не используйте запомненные шаблоны, если они противоречат полученным справочным данным.
official
react-navigation
callstackincubator
Предоставляет шаблоны UI React Navigation для стеков, вкладок, выдвижных панелей и т.д. Используйте при создании навигационных интерфейсов с React Navigation, настройке заголовков, нижних листов…
official
upgrading-react-native
callstackincubator
Оркестрирует обновления версий React Native с помощью шаблонных диффов, разрешения зависимостей и миграции нативных платформ. Применяет канонические шаблонные диффы rn-diff-purge для приведения нативных конфигураций iOS и Android в соответствие с целевыми версиями React Native. Обрабатывает обновления зависимостей в package.json, изменения CocoaPods и Gradle, а также миграции ломающих API при мажорных и минорных обновлениях версий. Включает слой обновления Expo SDK для управляемых проектов Expo и контрольный список проверки после обновления. Предоставляет...
official
validate-skills
callstackincubator
Validates skills in this repo against agentskills.io spec and Claude Code best practices. Use via /validate-skills command.
official