Introducing the Bunny Stream SDK for React Native and Expo

Posted by:

Building a mobile app with React Native helps you move quickly. Adding video should feel just as straightforward. But between playback, uploads, device cameras, even a simple idea can turn into a long list of integrations.

When we introduced the Bunny Stream Mobile iOS and Android SDKs, we made it easier to bring video to native iOS and Android applications. Today, we're bringing that experience to more developers with the official Bunny Stream React Native SDK!

Built on our iOS and Android SDKs, it brings native playback, resumable uploads, camera capture, and live streaming together behind one TypeScript API. You build your app with familiar React components. Bunny Stream handles video encoding, storage, and delivery through our global CDN. We’ve also bundled in an Expo config plugin for faster integration with Expo React Native apps.

One integration for iOS and Android

The Bunny Stream React Native SDK connects your shared application code to the native Bunny players and media tools on each device, so you don’t need to build separate integrations for every platform.

Resumable uploads for unreliable mobile connections

Mobile connections don't always cooperate. With TUS resumable uploads, an interrupted transfer can pick up where it left off instead of sending the whole video again. Progress events and pause, resume, and cancel controls make it easy to build an upload experience that keeps people informed.

Select TUS when starting an upload to enable resumable transfers. See the upload notes for recovery and platform-specific background behavior.

Familiar components, native playback

Add on-demand or live video with BunnyStreamPlayer. Playback runs through the native media engines on iOS and Android, while typed props, events, and React hooks help you connect the player to the rest of your app.

Player settings from your Bunny Stream dashboard carry through to the native experience, helping you keep your videos consistent with your brand. Captions, audio track selection, and adaptive playback give your audience the controls they expect.

From camera to content

Let your users create as well as watch. Capture video directly from the device camera for your video library, or use BunnyStreamBroadcaster to go live from your app. Camera switching and microphone controls put the essentials within reach.

More ways to watch

Give viewers more room to enjoy their content with fullscreen playback, picture-in-picture, AirPlay on iOS, and Chromecast on Android through the native player controls. For protected content, the SDK brings support for Apple FairPlay and Google Widevine. VAST/IMA ad support also connects your app to Bunny Stream's video monetization features.

For Android TV, an optional native TV player integration brings playback to the big screen with an additional SDK dependency.

Broadcast live, replay later

Live streaming support is built right into the SDK. Use BunnyStreamBroadcaster to broadcast straight from your users’ phones via RTMP, with camera switching and microphone controls, then show the stream to viewers with the same BunnyStreamPlayer component you use for on-demand video.

Features like DVR let viewers rewind a live event, while recordings keep it available for replay afterward.

Our Live streaming feature is currently in closed preview and being tested by fellow bunny.net users. If you’d like to try it, you can request access through the banner in the dashboard (in any of your video libraries).

Using Expo? You're invited too.

Using Expo requires Expo SDK 52+. The included Expo config plugin applies the native project configuration needed by the library during pre-build. Add it to your app configuration and create a development build locally or with EAS Build. Expo Go is not supported because the SDK uses native modules.

The SDK targets iOS and Android and uses React Native's New Architecture. Android requires API 26+; the setup guide covers the remaining native build requirements.

Install the package:

npm install @bunny.net/stream-react-native

For Expo projects, add the plugin to your existing app configuration:

{
  "expo": {
    "plugins": ["@bunny.net/stream-react-native"]
  }
}

The repository's setup guide covers native setup, initialization, and camera and microphone permissions. The plugin supplies default iOS permission messages; customize them through the cameraPermission and microphonePermission plugin options. Example apps for React Native and Expo give you a starting point to explore.

Let’s get to the code

Once you've completed setup and initialized the SDK with your library configuration, adding a video looks like this:

import { BunnyStreamPlayer } from '@bunny.net/stream-react-native';

export function VideoScreen() {
  return (
    <BunnyStreamPlayer source={{ type: 'vod', videoId: 'YOUR_VIDEO_ID' }} style={{ flex: 1 }} />
  );
}

Showing a live stream uses the same component. Change the source:

source={{
  type: 'live',
  streamId: 'YOUR_STREAM_ID',
}}

libraryId falls back to the library passed to initialize() for both VOD and live sources. Provide it explicitly on a source to override the initialized library.

The SDK also gives you typed APIs for managing videos, collections, live streams, captions, reencoding, and AI transcription, so your integration can grow beyond the player as your app grows. Alongside these APIs, BunnyImage helps display thumbnails and other Bunny-hosted images with support for CDN hotlink protection. See the platform notes for links to operation-specific limitations.

What will you build?

  • Streaming and subscription apps: Bring your video catalog into one mobile experience, with protected playback and big-screen viewing options. Great for microdramas.
  • Social and creator platforms: Let your community capture, upload, and broadcast from their phones, then keep recorded events available for anyone who missed them.
  • Education and e-learning: Combine on-demand lessons with scheduled live classes. DVR helps learners revisit a tricky explanation, while recordings let them catch up later.

Ready to hop in?

Adding video shouldn’t take away from building the experience your audience comes for. With Bunny Stream for React Native and Expo, native video tools are now part of your React workflow.

Explore the official Bunny Stream React Native mobile SDK on GitHub, try the example apps, and bring your next video idea to life.

Built with expertise from Lighthouse Growth

The Bunny Stream React Native SDK was developed with support from Lighthouse Growth, a software development company with deep expertise in OTT, video streaming, and media technologies.

Their team brings hands-on experience building video platforms, mobile applications, and SDKs across iOS, Android, and React Native, and helped us make native-grade video capabilities more accessible to the React Native and Expo community. If you're building in this space, feel free to get in touch with them on LinkedIn.

Comments require cookies. to view and post.