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

Settings Bundle Laravel Package

jbtronics/settings-bundle

Symfony bundle for managing typed application settings with a clean PHP API, Doctrine storage, validation, and DI integration. Define settings as classes, inject them anywhere, and edit values via forms or CLI.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for admin-configurable settings. Rather than have engineering ship a bespoke settings table + CRUD + validation layer (typically 1–3 sprints plus ongoing maintenance), this bundle provides typed settings definitions, persistence, form integration, and caching out of the box. The PM decision is whether settings infrastructure is core differentiation (build) or undifferentiated plumbing (adopt).
  • Roadmap for self-serve administration. It enables a roadmap item like "let ops/marketing change pricing tiers, email templates, feature toggles, and integration keys without a deploy" — a common high-value, low-glamour initiative that reduces support tickets and deploy frequency.
  • Reducing configuration-change lead time. Every hard-coded value that becomes a typed setting converts a future engineering ticket into an admin action. This is a measurable product metric (time-to-change, eng hours reclaimed per quarter).
  • Feature gating and staged rollout (limited scope). Typed boolean/enum settings can back simple feature flags for internal or admin-level rollouts. It is not a replacement for a dedicated experimentation/flag platform, but it is sufficient for coarse, low-cardinality toggles.
  • Multi-environment and per-tenant configuration — useful if the product needs environment-specific or customer-specific values without code branches.
  • Buy-in signal for architecture: adopting a settings abstraction is a commitment to keeping configuration out of code, which shapes how future features are specified in PRDs (every configurable value becomes a typed setting with validation and a default).

Important caveat for every decision record: this is a Symfony bundle, not a Laravel package. If the product is on Laravel, this is not directly adoptable — evaluate the same product need against Laravel-native options (e.g., spatie/laravel-settings) or a framework-agnostic alternative. The product need is identical; the vendor choice is not.

Platform-floor caveat added in v5.0.0: the bundle now requires PHP 8.2+ and Symfony 7.4+, and the release changes ParameterMetadata::getPHPType() to return symfony/type-info Type objects instead of strings. Two consequences for planning: (1) any app not already on Symfony 7.4 is excluded from v5 and must stay on the 4.x line, which is a support-lifetime decision, not just an upgrade ticket; (2) any custom setting types, admin-UI widgets, or introspection code that reads the PHP type as a string will break and needs a migration task scoped before adoption or upgrade. This is a major-version, breaking-change release — treat it as a project, not a version bump.

When to Consider This Package

Adopt when:

  • The application is Symfony 7.4+ on PHP 8.2+, and already uses Doctrine and Symfony Forms — the bundle's value is largely in that integration. (Apps on Symfony 5.4/6.x/7.0–7.3 can still use the 4.x line, but are now on a maintenance branch and should factor that into the dependency decision.)
  • You need typesafe, validated, admin-editable settings with sane defaults, injected via the DI container rather than read ad hoc from $_ENV or a generic key-value table.
  • The team is small and would otherwise defer building settings CRUD indefinitely; the bundle front-loads a capability that typically pays back within a few features.
  • You can tolerate a single-maintainer, low-adoption dependency (≈95 stars, 0 dependents) and are prepared to pin versions, read the source, and fork if necessary.
  • You can absorb major-version upgrade cadence: v5.0.0 is a breaking release with a raised platform floor and a changed public API surface, so plan for a migration review on each major bump rather than assuming drop-in upgrades.
  • Read volume is moderate and the bundle's caching behavior fits your performance envelope.

Look elsewhere when:

  • You are on Laravel. This package does not apply; do not let the "PHP" framing obscure a hard framework boundary.
  • You are on Symfony 6.x LTS or Symfony 7.0–7.3 and cannot move soon. Remaining on 4.x means no further features, and eventually no fixes — weigh that against the effort of a native settings implementation.
  • You need enterprise-grade feature flagging: percentage rollouts, targeting rules, audit trails, approval workflows, SDKs across services, or experiment analysis.
  • You need audited, approved, or scheduled configuration changes (regulated environments, finance, healthcare) — lightweight settings bundles generally do not provide change history or four-eyes approval.
  • You have high-cardinality or multi-tenant-at-scale configuration where per-request cache invalidation and storage layout become a real design problem.
  • Supply-chain risk tolerance is low. Zero dependents plus a single maintainer means no ecosystem pressure-testing, and a breaking release can land directly on your team. The v5.0.0 platform jump illustrates the risk: an upstream decision to require the newest Symfony compels a coordinated upgrade on your side.
  • You need cross-service configuration consistency — a bundle scoped to one Symfony app will fragment config across services.

How to Pitch It (Stakeholders)

For executives (one paragraph): We can give operations and marketing direct control over a class of product settings — pricing display, onboarding copy, integrations, staged feature toggles — without engineering involvement or a deploy. The alternative is building and maintaining that capability ourselves: roughly a sprint up front plus ongoing upkeep. The library is MIT-licensed and free, so the investment is integration time and a small amount of dependency risk rather than license spend. The measurable return is fewer engineering tickets for configuration changes and faster time-to-change on marketing and ops requests. The latest major version raises our platform baseline (PHP 8.2+ and the newest Symfony), so part of the cost is a framework upgrade we may already be planning — worth confirming before we commit.

For engineering (one paragraph): jbtronics/settings-bundle gives us typed settings classes with validation, Doctrine-backed persistence, Symfony Form integration for the admin UI, and caching — injected through the DI container instead of scattered getParameter/getenv calls. It removes a class of config-sprawl bugs and gives us one place to change defaults. The trade-offs are explicit: it is Symfony-only, ~95 stars, zero dependent packages, single-maintainer. The new v5.0.0 is a breaking release — it requires PHP 8.2+ and Symfony 7.4+, and ParameterMetadata::getPHPType() now returns symfony/type-info Type objects instead of strings, which will break any custom setting types or admin widgets that parse the type as a string. So: adopt deliberately, pin the version, read the persistence and cache code, scope the type-info migration as its own ticket, and treat a fork as a realistic contingency. If we're on Laravel, this evaluation does not carry over — re-run it against a Laravel-native equivalent.

Recommendation: Validate framework fit first; if the stack is Laravel, close this evaluation and re-scope the product decision to a Laravel-native option. If the stack is Symfony, confirm we are on or can reach Symfony 7.4 / PHP 8.2+, budget the getPHPType() migration, and adopt v5 behind a thin internal abstraction so the dependency stays swappable. Apps that cannot move to Symfony 7.4 yet should pin 4.x with a written plan for when that branch stops receiving fixes.

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.
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource
noith/settings