Skip to main content
React Native Incoming Call
Open Source

React Native Incoming Call

Author 2020

Open-source React Native library that displays native incoming call UI on both iOS and Android, used by thousands of developers worldwide.

The Challenge

React Native apps building VoIP or calling features had no straightforward way to display the native OS-level incoming call screen — the full-screen lock-screen overlay that appears when a call arrives, even when the app is backgrounded or the device is locked.

The Solution

Built native iOS and Android modules that hook into each platform's call notification APIs and expose a unified JavaScript interface, letting React Native developers trigger a native incoming call screen with a single function call.

React Native Incoming Call is an open-source library that solves one of the trickier problems in mobile VoIP development: displaying the native, full-screen incoming call UI on iOS and Android from a React Native application. Whether the app is in the foreground, background, or the device screen is locked, the library surfaces the correct platform-native call overlay — the same one users see from a standard phone call.

Challenge

React Native’s JavaScript bridge cannot directly invoke OS-level call management APIs. On iOS, displaying the native CallKit incoming call screen requires writing Swift or Objective-C native module code. On Android, triggering a full-screen notification with the correct intent flags and wake-lock permissions requires navigating a maze of background execution restrictions that differ across Android versions. Developers building WebRTC or SIP-based calling apps had to either implement this themselves or use expensive third-party SDKs that bundled far more than they needed.

Solution

The library exposes two platform-specific native modules — Swift/Objective-C for iOS using CallKit, and Kotlin/Java for Android using the full-screen notification API — behind a unified TypeScript interface. A single displayIncomingCall(callerId, callerName) call triggers the correct native behaviour on each platform. The Android module handles wake-lock acquisition, notification channel setup, and the foreground service lifecycle required to function reliably across Android 8 through 14. Detailed documentation and a working example app lower the integration barrier to under an hour for most projects.

Key Features

  • Native CallKit integration on iOS for the standard lock-screen incoming call overlay
  • Android full-screen notification with wake-lock and foreground service for reliable background delivery
  • Unified TypeScript API abstracting platform differences into a single, consistent interface
  • Accept and decline callbacks routable to any WebRTC or SIP signalling handler
  • Caller ID and name display with optional avatar image support
  • Compatible with React Native 0.60+ new architecture bridge and auto-linking
  • MIT licensed with comprehensive example app and integration guide

Tech Stack

React NativeiOSAndroidOpen SourceNative Modules