Weave 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

Snooze Laravel Package

thomasjohnkane/snooze

Snooze is a Laravel package for temporarily pausing scheduled commands, letting you snooze automated tasks for a set period and resume them later without editing your scheduler. Useful for maintenance windows and ad-hoc control.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit Snooze (thomasjohnkane/snooze) is an Eloquent-backed scheduled-notification layer for Laravel. It fits naturally into applications with existing notification infrastructure (Notifiable models, Notification classes, queue workers) that need deferred or user-rescheduled delivery. Architecturally it is a thin wrapper: a Snooze model with a morph relation dispatches queued notifications at a stored send_at timestamp. It does not attempt to be a scheduler, workflow engine, or CRM-style cadence tool, so it will not accommodate complex drip sequences, per-user timezone rules, or fan-out orchestration on its own. For the narrow, common case — "remind this user in 3 days, and let them change that date" — it is a good fit and avoids bespoke cron jobs or dispatch()->delay() logic scattered through the codebase.

Integration feasibility High. The package publishes a migration and a config file, exposes traits and a small fluent API, and requires only that host models use standard Laravel notifiable behaviour. Release 2.9.1 is a single change: added Laravel 13 support in PR #144. No API changes, no migration changes, no config changes. Integration is an afternoon of work for a mid-level engineer, plus review.

Technical risk Low for the change itself; moderate for the dependency posture. Specific risks:

  • Laravel 13 support is newly declared. The release note does not state a Laravel 13 baseline version, so the constraint may target a pre-release or newly-GA framework. We need to confirm Laravel 13 is on our supported path before treating this as a reason to adopt.
  • Small maintainer footprint. Two contributors on the current release, one of them a first-time contributor. Bus factor is the dominant long-term risk.
  • Reliability depends on queue and scheduler health. Snooze sends via queued jobs; a backed-up queue or a stopped scheduler silently delays every reminder. This is an inherited property of any deferral mechanism, but it concentrates the blast radius.
  • No prior assessment exists, so there is no regression baseline. We are evaluating this release as a first-time adoption, not a diff.

Key questions

  • Is Laravel 13 GA or pre-release in our target timeline, and what PHP version does it require?
  • Does 2.9.1 raise or lower the minimum supported Laravel/PHP versions, and does that break our current pinned framework?
  • Is there a documented upgrade path from 2.9.0, and what test coverage backs the Laravel 13 claim?
  • Who owns this package if the current maintainer steps away? Is the code small enough to fork and vendor?
  • Does it deliver exactly-once semantics per snoozed item, or can retries duplicate sends?
  • How does it behave if the referenced notifiable or notification class is deleted while a snooze is pending?

Integration Approach

Stack fit Snooze assumes Laravel conventions: Eloquent, service container, queue API, and notification channels. If the target application is on a current Laravel LTS and already runs queue workers, it slots in with no architectural negotiation. If the application relies on a database queue without a supervised worker, or uses a non-standard notification pipeline, the value drops sharply and the package becomes an extra moving part.

Migration path Greenfield adoption is straightforward: install, publish the migration and config, run the migration, add the trait to relevant models, schedule notifications through the fluent API. For teams currently hand-rolling deferred sending via delay() or a custom scheduled-jobs table, migration means backfilling pending rows and redirecting call sites — manageable but non-trivial if the existing schema is already load-bearing. Because 2.9.1 carries no schema or API change, it does not force a migration on existing 2.9.x users; the safe upgrade is a version bump plus a smoke test.

Compatibility The package declares support across multiple Laravel majors. Laravel 13 was added in this release, which implies the constraint now spans a wide range — verify it does not include future majors we have not validated. Pin the constraint in our composer.json rather than floating, and test on the exact framework version we deploy. PHP version range should be confirmed against our runtime image.

Sequencing

  1. Confirm Laravel 13 status, and whether our application is on it or still on an earlier major; if the latter, 2.9.1 changes nothing for us.
  2. Pin and install in a non-production environment; run the published migration.
  3. Build a thin internal wrapper around the package API so our call sites do not depend on its surface directly.
  4. Validate delivery timing, queue retry behaviour, and timezone handling against real worker and scheduler config.
  5. Roll out one low-risk notification flow, observe for two weeks, then expand.

Operational Impact

Maintenance Ongoing cost is low if wrapped. The package is small, and the surface we use is a fraction of it. The real maintenance task is watching upstream releases: with a narrow maintainer base, we should subscribe to releases and security advisories and be ready to fork. Vendor the package if the dependency sits on a critical path.

Support Community-supported open source, no vendor. Internal knowledge should not live in one engineer — document the wrapper and the failure modes. Because 2.9.1 was contributed by a first-time contributor, expect upstream review latency on future framework compatibility patches; budget for a delay when the next Laravel major lands.

Scaling Snooze scales with our queue and database, not independently. Pending snoozes are rows; at high volume the table grows continuously and needs pruning or archiving of sent items, plus an index on the send-time column for the dispatch query. Dispatch cadence is driven by the scheduler, so throughput ceiling is set by scheduling frequency and worker concurrency. This is fine for tens of thousands of pending reminders; at millions, revisit.

Failure modes

  • Scheduler down: nothing sends, silently. Needs an alert on pending-past-due count.
  • Queue backlog: reminders arrive late rather than not at all; acceptable for many use cases, not for time-critical ones.
  • Duplicate dispatch: if the job is retried after a partial success, the user may receive the same notification twice. Verify idempotency handling.
  • Dangling references: deleted notifiable or notification class produces orphaned rows or noisy errors.
  • Migration rollback: the package table becomes our data; a rollback loses pending reminders. Back up before any schema work.
  • Table growth: unbounded accumulation degrades dispatch queries over time.

Ramp-up A Laravel-fluent engineer can read the whole package in a few hours; integrating a first notification flow is roughly a one-to-two-day task including tests. The learning curve is almost entirely in the surrounding Laravel concepts — queues, schedulers, notification channels — not in Snooze itself. Plan half a day of onboarding for a second engineer on the wrapper and runbook.

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.
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk