- What is thomasjohnkane/snooze used for in a Laravel application?
- Snooze is a Laravel package for deferring and rescheduling notifications and reminders using an Eloquent-backed model. It is designed for cases like reminding a user in three days and letting them change that date, without adding bespoke cron jobs or scattering dispatch()->delay() logic through your codebase. It is a thin scheduled-notification layer, not a workflow engine or CRM cadence tool.
- How do I install and configure Snooze in Laravel?
- Install it with Composer, then publish the package migration and config file and run the migration. Add the provided trait to the relevant notifiable models and schedule notifications through the package's fluent API. You also need working queue workers because Snooze sends notifications through queued jobs.
- Does Snooze support Laravel 13?
- Yes, Laravel 13 support was added in release 2.9.1 via PR #144. That release contains no API, migration, or config changes. Before relying on it, confirm that Laravel 13 is generally available on your target timeline and check the package's composer constraints for the exact framework and PHP requirements.
- What Laravel and PHP versions does Snooze 2.9.1 require?
- The package declares support across multiple Laravel majors, and Laravel 13 support was added in 2.9.1. The release notes do not state a Laravel 13 baseline version, so the constraint may target a pre-release or newly GA framework. Check composer.json rather than assuming your currently pinned Laravel and PHP versions are supported.
- How is Snooze different from using dispatch()->delay() or custom cron jobs?
- Snooze stores a send_at timestamp on a Snooze model with a morph relation and dispatches the queued notification at that time. That gives you a consistent, queryable place to manage deferred reminders and let users reschedule them. Hand-rolled delay() calls and custom scheduled-jobs tables work, but they spread deferral logic across call sites and require more bespoke maintenance.
- Can Snooze handle complex drip campaigns or per-user timezone scheduling?
- No, Snooze is intentionally narrow and does not try to be a scheduler, workflow engine, or CRM-style cadence tool. Complex drip sequences, per-user timezone rules, and fan-out orchestration need additional application logic or a different package. Snooze fits the common case of deferring a notification and allowing the recipient to change the date.
- What happens if a notification or notifiable model is deleted while a snooze is pending?
- The provided evaluation does not document this behavior, so test it against your application's models and queue setup. Because Snooze stores a morph relation to the notifiable, deleting the related record can leave an orphaned snooze row and may cause the queued job to fail or be skipped depending on your queue configuration. Add cleanup or guarding logic if deletions are common.
- Does Snooze guarantee exactly-once delivery of snoozed notifications?
- Exactly-once semantics are not documented in the available evaluation, so do not assume them. Snooze dispatches queued notifications at the stored send_at time, which means normal queue retry behavior can potentially duplicate a send if a job fails after delivery. If duplicate reminders are unacceptable, add idempotency checks in your notification or job handling.
- Is Snooze safe to use in production, and what are the maintenance risks?
- Technical risk for the 2.9.1 change is low because it only adds Laravel 13 support with no API, migration, or config changes. Dependency risk is moderate: the release has a small maintainer footprint and bus factor is the dominant long-term concern. Reliability also depends on queue and scheduler health, since a backed-up queue or stopped scheduler will silently delay every reminder.
- How do I upgrade from Snooze 2.9.0 to 2.9.1, and can I fork it if needed?
- Treat 2.9.1 as a version bump plus a smoke test because there are no API, schema, or config changes. Existing 2.9.x users are not forced into a migration. The codebase is small enough that forking and vendoring is a reasonable contingency if maintainer availability becomes a problem.