This is an Expo project created with create-expo-app, and can be built for web, mobile devices (iOS, iPadOS, and Android), and TV devices (Apple TV, Android TV).
You can see the web version at
https://skiamultiplatform.expo.app/
This project uses
- the React Native TV fork, which supports both phone (Android and iOS) and TV (Android TV and Apple TV) targets
- the React Native TV config plugin to allow Expo prebuild to modify the project's native files for TV builds
- the Shopify react-native-skia package to render high performance 2D graphics.
- the victory-native package, which uses Skia for charting and graphing data.
- the expo-router native tabs experimental feature in Expo SDK 54.
This app includes the following demos from the react-native-skia examples:
- Breathe
- Glassmorphism
- Reanimated
For mobile and TV, this app includes the following demos from the victory-native examples:
- Line Chart
- Bar Chart
The demos have been slightly modified to render and size correctly on TV, and resize correctly on iPad screen rotations.
-
cdinto the project -
Build for mobile devices (including iPad tablet support)
yarn
yarn prebuild # Executes a clean Expo prebuild to generate iOS and Android native files
yarn ios # Build and run for iOS
yarn android # Build and run for Android- Build for TV devices
yarn
yarn prebuild:tv # Executes a clean Expo prebuild to generate tvOS and Android TV native files
yarn ios # Build and run for Apple TV
yarn android # Build and run for Android TV- Web (local development)
yarn
yarn web # Runs the web app as a local development server on port 8081- Web (deploy to EAS hosting)
yarn
eas init
yarn build:web # Build the web deployment bundle
yarn deploy:web # Deploy to the EAS hosting dev environmentNOTE: Setting the environment variable
EXPO_TV=1enables the@react-native-tvos/config-tvplugin to modify the project for TV. This can also be done by setting the parameterisTVto true in theapp.json.