/react-native-multi-tv-app-sample

πŸ“ΊπŸš€ React Native TV app sample for Android TV, Fire TV, tvOS, and web. Features customizable drawer navigation πŸ—‚οΈ, content grid πŸ–ΌοΈ, hero header πŸ¦Έβ€β™‚οΈ, and video player πŸŽ₯. Built with Expo. Perfect starter for cross-platform TV app development! 🌟

Primary LanguageTypeScriptMIT No AttributionMIT-0

πŸ“ΊπŸš€ React Native Multi-TV App Sample

React Native

License: MIT-0

A versatile TV app developed in React Native, compatible with Android TV, Fire TV, tvOS, and Web. This sample project showcases best practices for TV app UI design and implementation.

Demo GIF

🌟 Features

  • πŸ“± Multi-platform support: Android TV, Fire TV, tvOS, and web
  • 🎨 Customizable left-side drawer navigation (using Expo Drawer)
  • πŸ–ΌοΈ Grid layout for content selection
  • πŸ¦Έβ€β™‚οΈ Dynamic hero image header that follows the focused card
  • 🎬 Detailed content screen
  • πŸŽ₯ Video player screen
  • 🎯 Efficient focus management with React TV Space Navigation
  • πŸ”§ Fully customizable screens and components

πŸ“‹ Prerequisites

Before you begin, ensure you have the following installed:

πŸš€ Quick Start

  1. Clone the repository:

    git clone https://github.com/amazonappdev/react-native-multi-tv-app-sample.git
    
  2. Navigate to the project directory:

    cd react-native-multi-tv-app-sample
    
  3. Install dependencies:

    npm install --legacy-peer-deps
    
  4. Prebuild the native project optimized for TV:

    export EXPO_TV=1; npx expo prebuild 
    

πŸ“± Running on Different Platforms

Android TV / Fire TV

  • Ensure you have an Android TV emulator set up or a physical device connected.
  • Run npx expo run:android --device <Your Device or Emulator> to build and install the app.

tvOS

  • Make sure you have Xcode installed with tvOS Simulator.
  • Run expo run:ios to build and install the app on the tvOS Simulator.

Web

  • Run expo start:web to start the app in your default web browser.

πŸ› οΈ Customization

  • Drawer Navigation: Modify ./components/CustomDrawerContent.tsx to customize the left-side menu.
  • Content Grid: Adjust ./app/(drawer)/index.tsx to change the layout or style of the content cards.
  • Detail Screen: Customize ./app/details.tsx for different content details display options.
  • Video Player: Enhance ./app/player.tsx to customize the Video Player Screen

Stay Tuned for more!

πŸ“š Key Frameworks and Libraries Used

Get support

If you found a bug or want to suggest a new [feature/use case/sample], please file an issue.

If you have questions, comments, or need help with code, we're here to help:

Sign up to stay updated with the developer newsletter.

Authors

πŸ“„ License

This project is licensed under the MIT-0 License.

Happy coding! πŸŽ‰ We hope this sample helps you create amazing TV experiences across multiple platforms!