astrogoat/go-load-up
Go Load Up is a lightweight Laravel package by Astrogoat that simplifies loading data and relationships in your application. It provides practical helpers to keep Eloquent queries clean, reduce boilerplate, and make on-demand loading easier to manage so you can focus on building features.
What it is (per description, medium confidence). astrogoat/go-load-up is a bootstrapping-orchestration package: it lets a Laravel app register named "loaders," runs them in a predictable, configurable order, filters them by environment, and wires the whole thing in through a service provider. That is a registry plus an ordered execution loop — an in-process, no-datastore, no-daemon pattern. From a TPM standpoint this is the most favourable shape a package can have: the blast radius is bounded to application boot, the semantics are observable (things either ran or they didn't), and it is cheap to isolate behind a seam. Contrast that with packages that patch middleware, patch the container, or own migrations — this is not one of those, on the current evidence.
Architecture fit. The package earns its keep only in apps where provider boot() methods have become a junk drawer: cache warmers, feature-flag sync, config hydration, view composers, tenant resolution, third-party SDK initialization, all interleaved and mutually order-dependent. In that world the value proposition is real — explicit ordering plus conditional execution beats implicit provider registration order, which is the classic "why did this work locally but not in prod" bug. The fit is poor for: single-purpose apps with two or three providers; teams already using framework-native ordering (Laravel's provider boot order, bootstrap/app.php, or Application::booted() callbacks); and any app running Octane or Swoole where boot semantics differ sharply from PHP-FPM.
The overlap question is the first one to answer, not the last. Modern Laravel ships real boot-ordering and deferred-provider machinery. Before anything else, the evaluation must state what this package does that the framework does not. If the answer is "a nicer DSL over the same thing," the cost/benefit is thin. If the answer is "deterministic ordering with conditional filtering and a testable registry that the framework has no equivalent for," it is worth a spike. The description implies the latter; the description is marketing copy.
Technical risk (medium, gated on unknowns).
APP_ENV are exactly how staging and production drift apart invisibly.Key questions to close before adoption.
git diff 2.9.0..2.10.0 -- src/ config/)ServiceProvider::boot() ordering and Application::booted()?Stack fit. Standard Composer + service-provider integration, consistent with a normal Laravel package. No runtime, daemon, or datastore implied. Confirm by reading composer.json require/require-dev and the provider's register/boot. If the manifest reveals a hard illuminate/* floor above our current major, that is a stop sign, not a negotiation.
Migration path. Two viable shapes, and the choice matters:
Do not attempt a big-bang reordering of existing providers. Boot-order refactors fail in ways that tests catch late.
Compatibility. Pending the manifest read, the matrix is blank. Required outputs: supported Laravel majors, PHP floor/ceiling, whether it publishes a config file (we then own that file and its drift forever), whether it double-registers via extra.laravel.providers and config/app.php after an upgrade, and whether ordering behaviour is stable under php artisan config:cache. Also check queue workers and scheduled commands — they boot too, and a loader designed for HTTP may run in places you did not intend.
Sequencing. Step 1 blocks everything else and costs under an hour.
composer.json, and the service provider. Record constraints, registration surface, and extension points (events, bindings, macroable classes).2.10.0, not ^2.10).Maintenance. Recurring cost is config ownership plus upgrade review. Because release notes are machine-generated, every future bump requires a manual diff read — an unbudgeted, permanent tax. Pin exactly and batch upgrades into a scheduled review window; do not let ^2.10 float. If the package publishes config, that file becomes ours and must be tracked alongside app/ config for drift.
Support. Community-supported with no SLA, no visible security policy, no LTS commitment, no issue-response history to point at. Any production dependency needs an internal owner of record and a documented removal path, because "wait for upstream" is not an incident response.
Scaling. This is the highest-variance operational question and it depends entirely on runtime model. Under PHP-FPM, boot runs on every request — any loader doing IO (cache warm, remote fetch, filesystem scan) becomes a linear per-request latency tax that compounds under load. Under Octane/Swoole, boot runs once per worker, which is cheap but introduces state-lifetime questions that FPM hides. Neither is disqualifying; both must be measured rather than assumed. Also note that ordering complexity scales with loader count — five loaders with dependencies are auditable, fifty are not.
Failure modes and mitigations.
Ramp-up. Low for a Laravel-fluent engineer: composer require, publish config, register one loader, exercise one path. Budget roughly half a day to first working integration, plus one day for the sandbox spike and risk memo. No specialist knowledge should be required; if the spike reveals otherwise, that is itself a finding.
Recommendation: Hold, pending a one-hour read. This is a plausibly useful, low-blast-radius package that solves a real problem (provider boot-order sprawl) at the cost of a dependency with zero adoption signal and machine-generated release notes. Do not adopt on the strength of a version number. Close the seven key questions, then re-issue this assessment with confidence raised from unknown to measured — or decline, if question 2 shows the framework already covers it.
How can I help you explore Laravel packages today?