akyos/native-push
akyos/native-push is a Laravel package for sending native push notifications to mobile apps. It simplifies device token management and message delivery, making it easier to add iOS and Android push support to Laravel projects.
.p8 key and FCM service account directly.akyos/ux-native-cli --notification; this is the notification backbone for that toolchain, so it directly gates any roadmap item that assumes re-engagement (order updates, alerts, transactional events, deep links back into the app).PushDevice storage with deduplication, automatic reassignment, and dead-token pruning is a real piece of product logic (multi-user devices, reinstalls, hand-me-down phones). Keeping it in your own database means you can join it against your user model for support and reporting.Adopt when:
Transport/Notifier abstractions (this is a native-push://default transport, not a standalone SDK).PushSubjectInterface — the package's user model is Doctrine-centric. Teams running pure Eloquent models should treat ORM fit as an explicit spike item before committing; a thin adapter might be trivial or might be a real cost, and that should be proven, not assumed.url() deep links..p8 key rotation, FCM service-account secrets, APNs HTTP/2 connectivity, and certificate/credential expiry monitoring.POST/DELETE /native-push/devices, the Stimulus controller, and the check / test / send / devices commands — as a meaningful reduction in glue code.Look elsewhere when:
Adoption risks to price in: first stable release with no prior public assessment, so treat the API as stabilizing rather than frozen; push cannot be meaningfully tested in CI without real devices or provider sandboxes; and the operational ownership of credentials is a permanent, recurring cost, not a one-time setup.
For executives (one paragraph): This is a small, focused library that lets our applications send native iOS and Android push notifications directly through Apple and Google, using our own credentials, with no third-party push vendor in the middle. It removes a per-subscriber subscription line and a data processor from our stack, keeps device data inside our own systems, and it arrives with the plumbing already built — device registration endpoints, token cleanup, and admin commands — so the incremental engineering effort is small. The trade-off is that we take on credential management and we forgo the campaign tooling a vendor would bundle. My recommendation is to adopt it where we need straightforward notifications and deep links, and to keep a vendor on the table only if marketing-led campaigns become a near-term requirement.
For engineering (the short version): Standard Symfony Notifier transport (native-push://default) over APNs HTTP/2 with a .p8 key and FCM HTTP v1 with a service account. Entities opt in via PushSubjectInterface + PushSubjectTrait. Ships device persistence with dedupe, reassignment, and dead-token removal, plus a url() deep link, optional device endpoints, a Stimulus controller, and four Artisan/console commands. Because it sits on the Notifier abstraction, the transport is swappable — so the lock-in is low and the decision is reversible. Two things to validate in a spike: the Doctrine-entity assumption against our actual models, and our on-call story for expired Apple/Google credentials.
How can I help you explore Laravel packages today?