arcanedev/laravel-settings
Laravel Settings provides a simple, persistent way to manage application settings in Laravel. Store and retrieve settings with database or config drivers, cache support, and an easy-to-use API for global configuration values.
Architecture fit
Unchanged. The package still targets a standard Laravel shape: a service provider with auto-discovery, a publishable config file, a driver-based repository (database by default, with a JSON/file and in-memory option), a Settings facade plus setting() / settings() helpers, and a HasSettings trait adding a polymorphic settings() relation for per-model overrides. That still maps cleanly onto a layered Laravel app — settings behind a repository contract rather than scattered across config/ and ad-hoc key-value tables remains the architectural win. The JSON driver remains a hard no for containerized/multi-node deployments.
Integration feasibility
Still low-to-moderate effort to install, but the release changes the shape of the evaluation. Version 11.0.0 shipped with empty release notes, so we cannot state what changed, what broke, or what was added. The version jump from the previously observed 1.x line to 11.0.0 is almost certainly a renumbering to track the Laravel major (a common convention in this ecosystem), which — if true — would resolve our largest open question about Laravel 11/12 support. That is a hypothesis, not a finding. It must be confirmed by reading composer.json and the CI matrix, not inferred from a version string.
Technical risk Still the dominant concern, and the release slightly worsens the governance picture while potentially improving the compatibility picture.
Unchanged baseline risk: ~73 stars, 0 dependents, a single maintainer with no visible backup, no published security policy, and an internal score of 2.00. There is still no downstream ecosystem to surface regressions.
New since the last assessment:
1.x have no published route to 11.0.0.1.x.y no longer applies; the pin target is now 11.0.0.Remaining unverified risks (carried forward, none resolved by this release):
illuminate/* and PHP 8.3+ constraint ranges and CI coverage.APP_KEY rotation.Key questions for the maintainer / spike
illuminate/* and PHP version ranges are formally supported and CI-tested?Stack fit Best fit: Laravel 11+ on PHP 8.2+, MySQL/Postgres, single-region, Redis available for caching — provisional, pending confirmation that 11.0.0 actually targets Laravel 11/12. If the version number is cosmetic and the framework constraints still top out at Laravel 10, the best fit reverts to the prior assessment (Laravel 9–10, PHP 8.1+). Still a poor fit for multi-tenant SaaS with per-tenant settings at scale, or anything requiring a support SLA.
Migration path
Sequence is unchanged, but add a step zero. (0) Diff the release: pull the latest 1.x tag and 11.0.0, diff composer.json, the service provider, the repository contract, and the migration. Ten minutes of diffing substitutes for the changelog that doesn't exist, and it is the only way to answer questions 1 and 2. Then: (1) inventory settings, classify global vs. per-model; (2) create schema and backfill; (3) put a SettingsService interface in front of the package so call sites never touch the facade; (4) dual-read with fallback to legacy for one release; (5) decommission legacy. The adapter is still the insurance policy.
Compatibility gates
Unchanged in substance, updated in specifics. Install into a branch on our exact Laravel/PHP versions, run the full test suite, confirm no illuminate/support constraint conflict. Pin 11.0.0 exactly, not ^11.0 — with no changelog, we cannot predict what 11.0.1 contains, and a patch release is now an unquantified risk. Confirm the migration is reversible and idempotent. Add one gate: review the 1.x → 11.0.0 diff for API-surface changes before any code is written against it.
Sequencing
composer.json, diff 1.x vs. 11.0.0, check CI status and CHANGELOG presence (~half day). This is now a hard prerequisite, not part of the spike.Maintenance
Unchanged and slightly reinforced: cost is dominated by vendor risk, not code volume. The empty major release is concrete evidence for the scenario we already budgeted for — assume we eventually own the code. A named internal owner, a vendored fork path, and a pinned version must exist from day one. Reassess on every Laravel major upgrade. Concretely: if we adopt 11.0.0 and upstream later drops a 12.0.0 with no notes, we will be re-running the diff exercise with the package already in production. Price that in.
Support Community-only, best-effort, no SLA. If 11.0.0 signals renewed activity, response latency may improve, but nothing in the release commits to that. Incident response comes from our team. Acceptable for admin-configurable settings; not acceptable on the critical request path without the adapter and a tested fallback to static config.
Scaling Unchanged. The read path must be cache-first — settings are read on nearly every request and a per-request DB query will show in p95. The scaling question is consistency, not throughput: after a write, every node must see the new value within a bounded window. If the package offers only TTL expiry, set a short TTL and accept stale reads, or add our own invalidation. If 11.0.0 changed the caching layer, that behavior must be re-verified from scratch — do not carry forward assumptions from 1.x. JSON driver remains a hard no for horizontal scaling.
Failure modes to design for
APP_KEY rotation making encrypted settings undecryptable.Ramp-up Half a day for a mid-level Laravel developer to be productive; the API is small and the release does not appear to change that (pending the diff). The genuine learning curve remains operational: driver choice, cache-invalidation semantics, and the deploy-time migration dependency. Add one item for the runbook: our pinned version, the date, and the diff findings — so the next person does not have to rediscover that the changelog is empty.
Verdict: unchanged in direction, but with a higher bar on evidence. Still acceptable as an internal, low-blast-radius settings store behind our own interface, with an exact version pin and a fork contingency. It is not appropriate as a critical-path dependency without the compatibility gate, the adapter layer, and a named owner. The 11.0.0 release is a net-neutral signal: it may indicate renewed maintenance and Laravel 11/12 support (which would be good), but it shipped with no documentation (which is bad), and we can only resolve the ambiguity by reading the diff. If the triage step or the spike fails on version support or cache coherence, fall back to a thin in-house repository over Eloquent — the package's surface area is small enough that the build cost is comparable to the vendor-management cost.
How can I help you explore Laravel packages today?