expo-video. All of them play your videos through the device’s native video stack rather than a WebView, so your app can use platform features such as Picture-in-Picture, background audio, and lock screen controls.
Android SDK
Kotlin library for playback, resumable uploads, camera capture, and the full Stream API.
iOS SDK
Swift package for playback, resumable uploads, camera capture, and the full Stream API.
React Native SDK
One TypeScript API over the native Android and iOS SDKs, for React Native and Expo development builds.
Expo Video guide
Play Bunny Stream HLS URLs with
expo-video when you only need native playback.Which option should I use?
Feature comparison
How the options relate
The React Native SDK is a wrapper around the native Android and iOS SDKs. React components render the native player and camera views, so you get the same native behavior with a single TypeScript interface. It also adds an Expo config plugin and platform features such as AirPlay on iOS, Chromecast on Android, and optional Android TV support. It does not support web. The Expo Video guide is not a Bunny SDK. It shows how to point the open sourceexpo-video player at Bunny Stream’s predictable HLS URLs and use the Stream API for metadata such as titles, thumbnails, chapters, and captions. Choose it when playback is all you need and you want to stay within Expo’s own packages.
Securing playback
The SDKs share the same security model, so the same backend can serve every platform.1
Keep your API key on the server
Your Video Library API Key is a secret. Store it in your backend or as an Edge Script secret, never in your app bundle, build-time environment variables, or Expo configuration.
2
Issue embed view tokens from your backend
For private or restricted videos, enable embedded view token authentication. Your backend or an Edge Script checks that the user is allowed to watch the video, then returns a short-lived
{ token, expires } pair. Tokens of 1–5 minutes are a good starting point.3
Pass the token to the player
The app requests a token for the video and passes
token and expires to the player. If CDN token authentication is enabled on the library, the native SDKs sign CDN requests automatically.Before you start
You need a Bunny Stream video library. If you don’t have one yet, follow the Stream quickstart to create a library and upload your first video. Then pick your platform:Android SDK
Kotlin library for playback, resumable uploads, camera capture, and the full Stream API.
iOS SDK
Swift package for playback, resumable uploads, camera capture, and the full Stream API.
React Native SDK
One TypeScript API over the native Android and iOS SDKs, for React Native and Expo development builds.
Expo Video guide
Play Bunny Stream HLS URLs with
expo-video when you only need native playback.