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

Cron Bundle Laravel Package

gemorroj/cron-bundle

A Symfony bundle for defining and running scheduled cron jobs from your application. Configure recurring console commands, manage cron-style tasks, and execute due jobs with a single runner command—ideal for automating maintenance, imports, notifications, and other background work without editing sy...

View on GitHub
Deep Wiki
Context7

Getting Started

Read this first: the 4.0.0 release note contains exactly one fact — the package targets PHP 7.2. There is no changelog, no feature list, no deprecation notice, and no package metadata was supplied with this review. Treat 4.0.0 as an audit task, not a drop-in upgrade, and do not assume the major bump is cosmetic. A semver major with a one-line note usually means either (a) the only change is the platform requirement, or (b) the notes are incomplete and breaking API changes are undocumented. You must determine which before scheduling the upgrade.

Minimal steps before touching composer.json:

  1. composer show <vendor>/<package> --all — read the declared require block yourself. The critical question is whether it says "php": "7.2.*" (an exact pin, which locks you to an EOL runtime and blocks PHP 8 entirely) or "php": "^7.2 || ^8.0" (a floor, which is fine). This single string decides whether the package is usable in any modern Laravel app.
  2. composer why <vendor>/<package> — establish whether it is a direct dependency or pulled in transitively. Transitive dependencies must be upgraded by their own parents; editing your root composer.json will not help.
  3. Diff the source, not the notes: git diff 3.x..4.0.0 -- src/ config/ or the GitHub compare view. Grep the diff for public function, class, and interface to find renamed or removed surface area, and for @deprecated removals.
  4. Look for UPGRADE.md / CHANGELOG.md / a migration guide in the tag. If none exists, scan the test suite diff — the changed tests are the de facto specification of what 4.0.0 expects.

First use case: stand the package up in a throwaway branch against your current Laravel version and run php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider" followed by your existing test suite. The publish step confirms the service provider still boots and the config file shape has not silently changed — the most common quiet breakage in a major bump.

Compatibility reality check (PHP minimums per Laravel release, for planning):

Laravel Min PHP
6 LTS 7.2
8 7.3
9 8.0
10 8.1
11 8.2

If 4.0.0 genuinely requires PHP 7.2 exactly, it is only installable on Laravel 6/7-era stacks, and the EOL date to weigh is November 2019 — no security patches since. That is the headline of this assessment.

Implementation Patterns

Pin the major, upgrade on a branch, ship behind a flag. Use "<vendor>/<package>": "^4.0" only after the audit above. Never "*" or "dev-master" for a package whose changelog is a single line — you have no signal to detect a 4.0.1 breaking patch.

Isolate the package behind your own adapter. For a major release with undocumented changes, wrap the package's public API in a single application-level service (e.g. App\Support\FooGateway) that you bind in a service provider. Consumers type-hint your interface, not the vendor class. When 4.0.1 renames a method, you patch one file. This also makes the package swappable if the EOL platform constraint forces you off it.

Constructor injection over facades in application code. Facades are fine for terse controller/Blade usage, but injected contracts are what let you $this->swap() or $this->mock() cleanly in tests. Reserve the facade for one-liners and resolve the underlying class everywhere else.

Config-driven, environment-aware setup. Publish the config, then commit it — do not rely on package defaults, which majors are free to change. Keep secrets in .env and reference them from config/<package>.php. After any config edit run php artisan config:clear locally and php artisan config:cache in deploy; a stale cached config is the single most common "the package ignores my settings" cause.

Test doubles at the boundary. Use the package's fake()/swap() if it ships one; otherwise $this->instance(Contract::class, $double) in a test service provider. Assert on your adapter's behaviour rather than the vendor's internals so 4.x internals churn does not rewrite your test suite.

Queue and transaction hygiene. If the package dispatches jobs or events (webhooks, syncs, indexing), check the diff for changes to dispatch timing. Anything that fires inside a DB transaction should be dispatchAfterCommit() or afterCommit-configured, or you will process work for rows that roll back.

Staged rollout for the upgrade itself. Merge the dependency bump as its own commit with no behavioural changes, run the suite, then apply any required API migrations as a second commit. Bisecting a combined diff against an undocumented major is painful.

Gotchas and Tips

  • PHP 7.2 is EOL (Nov 2019). No security fixes, and it cannot run PHP 8 syntax (attributes, union types, match, constructor promotion, named arguments). If 4.0.0's require block is an exact 7.2.* pin, composer update on a Laravel 9+ app will fail resolution outright — and that failure is a feature, not an obstacle to route around.
  • Do not reach for --ignore-platform-reqs. It silences the resolver while leaving you with a package that may call 7.2-era functions on an 8.x runtime, or vice versa. If you are tempted, that is the signal to replace the package.
  • composer.json platform overrides are a trap in CI. A "config": { "platform": { "php": "7.2" } } block left over from an old pipeline makes local resolution diverge from production; check before blaming the package.
  • Major version ≠ drop-in. Assume removed methods, changed method signatures, renamed config keys, and moved namespaces until the diff proves otherwise. Run the upgrade on a branch, and read the deprecation warnings emitted by the previous version (3.x) first — those name exactly what 4.0 removes.
  • Sparse release notes are a maintenance signal. A one-line 4.0.0 note, combined with a runtime pinned to a 2019 EOL, suggests low maintenance velocity. Factor that into whether you adopt it for new work or hold the existing major and plan an exit.
  • Stale caches mimic broken packages. php artisan optimize:clear (or config:clear + cache:clear + view:clear) before filing a bug. Also confirm composer dump-autoload ran after the upgrade so new/renamed classes resolve.
  • Publishing with --force overwrites your edits. Use --force only to deliberately re-baseline config, and diff the result against version control before committing. Prefer vendor:publish without --force and merge by hand.
  • Debugging: php artisan about for the runtime picture, composer show -t for the dependency tree (is the package even on the version you think?), and php artisan tinker to app()->make() the binding and inspect the resolved instance and its config. Wrap calls in Log::debug() at your adapter boundary so vendor behaviour is observable without a debugger.
  • Extension points worth checking in the diff: whether the service provider still binds an interface (and whether the bound concrete changed), whether custom drivers/managers are still registered via an extend()-style API, and whether the package exposes Macroable traits. These are the seams that let you work around gaps without forking.
  • Vendor the config into version control so config-key changes in 4.x surface as a readable diff in review rather than silent runtime default drift.
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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings