@buoy-gg/notifications
Inspect Expo notification receipt, responses, presentation decisions and device tokens in React Native and Buoy Desktop. Desktop also sends APNs payloads to explicitly selected iOS simulator apps.
Desktop and mobile open with the same editable notification preview and a Send notification button. The result updates on the same screen when the connected app receives or responds to it. Mobile schedules a local notification on the current device; desktop injects a push into the selected iOS simulator. Options contains custom data and delivery controls, with raw APNs payloads, saved notifications, and send history available on desktop. Activity contains captured events and their payloads. The settings button opens capture controls, permissions, and device tokens on desktop and mobile.
import * as Notifications from 'expo-notifications';
import { installExpoNotificationCapture } from '@buoy-gg/notifications';
// Run in the app entry point before rendering the root component.
export const notificationRecorder = installExpoNotificationCapture(Notifications, {
appId: 'com.example.myapp',
providerVersion: '56.0.25',
});
Use an app-specific Expo development build with expo-notifications configured. Pass the app's existing SDK; this package does not install a native notification module. Core discovers the preset and sync adapter when installed.
The recorder uses bounded persistent history and continues during a desktop disconnect. A new development installation starts a 30-minute capture session. Re-arm or stop it in the inspector. Cold-launch testing requires a persistent storage backend, which the panel reports.
Capture preserves the app's notification policies and handlers. Opt-in wrappers observe presentation and background-task results. Token registration is explicit. Raw APNs payloads remain unchanged; the Expo composer places custom data in the top-level body object.
Release capture is off unless the app explicitly enables it. Release sync still requires Buoy's Pro and external-sync opt-in. Android and third-party notification providers have different delivery paths; this release's native validation covers Expo 56 on iOS.
See the setup and testing guide for the integration, limits and supported flows.
Apps can pass optional preview branding to installExpoNotificationCapture: appName, a base64 PNG/JPEG/WebP iconUri (up to 32 KB), and six-digit hex backgroundColor and textColor. The same preview appears on mobile and on desktop when the selected app matches. This styles the Buoy preview; the operating system controls the actual notification banner.