Community코딩 & 개발github.com

react-native-tv-best-practices

React Native TV 앱의 포커스/D-패드 내비게이션, 10피트 UI 레이아웃, TV 재생/DRM 통합, 저메모리 TV 성능, TV 접근성을 검토합니다. 원격 입력, TV 포커스, TV 패키징, TV 하드웨어 또는 TV 재생 제약 조건에 의존하는 react-native-tvos, Expo TV, Amazon Vega/Kepler 또는 React Native Web TV 대상을 빌드, 디버깅 또는 검토할 때 사용하세요.

react-native-tv-best-practices란 무엇인가요?

이 스킬은 Apple TV, Android TV, Fire TV, Amazon Vega/Kepler, Tizen, webOS 등 TV 플랫폼을 대상으로 하는 React Native 기반 앱의 TV 특화 문제를 집중적으로 검토하기 위한 가이드입니다. 리모컨/D-패드 입력, 포커스 엔진, 10피트 UI 레이아웃, 플랫폼 패키징, 비디오 재생 및 DRM 통합, 저메모리 TV 하드웨어 성능, TV 접근성 등 TV 환경의 고유한 제약 사항을 다룹니다. `react-native-tvos`, Expo TV, Amazon Vega/Kepler, 웹 기반 TV 등 다양한 TV 스택을 감지하고 각 스택에 맞는 설정 및 빌드 기대 사항을 식별하는 방법을 제공합니다. 포커스 관리, 성능 최적화, 비디오 디버깅, 접근성 감사 등 주요 영역별로 우선순위가 매겨진 참조 파일을 통해 개발자가 TV 앱의 일반적인 문제를 신속하게 해결할 수 있도록 돕습니다. 또한 보안 측면에서 DRM 키를 클라이언트 코드에 포함하지 않도록 주의하는 등 TV 특화 보안 지침도 포함되어 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/callstackincubator/agent-skills/tree/main/skills/react-native-tv-best-practices

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

React Native TV 모범 사례

개요

Apple TV, Android TV, Fire TV, Amazon Vega/Kepler, Tizen, webOS 등 TV 플랫폼을 대상으로 하는 React Native 기반 앱을 위한 TV 특화 검토 가이드입니다.

이 스킬은 TV 환경의 차이점(리모컨 입력, 포커스 엔진, 10피트 레이아웃, 플랫폼 패키징, 재생/DRM, 저메모리 TV 하드웨어, TV 접근성)에만 사용하세요. 일반적인 React Native 성능 또는 아키텍처 문제는 react-native-best-practices를 참조하세요.

스킬 형식

참조 파일은 주제 접두사별로 그룹화됩니다.

  • focus-*: 포커스 엔진, 포커스 가이드, 포커스 이벤트 성능
  • nav-*: D-패드 내비게이션, 뒤로/메뉴 동작, 키보드/검색 입력
  • design-*: 10피트 타이포그래피, 레이아웃, 색상, 포커스 가시성
  • perf-*: TV 하드웨어에서의 시작, 메모리, 목록, 애니메이션 및 네트워크 제약
  • video-*: 재생 아키텍처, DRM/프로토콜 선택, 디버깅
  • a11y-*: TV 접근성 구현 및 감사 점검
  • setup-*: 스택 감지, 설정, 아키텍처, 크로스 플랫폼 동작
  • test-* 및 release-*: 테스트 범위, E2E 및 CI/릴리스 워크플로우

적용 시점

앱이 TV 플랫폼을 대상으로 하고 다음 작업과 관련된 경우 이 스킬을 적용하세요.

  • 포커스 이동, 포커스 가시성, 포커스 복원 또는 리모컨/D-패드 입력
  • TV 레이아웃 가독성, 오버스캔/안전 영역 또는 10피트 UI 밀도
  • TV 플레이어 컨트롤, 매니페스트, DRM, 디코더 지원 또는 재생 오류
  • 저메모리 TV 하드웨어에서의 성능(특히 비디오 또는 대형 캐러셀)
  • 화면 판독기, 자막, 포커스 순서 또는 리모컨 전용 상호 작용을 통한 TV 접근성
  • react-native-tvos, Expo TV, Amazon Vega/Kepler, Tizen 또는 webOS 플랫폼 설정

시작하기 전에 — TV 스택 식별

이 스킬은 여러 TV 스택을 다룹니다. 설정 문제를 지적하기 전에 앱이 대상으로 하는 스택을 감지하세요. Vega/Kepler 또는 웹 기반 TV 앱에 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 매니페스트 항목; TV 에뮬레이터/시뮬레이터
Expo + react-native-tvos위 조건 및 app.json에 @react-native-tvos/config-tvEXPO_TV=1 prebuild; react-native-tvos 버전은 Expo SDK와 일치해야 함; 모든 Expo 기능/라이브러리가 TV에서 사용 가능한 것은 아님
Amazon Vega / KeplerVega/Kepler SDK 및 도구 (@amazon-devices/* 의존성, Kepler 매니페스트); react-native-tvos 없음Amazon의 Vega/Kepler 툴체인 — react-native-tvos, tvOS Podfile 및 Android TV 매니페스트는 적용되지 않음
웹 기반 TV (Tizen, webOS)웹 번들러 (Rsbuild/webpack) + 플랫폼 패키징; spatial-nav 라이브러리플랫폼 SDK 패키징; 포커스를 위한 @noriginmedia/norigin-spatial-navigation

포커스, 10피트 디자인, 성능, 접근성, 플레이어 가이드는 이 모든 스택에 적용됩니다. 설정/빌드 기대 사항만 스택별로 다릅니다.

검토 규칙

  • 설정 조언 전에 대상 스택을 확인하세요.
  • 명령형 포커스 호출 또는 광범위한 nextFocus* 맵보다 자연스러운 포커스 순서와 포커스 가이드를 선호하세요.
  • 포커스 손실, 보이지 않는 포커스, 깨진 뒤로/메뉴 동작을 탐색 버그로 처리하세요.
  • 시각적 세부 사항을 조정하기 전에 TV 시청 거리에서 가독성, 안전 영역 및 포커스 상태를 확인하세요.
  • 성능 수정이 완료되었다고 보고하기 전에 지원되는 가장 약한 TV 장치에서 프로파일링하세요.
  • 재생 실패를 레이어별로 분리하세요: 매니페스트 요청, DRM 라이선스 교환, 디코더 기능, 플레이어 상태, React UI 컨트롤.

우선순위 기반 지침

우선순위카테고리영향접두사
1포커스 및 D-패드 내비게이션치명적focus-*, nav-*
2목록, 애니메이션 및 입력 성능치명적perf-*
3재생 및 DRM 실패높음video-*
410피트 가독성 및 레이아웃높음design-*
5TV 접근성높음a11y-*
6스택 설정, 테스트 및 릴리스중간setup-*, test-*, release-*

빠른 참조

  1. 패키지 파일, 매니페스트, 네이티브 폴더 및 플랫폼 도구에서 TV 스택을 감지합니다.
  2. 마우스/터치 가정이 아닌 리모컨 또는 D-패드 경로로 탐색을 재현합니다.
  3. 포커스된 요소가 항상 보이고, 도달 가능하며, 모달/라우트 후에 복원되는지 확인합니다.
  4. React 컨트롤을 변경하기 전에 네트워크/DRM 레이어부터 재생 실패를 확인합니다.
  5. 지원되는 가장 약한 TV 대상에서 목록, 애니메이션, 메모리 및 시작 작업을 측정합니다.

참조

포커스 및 내비게이션

파일영향설명
focus-management.md치명적포커스 엔진, 포커스 가이드, nextFocus*, 포커스 복원
focus-performance.md치명적포커스 이벤트 처리로 인한 프레임 드롭 방지
nav-directional.md치명적TV 플랫폼 간 방향 탐색 규칙
nav-patterns.md치명적전역/지역 탐색, 모달, 탭 및 뒤로 동작
nav-keyboard.md중간리모컨을 사용한 검색 및 텍스트 입력

디자인

파일영향설명
design-10foot.md높음10피트 검토 휴리스틱
design-typography.md높음TV 글꼴 크기 및 가독성
design-layout.md높음안전 영역, 간격, 캐러셀 및 포커스 공간
design-color.md중간대비 및 TV 디스플레이 색상 제약

성능

파일영향설명
perf-overview.md높음TV 성능 목표 및 프로파일링 순서
perf-lists.md치명적가상화된 행 및 포스터가 많은 목록
perf-animations.md치명적포커스 및 전환 애니메이션 성능
perf-memory.md높음저메모리 TV 충돌 및 이미지/비디오 압박
perf-network.md높음원격 입력, 요청 지연 및 네트워크 복원력

비디오, 접근성, 설정, 테스트

파일영향설명
video-streaming.md높음TV 플랫폼 프로토콜/DRM 선택
video-players.md높음플레이어 선택 및 사용자 정의 컨트롤
video-debugging.md높음매니페스트, DRM, 코덱 및 재생 디버깅
a11y-overview.md중간TV 특화 접근성 차이점
a11y-implementation.md높음접근 가능한 레이블, 역할, 라이브 리전 및 포커스
a11y-checklist.md중간출시 접근성 감사 체크리스트
setup-getting-started.md중간react-native-tvos 및 Expo TV 설정
setup-cross-platform.md중간플랫폼 감지 및 크로스 플랫폼 주의 사항
setup-architecture.md중간코드 공유 및 프로젝트 구조
test-strategy.md중간TV 테스트 범위 및 범위 분할
test-javascript.md중간JS 수준의 리모컨/포커스 테스트 도우미
test-e2e.md중간Appium 및 TV E2E 범위
release-cicd.md중간CI, 빌드 지문 및 릴리스 점검

문제 → 스킬 매핑

증상시작 위치
"포커스가 잘못된 요소로 이동합니다"focus-management.md → 디버깅 섹션
"목록 스크롤 시 앱이 멈춥니다"perf-lists.md → 가상화
"Fire TV에서 애니메이션이 끊깁니다"perf-animations.md → 네이티브 드라이버
"TV에서 텍스트가 너무 작습니다"design-typography.md → 최소 크기
"비디오가 재생되지 않음 / DRM 오류"video-streaming.md → DRM 섹션
"화면 판독기가 요소를 건너뜁니다"a11y-implementation.md → 역할 및 레이블
"뒤로 버튼이 제대로 작동하지 않습니다"nav-patterns.md → 뒤로 탐색
"키보드가 콘텐츠를 가립니다"nav-keyboard.md → 내장 vs 사용자 정의
"앱 시작에 시간이 오래 걸립니다"perf-overview.md → 시작 시간
"이미지로 인해 메모리 충돌이 발생합니다"perf-memory.md → 이미지 최적화
"CI 파이프라인에 몇 시간이 걸립니다"release-cicd.md → 지문
"플랫폼 간에 코드를 공유하는 방법"setup-architecture.md → 코드 공유

보안 (TV 특화)

일반적인 의존성/입력 위생은 다른 RN 앱과 동일하게 적용됩니다. TV 특화 차이점은 다음과 같습니다.

  • FairPlay/Widevine/PlayReady 키를 클라이언트 코드에 절대 포함하지 마십시오. 라이선스 서버를 신뢰 경계로 간주하고 DRM 토큰을 서버에서 발급하도록 유지하세요.

Individual skills in this repo

This repo contains 15 individual skills — each has its own dedicated page.

agent-device

Automates interactions for Apple-platform apps (iOS, tvOS, macOS) and Android devices. Use when navigating apps, taking snapshots/screenshots, tapping, typing, scrolling, or extracting UI info across mobile, TV, and desktop targets.

assess-react-native-migration

Assesses whether and how an existing mobile product should migrate to React Native. Use when auditing one or more product repositories for migration readiness, including products whose iOS, Android, and other clients live in separate directories or repositories; choosing brownfield, greenfield, or a checkpoint-based path; defining a representative trial; or preparing a baseline and ROI decision before implementation. When product scope or material evidence is unavailable, grills the stakeholder with exactly one question per turn instead of sending a questionnaire.

callstackincubator/github

GitHub patterns using gh CLI for pull requests, stacked PRs, code review, branching strategies, and repository automation. Use when working with GitHub PRs, merging strategies, or repository management tasks.

callstackincubator/validate-skills

Validates skills in this repo against agentskills.io spec and Claude Code best practices. Use via /validate-skills command.

create-react-native-library

Scaffolds React Native libraries with create-react-native-library for standalone libraries or local native modules and views. Use when creating or working on React Native libraries or adding native functionality in an existing app.

dogfood

Systematically explore and test a mobile app on iOS/Android with agent-device to find bugs, UX issues, and other problems. Use when asked to "dogfood", "QA", "exploratory test", "find issues", "bug hunt", or "test this app" on mobile. Produces a structured report with reproducible evidence: screenshots, optional repro videos, and detailed steps for every issue.

github-actions

GitHub Actions workflow patterns for React Native iOS simulator and Android emulator cloud builds with downloadable artifacts. Use when setting up CI build pipelines or downloading GitHub Actions artifacts via gh CLI and GitHub API.

react-native-best-practices

Provides React Native performance optimization guidelines for FPS, TTI, bundle size, memory leaks, re-renders, and animations. Applies to tasks involving Hermes optimization, JS thread blocking, bridge overhead, FlashList, native modules, or debugging jank and frame drops.

react-native-brownfield-migration

Implements an accepted incremental brownfield migration from native iOS or Android to React Native or Expo using @callstack/react-native-brownfield. Use after the brownfield path has been selected, when setting up the integration, packaging XCFramework or AAR artifacts, or adding React Native surfaces to native hosts.

react-native-testing

Write tests using React Native Testing Library (RNTL) v13 and v14 (`@testing-library/react-native`). Use when writing, reviewing, or fixing React Native component tests. Covers: render, screen, queries (getBy/getAllBy/queryBy/findBy), Jest matchers, userEvent, fireEvent, waitFor, and async patterns. Supports v13 (React 18, sync render) and v14 (React 19+, async render). Triggers on: test files for React Native components, RNTL imports, mentions of "testing library", "write tests", "component tests", or "RNTL".

react-navigation

Provides React Navigation UI patterns for stacks, tabs, drawers etc. Use when building navigation UIs with React Navigation, configuring headers, bottom sheets or handling safe areas and insets.

upgrading-react-native

Upgrades React Native apps to newer versions by applying rn-diff-purge template diffs, updating package.json dependencies, migrating native iOS and Android configuration, resolving CocoaPods and Gradle changes, and handling breaking API updates. Use when upgrading React Native, bumping RN version, updating from RN 0.x to 0.y, or migrating Expo SDK alongside a React Native upgrade.

validate-skills

Validates skills in this repo against agentskills.io spec and Claude Code best practices. Use via /validate-skills command.

vercel-react-native-skills

React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.

writing-user-docs

House style for user-facing documentation — voice, scope, structure, and what to leave out. Use this skill whenever writing, editing, or reviewing anything a user reads to learn how to use a tool — help center articles, getting-started guides, tutorials, feature docs, README usage sections, in-app help, release notes, or FAQ entries. Trigger it even when the request is phrased plainly — "document this feature", "write docs for X", "explain this to users", "write a README for this library", "turn these notes into a guide" — and even when no style guidelines are mentioned. Also use it to review existing docs for tone, bloat, or leaked implementation detail. Do not use it for internal engineering docs, architecture write-ups, RFCs, or code comments.

관련 스킬