Skip to main content
Bunny Stream offers official SDKs for native Android and iOS, a React Native SDK that wraps both, and a guide for playing Bunny Stream videos with 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?

If your app only embeds a few videos and doesn’t need native features like Picture-in-Picture or background playback, the Bunny Player in a WebView is the quickest option and includes analytics, chapters, and dashboard branding out of the box.

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 source expo-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.
The current React Native SDK initialize() call requires a library API access key on the device. If library credentials must never reach the client, review the React Native SDK credential notes before adopting it.
Each SDK page includes a ready-to-use Edge Script example that generates embed view tokens.

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.
Last modified on October 16, 2026