Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Web Push Laravel Package

minishlink/web-push

PHP library to send Web Push notifications to browser push endpoints (RFC 8030). Handles VAPID and payload encryption, supports batching and reporting, and works with modern PHP (8.2+) via Composer for integrating push into your backend.

View on GitHub
Deep Wiki
Context7

Web Push library for PHP

Frequently asked questions about Web Push
How do I integrate Minishlink/WebPush into a Laravel application for sending push notifications?
Start by installing the package via Composer (`composer require minishlink/web-push`), then configure VAPID keys in `config/webpush.php`. Use Laravel’s ServiceProvider to bootstrap the WebPush client, and store subscriptions in a database table (e.g., `push_subscriptions`). Dispatch push notifications as Laravel Jobs or queue them via `queueNotification()` for reliability.
What Laravel versions does Minishlink/WebPush support, and how do I use it with older Laravel apps?
The package officially supports PHP 8.2+ (Laravel 10+). For older Laravel versions (e.g., 8/9), use downgraded versions like `v9.x` (PHP 8.1) or `v8.x` (PHP 8.0). However, older versions may lack security patches or modern features. Test thoroughly in staging before production use.
How do I securely store VAPID keys for WebPush in Laravel?
Store VAPID keys (subject, publicKey, privateKey) in Laravel’s `config/webpush.php` or environment variables (e.g., `.env`). For production, use a secrets manager like AWS Secrets Manager or HashiCorp Vault. Avoid hardcoding keys in version-controlled files. Generate unique keys per environment (dev/staging/prod) for security.
Can I batch push notifications to improve performance in Laravel?
Yes, use the `batchSize` and `flush()` methods to batch notifications. Enable `reuseVAPIDHeaders` in the WebPush client to reduce overhead for repeated sends. Dispatch batches as Laravel Jobs or queue them for asynchronous processing. Monitor payload size limits (3052 bytes) to avoid failures.
How do I handle failed push notifications in Laravel with Minishlink/WebPush?
Leverage Laravel’s queue system and `failed_jobs` table to retry failed pushes. Implement exponential backoff in your Job’s `handle()` method. Log failures for analytics (e.g., endpoint errors, payload size issues) using Laravel’s logging or a dedicated table. Use events (e.g., `push.notification.failed`) to trigger cleanup or alerts.
What are the browser-specific quirks I should know when using WebPush in Laravel?
Safari requires an `urgency` field in payloads (default to `'high'`). Firefox/Chrome may expire endpoints; validate subscriptions periodically by sending a test push or checking `expirationTime`. Use `Subscription::isActive()` to filter invalid subscriptions before sending. Always test cross-browser compatibility in staging.
How do I link push subscriptions to Laravel users and manage them in the database?
Create a `push_subscriptions` table with fields like `user_id`, `endpoint`, `keys` (JSON), `is_active`, and `created_at`. Use Laravel’s Eloquent to associate subscriptions with users (e.g., `User::find($id)->subscriptions`). Implement a `validateSubscriptions` Job to clean up expired or inactive subscriptions via a cron schedule.
What are the alternatives to Minishlink/WebPush for Laravel push notifications?
Alternatives include Firebase Cloud Messaging (FCM) via Laravel packages like `kreait/firebase-php` or third-party services like OneSignal or PushBullet. These may offer additional features (e.g., analytics, A/B testing) but require external dependencies. Minishlink/WebPush is ideal for self-hosted, RFC 8030-compliant solutions without vendor lock-in.
How do I test push notifications locally in Laravel before deploying to production?
Use the `web-push-php-example` repo for a complete frontend/backend test setup. Mock subscriptions in your tests and verify payloads with tools like Chrome DevTools (Application > Service Workers). Test VAPID authentication by generating keys per environment and validating the `PushSubscription` object structure. Never use production keys in testing.
What are the performance considerations for sending push notifications in Laravel at scale?
Optimize by batching notifications (e.g., `batchSize: 50`) and reusing VAPID headers. Offload processing to Laravel queues to avoid timeouts. Monitor rate limits from push services (e.g., FCM throttles ~1000 messages/minute). Use database indexing on `endpoint` and `user_id` for faster subscription lookups. Compress payloads (e.g., gzip) if approaching the 3052-byte limit.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky