Build with MediaSFU React Native
Essential next steps
- API and reference documentation
- Choose standard, hybrid, or fully headless UI
- Headless and hybrid implementation
- Starter projects and showcases
- Framework examples and recipes
- Current release and migration notes
- Troubleshooting and recovery
Use mediasfu-reactnative@2.4.5 for bare React Native applications on Android
and iOS.
You can begin locally with restricted development credentials. Before sharing or releasing the app, move reusable Cloud credentials behind the production credential boundary.
npm install mediasfu-reactnative@2.4.5
Build by operation
| Task | Start here |
|---|---|
| Secure create and join | React Native room operations |
| Participants and media readiness | Observe the room |
| Microphone, camera, remote media, and screen share | React Native room operations |
| Switch devices and recover from permission failures | Recovery and media controls |
| Waiting, requests, moderation, chat, polls, and collaboration | React Native collaboration |
| Render supplied media nodes or own the stream UI | Screen and rendered media |
| Build a WhatsApp-style application shell | Product recipes |
| Check exact types | React Native API reference |
Copy/paste starter
import { ModernMediasfuGeneric } from 'mediasfu-reactnative';
import { createBackendRoomAdapters } from './secure-room-adapters';
const adapters = createBackendRoomAdapters(
appFetch,
'https://api.example.test/',
);
export function CallScreen() {
return (
<ModernMediasfuGeneric
connectMediaSFU
createMediaSFURoom={adapters.createMediaSFURoom}
joinMediaSFURoom={adapters.joinMediaSFURoom}
returnUI
/>
);
}
appFetch is your authenticated application HTTP client. The complete adapter
is in the room-operations guide and sends only room intent to your backend.
Mobile release checks
Test on physical Android and iOS devices: permission grant/denial, microphone, camera, remote playback, camera switching, speaker/Bluetooth routing, screen sharing, background/foreground, network loss, leave, and a second call after cleanup. A JavaScript test or emulator cannot prove native capture and routing.