Decide whether you need a ready-made call window or full control of the interface. Create a room or session on the video provider's side from your server, then embed it in your page or app. Handle camera and microphone permissions, add recording if you need it, and test on mobile and weak connections before launch.
The first decision isn't which provider to pick. It's how much of the call screen you want to own, because that decides the size of the build, how long it takes and which providers make sense for you.
A ready-made call window or your own interface?
A prebuilt embed drops a complete call window into your page: video tiles, mute buttons, screen share, the lot. It's the fastest route when video is a feature you're adding to your app and you don't need to restyle it. Daily's docs make the same point: prebuilt is fastest when you don't need to customise, and its call object is there for when you do.
An SDK gives you the raw pieces, such as participants, tracks and events, and you build the interface yourself. It's more work, but the call looks and behaves like the rest of your product. Some providers sit in the middle with a UI kit: ready components you can arrange your own way.
If you're unsure, start prebuilt. You'll learn what your users need from the call before you spend weeks building a custom screen they may not want.
Six providers and where each one sits
| Provider | Prebuilt or SDK | Notable for |
|---|---|---|
| Daily | Both | Create a room URL via the dashboard or REST API, then embed the prebuilt widget with a few lines of JavaScript. Recording options listed are cloud, cloud-audio-only, local and raw-tracks. The home page says you can get started for free, as of Nov 2026. |
| LiveKit | SDK, open source | Open source framework and hosted cloud for realtime audio and video, with SDK quickstarts for React, Swift, Android, Flutter and more. Can be self-hosted locally, on a VM or on Kubernetes. |
| 100ms | Both | Video SDKs plus a Prebuilt option for faster integration, with use cases from video conferencing to virtual classrooms. Home page shows a free try, as of Nov 2026. |
| Dyte | SDK plus UI kit | A core SDK for JavaScript and mobile frameworks, separate ready UI components for React, Angular and web components, a REST API and a guide to recording a meeting. |
| VideoSDK | SDK | Quickstarts for audio and video calls, interactive live streaming and SIP phone integration in one account. Sign-up is free with no card needed, as of Nov 2026. |
| Jitsi Meet | Iframe embed, open source | Load its external API script from your own domain or the public Jitsi server and create the call with a room name, size and parent element. Self-hostable, with a React SDK too. |
For a broader comparison of video infrastructure, my guide to the best video APIs goes further, and if you're weighing up a single hosted embed provider, my list of Whereby alternatives covers that corner.
The build, from first room to release
- Pick prebuilt or SDK. Use the section above. Dyte and 100ms both give you a halfway house if you're torn.
- Create rooms on the server side. Rooms or sessions are created through the provider's dashboard or REST API, so keep room creation and any token generation on your server. Your app only ever receives a link or token, never your API key.
- Embed the call and join it. Add the provider's script or package, then join the room with its URL or token; this is the step each quickstart shows in a handful of lines. VideoSDK and LiveKit publish quickstarts, and for fully open code you can load the Jitsi iframe script from your own domain.
- Handle camera and microphone access. Ask for permission at the moment someone joins, not on page load, and show a clear message if they refuse or the device is busy. LiveKit's docs describe automatic permission handling and device management; with other SDKs you'll build that prompt flow yourself.
- Decide on recording before launch. Cloud recording, audio-only and local recording are separate choices, so pick one and tell participants. Dyte and LiveKit document their own recording or egress routes.
- Test on a phone, on a slow network and with two or three people. Mobile and weak connections are where embedded calls fail first. Check the provider's status and security pages while you're at it.
Plan for your provider changing hands
Here's a risk most build guides skip: your video vendor can change ownership under you. Daily's own home page now carries the announcement that Daily is joining Deepgram, and the same page shows the company's emphasis moving toward voice and AI agents alongside human video calls. That's not a reason to avoid any provider. It's a reason to build as if any provider might change.
So before you commit, check who owns the provider today and read its changelog. Keep your room-and-join code in one small module, so swapping providers means rewriting one file rather than your whole app. An open source option such as LiveKit or Jitsi lowers that lock-in further, because you can run it yourself if you ever need to.
My verdict on prebuilt versus SDK
For most small teams adding video to an existing product, a prebuilt embed is the sensible first move: you'll ship sooner and learn what users need. Move to an SDK when the call screen becomes part of what you sell, and wrap whichever provider you choose in that one small module from day one. If what you need is meetings for your own team rather than calls inside your product, you don't need to build anything; see my guide to video conferencing software instead.
Want AI doing the heavy lifting in your marketing?
I build the systems that handle the boring 80 percent, so you get your week back. Done properly, with the human kept in.
Want your tool on this list? Featured spots and reviews here are paid partnerships. Here's how to partner with me.
Frequently asked questions
What's the quickest way to add video calls to a web app?
Use a prebuilt embed. Daily's docs say you create a room URL, then add its script, call createFrame and join with that URL.
When should I use an SDK instead of a prebuilt widget?
When you need to control the layout and behaviour of the call interface. Daily's docs point to its call object for that, and Dyte offers a core SDK separate from its UI kit.
Is there an open source way to add video calls?
Yes. LiveKit describes itself as open source and lists self-hosting guides, and Jitsi Meet's handbook shows an iframe API you can load from your own domain.
Can I record calls inside my app?
Providers differ. Daily lists cloud, cloud-audio-only, local and raw-tracks recording, and Dyte has a guide on recording a meeting.
Does it work on mobile?
Most providers publish iOS and Android SDKs, including LiveKit, Dyte and Daily. Jitsi's docs say its iframe API works in mobile browsers as it does on desktop.