Files
laravel-shopping-cart/.claude/skills/laravel-best-practices/rules/events-notifications.md
T
2026-04-09 16:06:44 -06:00

1.6 KiB

Events & Notifications Best Practices

Rely on Event Discovery

Laravel auto-discovers listeners by reading handle(EventType $event) type-hints. No manual registration needed in AppServiceProvider.

Run event:cache in Production Deploy

Event discovery scans the filesystem per-request in dev. Cache it in production: php artisan optimize or php artisan event:cache.

Use ShouldDispatchAfterCommit Inside Transactions

Without it, a queued listener may process before the DB transaction commits, reading data that doesn't exist yet.

class OrderShipped implements ShouldDispatchAfterCommit {}

Always Queue Notifications

Notifications often hit external APIs (email, SMS, Slack). Without ShouldQueue, they block the HTTP response.

class InvoicePaid extends Notification implements ShouldQueue
{
    use Queueable;
}

Use afterCommit() on Notifications in Transactions

Same race condition as events — the queued notification job may run before the transaction commits.

Route Notification Channels to Dedicated Queues

Mail and database notifications have different priorities. Use viaQueues() to route them to separate queues.

Use On-Demand Notifications for Non-User Recipients

Avoid creating dummy models to send notifications to arbitrary addresses.

Notification::route('mail', 'admin@example.com')->notify(new SystemAlert());

Implement HasLocalePreference on Notifiable Models

Laravel automatically uses the user's preferred locale for all notifications and mailables — no per-call locale() needed.