This gives you remote and local push through Expo's push service: src/lib/push.ts implements the shim, src/hooks/use-push-token.ts is a provider-free store that checks permission and calls getExpoPushTokenAsync({ projectId }) with the id from Constants.expoConfig.extra.eas.projectId, and PushProvider (order 80) installs the foreground handler, creates the Android default channel, and deep-links to data.url when a notification is tapped - including from a cold start. If you set up with --with-examples there's also an example screen at /examples/push with a copyable token and a local test notification. Either way you get a bun run push:test script that sends one message through Expo's API. @/lib/push keeps the same API whichever option you pick - pick this when you want push without running your own APNs and FCM plumbing.
At a glance
- Runs in Expo Go
- No - needs a development build
- Files added
- 7
- npm packages
- 4
- Keys to paste
- None
- Included in
- Pro
Set it up
bun run setup --push expo-notificationsSetup copies the module in, installs SDK-matched versions and removes the options you did not pick. Then bun run doctor lists every key still missing, with a link to where you get it. The step-by-step guide is in the Expo Notifications docs.
Get it
Expo Notifications ships in Pro: one payment, lifetime updates. See pricing or browse every module.