Common questions about Alaznah Calling.
FAQ
Does Alaznah Calling work with Expo Go?
No. Use a development build or a React Native CLI app. See Installation.
Do I need to install peer dependencies separately?
Yes — they are peer dependencies (native modules must live in your app).
| Package manager | Install |
|---|---|
| npm | npm install @alaznah/calling, then npm install react-native-webrtc react-native-incall-manager @react-native-community/netinfo react-native-svg |
| Yarn | yarn add @alaznah/calling react-native-webrtc react-native-incall-manager @react-native-community/netinfo react-native-svg |
| pnpm | pnpm add @alaznah/calling react-native-webrtc react-native-incall-manager @react-native-community/netinfo react-native-svg |
Required: react-native-webrtc, react-native-incall-manager, @react-native-community/netinfo, react-native-svg. Optional: react-native-callkeep.
If peers are missing, startCall fails with WebRTC adapters not found. Full table: Installation.
Which React Native / Android SDK versions are supported?
React Native 0.76+, Android compileSdk 35 or 36, iOS 13+. Full table: Compatibility.
Are voice and video separate packages?
No. One package: @alaznah/calling. Choose mediaType: 'audio' or mediaType: 'video'.
Do I need to self-host signaling?
No. Hosted Signaling is the default. Self-hosting is optional for advanced plans.
Can I build a fully custom UI?
Yes. Use hooks and client methods without the built-in screens. See Customization.
Why doesn’t tapping Accept answer the call?
The default incoming UI requires swipe up on the green control to reduce accidental answers. Decline remains a tap. Details: Incoming Calls.
What about group calls?
This release focuses on 1:1 calls. Group calling may arrive in a later release (examples/group-call is a scaffold only).
Which hook is the active call?
Use useCall(). There is no useActiveCall.
Where do I get API keys?
console.alaznah.com — keep secrets on your backend only.
Are display names optional?
Yes. In 0.1.0 they are required: config.displayName and startCall({ calleeDisplayName }). Empty values throw. Default UI never shows a raw user id. (They were optional on 0.1.0-beta.2.) See What's new.
How do I ring when the app is killed?
Configure push in the console, register the device token, and follow Background Calling + Incoming Calls. Native CallKit / FCM wiring: Native Modules.
Does Picture-in-Picture work if I kill the app?
No. PiP needs a live process. Home / Minimize keeps the call; force-stop stops media. See Picture in Picture.
Do I write CallKit or MainActivity PiP code?
No for a standard RN app. Autolinking + merged manifest cover it. You add plist / capabilities, the webrtc patch, and (Android) Firebase for kill-state incoming — Native Modules.