FRAMEWORKS
React (Vite) video
Complete video infrastructure for a React app. Install the packages and you get uploads, adaptive playback, live streams, DRM, analytics and AI features, without building your own encoding, storage and delivery.
Free plan: 10 videos, 100K streaming minutes, 300 minutes of subtitles and moderation. No credit card.
TRUSTED BY PRODUCT TEAMS SHIPPING VIDEO AT SCALE






What you get
What you get from FastPix for React video
Four things you don't have to build or run yourself.
One video API
Upload, storage, delivery, the player, analytics and AI all come from the same API. No Vite plugin, nothing added to your build.
Built-in encoding
FastPix turns each upload into several quality levels and packages them for streaming. No FFmpeg, no queue workers.
Analytics already on
The player sends view data on its own. Add a title and a viewer ID and you can see who watched what.
Secure video streaming and DRM
Sign a token on your server and pass it to the player. Widevine, PlayReady and FairPlay are all supported.
Functionality
Every React video capability, from upload to AI
Pick a group, then a capability. Each one tells you where the code goes and how much of it is actually React work.
Video upload API
Your server creates a signed URL. The browser then uploads the file straight to FastPix in chunks, so nothing passes through your backend. If the connection drops, the upload picks up where it left off.
React video player
The player is a web component. It registers itself as a custom element and takes attributes, much like a native video tag. In Vite you can import it at the top of the file, because there's no server rendering to break.
Video engagement analytics
The player reports every view on its own, startup time and stalls included. There's no second SDK to add. This is the only thing on this page that works without you writing anything.
Server-side AI processing
Every AI feature runs on the video after it's uploaded. You ask for it from the server SDK and the result comes back on a webhook. None of it is React code, so it looks the same in every framework.
Setup
Install and configure the React video packages
Install the React video packages
The uploader and the player run in the browser. The language SDK runs on your server, where it creates upload URLs, signs playback tokens and asks for AI features.
Configure the React video package
There's no API key. You get two values, an Access Token ID and a Secret Key, and they work as a username and password. Both stay on your server.
Get your access tokenA React and Vite project with all of it wired
The uploader, the player, the Express server and the proxy, in one project you can clone and run. Everything in one place instead of four doc pages.
Behind the scenes
What happens after your React app uploads a file
Here's what happens between the file leaving the browser and the video reaching a viewer. None of it is code you write, and none of it runs in your app.
Your React app only touches the two ends. A server call hands over a signed URL and the player takes the playback ID. In between, a video.media.ready webhook tells your server the video is ready.
FAQ
React video questions, answered
What's the best way to add video upload to a React app?
Not a single fetch of the whole file. Create a signed upload URL on a server, then upload in chunks from the browser so a dropped connection costs one chunk instead of the transfer.
How do I play HLS video in React?
Safari plays HLS natively and Chrome, Firefox and Edge do not, so a hand-rolled player carries two code paths and Hls.isSupported() returns false on the one you forget to test.
Why does my React video player restart when the component re-renders?
Because the effect that creates the player is re-running. React 18 StrictMode mounts every effect twice in development, so without a cleanup that calls destroy() you get two instances attached to one video element. A changing src does the same thing in production, which is what catches people refreshing a playback token.
Do I need a backend to upload video from a React app?
You need somewhere to run one function, because the signed URL is created with a Secret Key and a key in the bundle is a published key. A Vite app has no server of its own, so that is a small endpoint or a serverless function.
Go deeper
More on React video players and uploads
Guide to video playback in JavaScript
What the browser is doing underneath any React player you pick.
Read moreHow to allow users to upload large videos with pause and resume
The behaviour the uploader component gives you, explained.
Read moreGuide to lazy loading HTML videos for your website
Stops a page of video elements blocking your first paint.
Read moreCreating a fully customizable video player interface
Restyling controls without rebuilding the player.
Read moreOptimize video player layouts for any screen size and theme
Responsive players, aspect ratios and dark mode.
Read moreTest cases for video player in your application
What to assert when video is part of your test suite.
Read moreHow to set up monitoring for video player errors
Catching playback failures before support tickets do.
Read moreWebhooks for video: live events and UGC pipelines
The events that matter, and verifying a signature properly.
Read moreUnderstanding video player size and performance
Bundle weight and what the player costs your page.
Read more