Share this
Building Your React Native OTT app with Expo
by THEO Technologies on November 26, 2024
Introduction
Cross-platform frameworks such as React Native have become a popular trend for simplifying OTT app development. React Native allows developers to create apps that work smoothly across multiple platforms using just one codebase. With this approach, apps can be deployed on iOS, Android, and Web without needing separate development for each platform. It speeds up the process, uses resources more efficiently, and delivers a native-like performance, making it a more efficient choice than traditional native development.
However, building an OTT app with React Native can still require diving into native development for tasks like configuring platform-specific settings, managing native modules, and setting up complex build environments. This is why the React Native community advises to build React Native apps using a framework, a toolbox with all the necessary APIs to let you build production ready apps, and reduce the steep learning curve of some of the core React Native APIs. There is a variety of available React Native frameworks, but as of recently, the recommended community framework for React Native is called Expo1.
In this article, we’ll explore what Expo is, why it has become a popular choice for OTT apps that are using React Native development. We’ll discuss the crucial role of video playback for OTT providers and evaluate the pros and cons of using Expo. Additionally, we’ll explore how OTT app providers can leverage Expo to efficiently build cross-platform streaming applications while delivering a premium viewing experience.
What is Expo?
Expo is an open-source platform for making universal native apps for Android, iOS, and Web-based platforms with JavaScript and React2. It streamlines the process of building, testing, and deploying React Native OTT applications with minimal configuration.
The Expo framework itself is free and open source, while the set of tools provided by Expo Application Services (EAS) is an optional paid service.
Expo workflows for different customisation levels
Expo provides two main workflows for developing React Native applications: Managed Workflow and Bare Workflow.
In the default Managed Workflow, Expo takes care of most of the native configuration and management for you. There is no need to write any native code or worry about updates, builds, and asset management. This is particularly advantageous for OTT developers seeking a straightforward approach, as they can quickly implement features without getting bogged down by the complexities of native code.
Developers who need more control over native code could benefit more from the Bare Workflow. It provides full access to native project files for both Android and iOS, enabling customisation and the ability to add any native modules or libraries. This is ideal for OTT applications requiring specific native features or integrations. Naturally, it comes with increased complexity.
Key features of Expo
The Expo SDK extends the capabilities of the React Native core libraries by providing access to a wide range of device and system functionalities, including libraries for features like OAuth authentication tools. The most popular ones include:
- Expo Go: Expo Go is a sandbox app available on the App Store and Google Play store that allows you to quickly experiment with creating native Android and iOS applications. You can preview your app on physical devices or share it with other developers by simply scanning a QR code, eliminating the need to build and install the app every time.
- Over-The-Air (OTA) updates: Expo allows developers to push updates to their applications without requiring users to download a new version from the app store. When changes are made to the app's code, developers can publish these updates to Expo's servers, which users' devices can then access. The app checks for updates on launch, downloads the new code in the background. This is particularly beneficial for OTT apps, as it ensures that viewers have immediate access to the latest content and features, enhancing user engagement.
- Expo Application Services (EAS), the optional paid service, enhances the development process even further with tools like EAS Build, allowing developers to easily generate apps for distribution, such as publishing an app to the App Store or Google Play. EAS Update provides advanced management for Over-The-Air updates, enabling developers to push quick fixes or new features without resubmitting to the app stores.
Building your React Native OTT app with Expo
For sports, media, and entertainment companies, Expo presents significant advantages in OTT app development. By using a single codebase, teams can streamline maintenance and updates, ultimately saving time and resources. The built-in support for OTA updates means users can access new features instantly, keeping them engaged without waiting for app store approvals.
However, there are some limitations to consider. Expo's “shield” layer limits access to certain native modules, which may restrict the integration of certain third-party libraries and low-level device features.
Video player options for Expo OTT apps
For OTT apps, video playback is a significant part of the application and a great viewer experience will be a differentiator from other OTT platforms. In this case, the basic playback function is often insufficient for a cross-platform OTT app today. Viewers now expect a premium experience similar to that offered by Netflix and other leading platforms. To meet these expectations, streams must be uninterrupted, with smooth ad transition, and available across all devices.
The Expo library includes its own open source player, expo-av, as well as dedicated expo-video and expo-audio components that are set to replace the current video and audio components of expo-av. Although the more popular react-native-video can be used with Expo as well, the expo-video and expo-audio components provide a better integration with the Expo ecosystem.
THEOplayer is a leading cross-platform commercial video player, which includes a React Native SDK. The THEOplayer React Native SDK (“react-native-theoplayer”) comes with a premium feature set and ready-made connectors for third-party ads, analytics and advertising solutions.
The following table compares feature support of expo-video and expo-audio with react-native-theoplayer.
expo-video / expo-audio | react-native-theoplayer | |
Extensive platform support |
🟠 iOS, tvOS, iPadOS, Android, Android TV, Fire TV, limited support on web-based platforms. |
✅ iOS, tvOS, iPadOS, Android, Android TV, Fire TV, extensive support on web-based platforms such as Samsung Tizen, LG WebOS, Vizio, Xbox. |
Background playback |
🟠 Only on iOS. |
✅ |
Fullscreen | ✅ | ✅ |
PiP (picture-in-picture) | ✅ | ✅ |
Subtitles |
🟠 There is no support for side-loaded captions, daterange metadata tracks, or subtitle/caption styling. |
✅ All types of captions, subtitles and metadata tracks are supported. |
Content protection (DRM) |
🟠 Basic DRM flows are supported. Custom flows are not supported. |
✅ There is support for custom DRM flows through connectors. |
Analytics |
❌ This has to be implemented manually. |
✅ It is supported through connectors. |
Cache API (offline playback) | ❌ | ✅ |
Advertisement | ❌ |
✅ CSAI, SSAI & SGAI |
Cast integration | ❌ |
✅ Chromecast & Airplay |
Advanced APIs |
❌ No integration with Android MediaSession & iOS NowPlaying. |
✅ Android MediaSession & iOS NowPlaying available. |
Customizable UI |
🟠 The UI is defined natively, making it difficult to extend or customize, and it lacks thumbnail preview functionality. |
✅ Highly modular and customisable Open Video UI in React Native. Thumbnail previewing is part of the UI. |
Table 1: Comparison table of the expo-video and expo-audio with react-native-theoplayer3
From the comparison table above, it is clear that the THEOplayer React Native SDK offers a more advanced feature set and broader platform support compared to expo-video / expo-audio. For use cases requiring advanced video player features, DRM, ads and/or analytics integrations, expo-video/expo-audio may not fully meet these needs.
Using THEOplayer React Native video player in your Expo app
When it comes to integrating THEOplayer’s React Native SDK, the process is straightforward. The react-native-theoplayer library is designed to be compatible with Expo, enabling developers to integrate THEOplayer's robust video playback capabilities into their Expo projects with ease.
To further simplify this process, there is an Expo plug-in that automatically configures THEOplayer’s native extension libraries. This eliminates the need for manual setup in the native build process, saving time and simplifying integration. For a closer look, check out our sample app.
Conclusion
React Native allows companies to quickly and cost-effectively develop and iterate cross-platform OTT apps. With Expo as the recommended framework, the development process is streamlined through the provision of pre-built components and APIs, significantly reducing the amount of code developers need to write. This allows the engineering teams to concentrate on building features rather than configuring the environment. Additionally, developers benefit from a user-friendly experience enriched with features like Expo Go for instant previews, Over-The-Air (OTA) updates, and pre-built libraries for faster development.
However, the OTT apps developed with Expo may not support all native modules, making it challenging to implement specific features that require custom native code. For video playback, developers could use the default expo-video module for basic video playback functionality or choose a commercial solution like the THEOplayer React Native SDK for enhanced features, advanced APIs, more extensive platform reach, and seamless integration with 3rd party solutions such as advertising. With the THEOplayer Expo plugin, companies can easily integrate the react-native-theoplayer library to their app, ensuring a superior Quality of Experience (QoE) for their viewers across all platforms.
1 Expo is recommended by the React Native community
3 This is a comparison conducted in 2024 November, the availability of features might evolve over time.
Share this
- THEOplayer (46)
- online streaming (40)
- live streaming (35)
- low latency (32)
- video streaming (32)
- HESP (24)
- HLS (21)
- new features (21)
- THEO Technologies (20)
- SDK (19)
- THEOlive (17)
- best video player (17)
- cross-platform (16)
- html5 player (16)
- LL-HLS (15)
- online video (15)
- SmartTV (12)
- delivering content (12)
- MPEG-DASH (11)
- Tizen (11)
- latency (11)
- partnership (11)
- Samsung (10)
- awards (10)
- content monetisation (10)
- innovation (10)
- Big Screen (9)
- CDN (9)
- High Efficiency Streaming Protocol (9)
- fast zapping (9)
- video codec (9)
- SSAI (8)
- Ultra Low Latency (8)
- WebOS (8)
- advertising (8)
- viewers expercience (8)
- "content delivery" (7)
- Adobe flash (7)
- LG (7)
- Online Advertising (7)
- Streaming Media Readers' Choice Awards (7)
- html5 (7)
- low bandwidth (7)
- Apple (6)
- CMAF (6)
- Efficiency (6)
- Events (6)
- drm (6)
- interactive video (6)
- sports streaming (6)
- video content (6)
- viewer experience (6)
- ABR (5)
- Bandwidth Usage (5)
- Deloitte (5)
- HTTP (5)
- ad revenue (5)
- adaptive bitrate (5)
- nomination (5)
- reduce buffering (5)
- release (5)
- roku (5)
- sports betting (5)
- video monetization (5)
- AV1 (4)
- DVR (4)
- Encoding (4)
- THEO Technologies Partner Success Team (4)
- Update (4)
- case study (4)
- client-side ad insertion (4)
- content encryption (4)
- content protection (4)
- fast 50 (4)
- google (4)
- monetization (4)
- nab show (4)
- streaming media west (4)
- support matrix (4)
- AES-128 (3)
- Chrome (3)
- Cost Efficient (3)
- H.265 (3)
- HESP Alliance (3)
- HEVC (3)
- IBC (3)
- IBC trade show (3)
- React Native SDK (3)
- THEOplayer Partner Success Team (3)
- VMAP (3)
- VOD (3)
- Year Award (3)
- content integration (3)
- customer case (3)
- customise feature (3)
- dynamic ad insertion (3)
- scalable (3)
- server-side ad insertion (3)
- video (3)
- video trends (3)
- webRTC (3)
- "network api" (2)
- Amino Technologies (2)
- Android TV (2)
- CSI Awards (2)
- Encryption (2)
- FireTV (2)
- H.264 (2)
- LHLS (2)
- LL-DASH (2)
- MPEG (2)
- Microsoft Silverlight (2)
- NAB (2)
- OMID (2)
- Press Release (2)
- React Native (2)
- Start-Up Times (2)
- UI (2)
- VAST (2)
- VP9 (2)
- VPAID (2)
- VPAID2.0 (2)
- ad block detection (2)
- ad blocking (2)
- adobe (2)
- ads in HTML5 (2)
- analytics (2)
- android (2)
- captions (2)
- chromecast (2)
- chromecast support (2)
- clipping (2)
- closed captions (2)
- deloitte rising star (2)
- fast500 (2)
- frame accurate clipping (2)
- frame accurate seeking (2)
- metadata (2)
- multiple audio (2)
- playback speed (2)
- plugin-free (2)
- pricing (2)
- seamless transition (2)
- server-side ad replacement (2)
- subtitles (2)
- video publishers (2)
- viewer engagement (2)
- wowza (2)
- "smooth playback" (1)
- 360 Video (1)
- AOM (1)
- API (1)
- BVE (1)
- Best of Show (1)
- CEA-608 (1)
- CEA-708 (1)
- CORS (1)
- DIY (1)
- Edge (1)
- FCC (1)
- HLS stream (1)
- Hudl (1)
- LCEVC (1)
- Microsoft Azure Media Services (1)
- Monoscopic (1)
- NAB Show 2016 (1)
- NPM (1)
- NetOn.Live (1)
- OTT (1)
- Periscope (1)
- Real-time (1)
- SGAI (1)
- SIMID (1)
- Scale Up of the Year award (1)
- Seeking (1)
- Stereoscopic (1)
- Swisscom (1)
- TVB Europe (1)
- Tech Startup Day (1)
- Telenet (1)
- Uncategorized (1)
- University of Manitoba (1)
- User Interface (1)
- VR (1)
- VR180 (1)
- Vivaldi support (1)
- Vualto (1)
- adblock detection (1)
- apple tv (1)
- audio (1)
- autoplay (1)
- cloud (1)
- company news (1)
- facebook html5 (1)
- faster ABR (1)
- fmp4 (1)
- hiring (1)
- iGameMedia (1)
- iOS (1)
- iOS SDK (1)
- iPadOS (1)
- id3 (1)
- language localisation (1)
- micro moments (1)
- mobile ad (1)
- nagasoft (1)
- new web browser (1)
- offline playback (1)
- preloading (1)
- program-date-time (1)
- server-guided ad insertion (1)
- stream problems (1)
- streaming media east (1)
- support organization (1)
- thumbnails (1)
- use case (1)
- video clipping (1)
- video recording (1)
- video trends in 2016 (1)
- visibility (1)
- vulnerabilities (1)
- zero-day exploit (1)
- November 2024 (1)
- August 2024 (1)
- July 2024 (1)
- January 2024 (1)
- December 2023 (2)
- September 2023 (1)
- July 2023 (2)
- June 2023 (1)
- April 2023 (4)
- March 2023 (2)
- December 2022 (1)
- September 2022 (4)
- July 2022 (2)
- June 2022 (3)
- April 2022 (3)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- November 2021 (1)
- October 2021 (3)
- September 2021 (3)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (8)
- April 2021 (4)
- March 2021 (6)
- February 2021 (10)
- January 2021 (4)
- December 2020 (1)
- November 2020 (1)
- October 2020 (1)
- September 2020 (3)
- August 2020 (1)
- July 2020 (3)
- June 2020 (3)
- May 2020 (1)
- April 2020 (3)
- March 2020 (4)
- February 2020 (1)
- January 2020 (3)
- December 2019 (4)
- November 2019 (4)
- October 2019 (1)
- September 2019 (4)
- August 2019 (2)
- June 2019 (1)
- December 2018 (1)
- November 2018 (3)
- October 2018 (1)
- August 2018 (4)
- July 2018 (2)
- June 2018 (2)
- April 2018 (1)
- March 2018 (3)
- February 2018 (2)
- January 2018 (2)
- December 2017 (1)
- November 2017 (1)
- October 2017 (1)
- September 2017 (2)
- August 2017 (3)
- May 2017 (3)
- April 2017 (1)
- March 2017 (1)
- February 2017 (1)
- December 2016 (1)
- November 2016 (3)
- October 2016 (2)
- September 2016 (4)
- August 2016 (3)
- July 2016 (1)
- May 2016 (2)
- April 2016 (4)
- March 2016 (2)
- February 2016 (4)
- January 2016 (2)
- December 2015 (1)
- November 2015 (2)
- October 2015 (5)
- August 2015 (3)
- July 2015 (1)
- May 2015 (1)
- March 2015 (2)
- January 2015 (2)
- September 2014 (1)
- August 2014 (1)