Full-Screen Notification Support (for incoming calls)
Joy James
Add support for displaying full-screen notifications on both Android and iOS — similar to WhatsApp, Telegram, or Zoho Cliq — to enable incoming call or urgent alert experiences directly through Expo Notifications without requiring ejecting or native modules.
Motivation
Currently, Expo’s expo-notifications API supports displaying high-importance notifications, actions, and categories.
However, there’s no way to display a full-screen notification that can wake the screen, bypass the lock screen, or launch a specific activity/view — which is essential for:
Incoming call UIs (VoIP or video calls)
Alarm-style urgent alerts
Emergency or real-time attention events
These are standard capabilities in native Android (fullScreenIntent) and iOS (via CallKit), but there’s no managed Expo-level support yet.
Proposed Solution
Add a property to displayNotification() like:
await Notifications.displayNotificationAsync({
title: 'Incoming Call',
body: 'John is calling...',
android: {
category: 'call',
importance: Notifications.AndroidImportance.HIGH,
fullScreenIntent: true, // 👈 new property
fullScreenAction: 'IncomingCall', // optional target view
},
ios: {
fullScreen: true, // optional; may require CallKit integration
},
});
This would internally use:
Android: NotificationCompat.Builder.setFullScreenIntent()
iOS: Integrate with CallKit or allow a custom full-screen modal when unlocked.
Benefits
Enables true calling experiences in Expo-managed projects (like WhatsApp or Cliq).
Removes the need to eject or use libraries like react-native-callkeep or notifee.
Allows apps to handle real-time communication flows entirely in Expo.