asseco-voice/laravel-custom-fields
Extend Laravel Eloquent models with user-defined custom fields, no schema changes needed. Define fields per model, store values flexibly, and use them in forms, validation, and queries—a simple way to let apps add their own attributes dynamically.
Architecture fit
asseco-voice/laravel-custom-fields is a conventional Laravel package: service provider with auto-discovery, publishable config and migrations, and a trait applied to Eloquent models to expose custom field definitions and values. This is a standard, low-friction fit for an existing Laravel codebase and does not require architectural change.custom_fields table, values in a companion table keyed to the owning model. This is appropriate for sparse, admin-defined metadata; it is a poor fit for fields that need heavy filtering, sorting, or reporting.renderer column to custom_fields. Architecturally this moves presentation metadata (how a field should be drawn in a UI) into the persistence layer. That is pragmatic — it lets one definition drive consistent rendering across admin and consumer surfaces — but it couples the data model to a front-end concern and will need a documented contract (allowed renderer keys, fallback behaviour) rather than free-text.Integration feasibility
composer require, migration publish, and trait addition on the target models. A mid-level Laravel developer can complete a first vertical slice in under a day.Technical risk
composer update can require a database migration. Any environment that auto-deploys dependencies without running migrations will break at runtime, not at deploy time.database/migrations (the common case), the new column will not arrive automatically. The team must generate a project-owned migration adding the column. This is the single most likely failure mode of this upgrade and is not called out in the release note.Key questions
renderer column nullable with a default, and what happens in code when it is null or holds an unrecognised value?renderer participate in validation, casting, or field-type resolution — i.e. can a bad value break form rendering or data writes?model_type/model_id, field key) and is eager loading supported to avoid N+1?Stack fit
renderer value is metadata that a Blade, Livewire, Inertia/Vue, or API-driven front end can interpret.Migration path
^3.3.1 explicitly rather than floating on ^3.0.renderer column if migrations were published; if the package loads its own migrations, confirm the new file is picked up.custom_fields migration already includes renderer so no second migration is needed.Compatibility
SELECT-by-column-list or builds field definitions into a rigid DTO may need to tolerate the new attribute.Sequencing
Maintenance
Support
composer.json and commit composer.lock; avoid dev-main on a component holding business metadata.Scaling
Failure modes
renderer. Highest-probability failure; mitigated by atomic migration+code deploys.Ramp-up
How can I help you explore Laravel packages today?