Proof

expo-notifications

real local notification delivery via browser Notification + sootsim in-engine overlay, plus push notifications from Detox sendUserNotification and launchApp({ userNotification }) dispatched the way DetoxUserNotificationDispatcher dispatches them (willPresent for an active app, the tap response otherwise and at launch, held until the emitter exists); full upstream API surface present; matches iOS-simulator behavior where APNs registration silently fails. per docs/compat-scoring.md "score it high only when the full public API surface is present and returns the same unavailable/clean state an app should expect in development."
95%
API coverage
No visual proof cases have been published for this package yet. The registry summary below describes what the compat layer implements.
Working (22)
getPermissionsAsync/requestPermissionsAsync through the shared system permission registryscheduleNotificationAsync (fires real browser Notification when host capability allows, plus the in-engine banner)cancelScheduledNotificationAsynccancelAllScheduledNotificationsAsyncgetAllScheduledNotificationsAsyncgetPresentedNotificationsAsyncdismissNotificationAsyncdismissAllNotificationsAsyncsetBadgeCountAsync (navigator.setAppBadge if available)getBadgeCountAsyncaddNotificationReceivedListener/ResponseReceivedListener/DroppedListener/PushTokenListenergetLastNotificationResponseAsync + syncclearLastNotificationResponseAsync + syncuseLastNotificationResponse hookgetNextTriggerDateAsyncsetNotificationHandlerpresentNotificationAsyncpush notifications dispatched like Detox (onDidReceiveNotification with trigger { type: push, payload } and data from the user info body, tap responses with action identifier and user text, the launch tap as the last response)the native handler timeout presenting with the default optionschannel + channel-group CRUDcategory CRUDAndroidImportance/AndroidNotificationVisibility/IosAuthorizationStatus/PermissionStatus enums
Missing
real push token registration (getDevicePushTokenAsync returns a placeholder UUID — there is no FCM/APNs provisioning, service-worker push subscription, or backend-uploadable token); background task delivery (registerTaskAsync/unregisterTaskAsync/isTaskRegisteredAsync are noops — service-worker push wiring is not implemented); scheduled-notification persistence across reload (setTimeout-only — page refresh drops the queue); subscribeToTopicAsync/unsubscribeFromTopicAsync FCM topic binding; setAutoServerRegistrationEnabledAsync; push notifications arriving from APNs or simctl push (only the Detox dispatch path exists, so there is no system banner for a push to a backgrounded app and no didReceiveRemoteNotification background delivery)