Generated banner for React Native Tv Best Practices
Generated logo for React Native Tv Best Practices

React Native Tv Best Practices

CallstackOfficialPublished by Callstack

  • Skill
  • Guidelines
  • Software development
  • MIT
  • No issues found

From the author

Reviews React Native TV apps for focus/D-pad navigation, 10-foot UI layout, TV playback/DRM integration, low-memory TV performance, and TV accessibility. Use when building, debugging, or reviewing react-native-tvos, Expo TV, Amazon Vega/Kepler, or React Native web TV targets where the issue depends on remote input, TV focus, TV packaging, TV hardware, or TV playback constraints.
— the description by Callstack

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a comprehensive set of best practices for building, testing, and debugging React Native applications on TV platforms, including Apple TV, Android TV, Fire TV, and web-based targets. It focuses on the unique challenges of the 10-foot UI, such as remote-based D-pad navigation, focus management, TV-specific performance constraints, and accessibility requirements. The guidance helps developers navigate the differences between various TV stacks like react-native-tvos and Amazon Vega/Kepler.

What it does

  • Provides heuristics for 10-foot UI design, typography, and layout.
  • Offers strategies for managing focus engines and D-pad navigation.
  • Details performance optimization for low-memory TV hardware.
  • Outlines requirements for TV-specific accessibility and screen reader support.
  • Explains how to handle video playback, DRM, and player controls.
  • Guides developers on identifying and setting up the correct TV platform stack.

When to use it

  • When building or debugging navigation issues related to remote inputs.
  • When optimizing app performance for low-memory TV devices.
  • When implementing accessibility features for TV screen readers.
  • When troubleshooting video playback or DRM integration errors.
  • When designing layouts for 10-foot viewing distances.

Advantages

  • Reduces platform-specific bugs by providing clear stack-detection rules.
  • Improves user experience through consistent focus and navigation patterns.
  • Helps meet accessibility standards required for TV app store approval.
  • Provides actionable debugging paths for common TV-specific failures.

Usage examples

“How do I fix focus jumping to the wrong element in my React Native TV app?”
The agent will guide you to use focus-management.md, recommending the use of TVFocusGuideView for shared focus paths and advising against imperative focus overrides.
“My app crashes on Fire TV when scrolling through a long list of posters. What should I check?”
The agent will point you to perf-lists.md and perf-memory.md to implement proper virtualization and optimize image memory usage for low-memory hardware.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/callstackincubator/react-native-tv-best-practices/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip react-native-tv-best-practices.zip -d .agents/skills

Documentation by Callstack

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.

Files

references/perf-overview.md


title: Performance Overview for TV impact: HIGH tags: performance, device-tiers, kpis, startup, hardware, tv

Performance Overview for TV

TV hardware is significantly weaker than modern phones. A 65" TV is often closer to a budget Android phone in CPU/GPU terms — while also decoding 4K video.

Quick Reference

  • Set performance budgets from the weakest supported TV device

  • Keep one low-end streaming stick or TV in the regular test matrix

  • Measure input latency, FPS during focus movement, memory, startup, and time to playback

  • Treat video playback as part of the performance budget; UI work competes with decode and buffers

Why Performance Is Unforgiving on TV

  • CPU/GPU budgets are lower — every unnecessary render competes with video decoding

  • Memory: 1-2 GB — shared between OS, video buffer, and your app

  • Users notice everything — 300ms input delay = "the app froze"; 45 FPS = visible stutter

  • TV chipsets are designed for video playback, not high-performance UI rendering

Device Tiers — Progressive Enhancement

Low-End (Fire TV Stick Gen 1)

Keep it lean. Drop fancy gradients, heavy shadows, long transitions. Stick to snappy focus highlights, lightweight lists, instant feedback. Responsiveness beats visual flair.

Mid-Range (Samsung Smart TV mid-tier)

Layer in some polish. Quick scale/fade here and there. Still performance-first.

High-End (Apple TV 4K, Nvidia Shield)

Add visual polish: parallax banners, chained animations, cinematic transitions.

Implementation:

  • Detect hardware class at runtime (device model, RAM, OS version)

  • Maintain feature flags for performance tiers (basic, standard, enhanced)

  • Shared baseline layout + conditional animations/effects per tier

  • Test on real devices at each tier

KPIs to Track

MetricLow-End TargetMid-EndHigh-End
Cold start time<5s<4s<4s
Time to playback<10s<7s<7s
Time to first meaningful paint<3s<2s<1.5s
FPS during navigation606060

TV-Specific Performance Checks

  1. Remote input latency — Measure the delay from D-pad press to visible focus movement. Keyboard input and simulator clicks hide this class of regression.

  2. Playback startup — Track manifest request, DRM license request, first decoded frame, and controls-ready time separately.

  3. Memory with video active — Measure carousels and overlays while a video surface is mounted; image caches and video buffers share the same low memory budget.

  4. Focus navigation FPS — Measure row-to-row and card-to-card movement, not only inertial scrolling.

  5. Device tier fallback — Disable heavy shadows, gradients, parallax, and long transitions on low-end devices before reducing content density.

Automating Performance Measurements

Manual testing doesn't scale across TV platforms:

import { PerformanceObserver, performance } from 'react-native-performance';
performance.mark('app_start');
AppRegistry.registerComponent(appName, () => {
  performance.mark('app_registered');
  return App;
});
  • Collect timestamps via automated tests on real devices

  • Push metrics to Grafana/Datadog for trend tracking

  • Fail CI if metrics regress beyond thresholds

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Callstack
Publisher
Callstack (Official)
Source
callstackincubator/agent-skills · skills/react-native-tv-best-practices · commit 59e9d17
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Callstack.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download react-native-tv-best-practices.zip