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

Custom Fields Laravel Package

relaticle/custom-fields

Laravel/Filament plugin that adds dynamic custom fields to any Eloquent model without database migrations. Supports 20+ field types, conditional visibility, multi-tenancy, CSV import/export, optional encryption, and custom field types.

View on GitHub
Deep Wiki
Context7
v3.11.0

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.10.0...v3.11.0

v3.8.0

Deterministic record lookups, a configurable search minimum, and an option-count threshold for option-backed selects. All three are reachable from a new selects config block, so 3.7 behaviour can be restored exactly.

Deterministic record lookups

RecordSelectInputComponent ran limit(50) with no orderBy, so the initial page was whatever the database returned and could differ between two renders of the same form. It now orders by the model key descending, which is deterministic and backed by the primary key index.

Measured on a seeded 50,000-row tenant with EXPLAIN (ANALYZE, BUFFERS):

Variant Plan Time Shared buffers
Model key desc (the new default) Index Scan Backward on the primary key 0.036 ms 7
No ORDER BY (3.7 behaviour) Seq Scan stops at 50 rows 0.043 ms 4
updated_at desc, id desc Seq Scan 50,004 rows, top-N heapsort, Limit 7.59 ms 822

Determinism therefore costs nothing. Set record_lookup.order_column to 'updated_at' if you prefer most-recently-touched-first, and index that column when the lookup table is large. A configured column always gets the model key appended as a tiebreaker.

Minimum search length, configurable end to end

getSearchResultsForJs() returned [] below 2 characters. It now returns the unfiltered first page, and the minimum comes from record_lookup.min_search_length rather than a literal. The field's JavaScript reads the same value, so raising the minimum can no longer leave the client asking for a filtered search that the server answers with an unfiltered page.

Search box only above an option-count threshold (behaviour change)

SelectComponent and MultiSelectComponent called ->searchable() unconditionally, so a three-option status field rendered a search box above three items. They now gate on option count, default 10.

This is a taste change, not a bug fix. It carries no performance benefit: filtering for static options already happened client-side at zero server cost. The only effect is that the search box disappears on small option sets.

Opt-out: set custom-fields.selects.searchable_threshold to 0 to always render the search box, which is exactly the pre-3.8 behaviour.

Config

'selects' => [
    'searchable_threshold' => 10,   // 0 always shows the search box (pre-3.8 behaviour)

    'record_lookup' => [
        'order_column' => null,     // null means the model key, index-backed
        'order_direction' => 'desc',
        'limit' => 50,
        'min_search_length' => 2,
    ],
],

Consumers who published config/custom-fields.php before 3.8 do not have this block. Every read passes the same value as its default, so nothing breaks and the new defaults apply.

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.7.0...v3.8.0

v3.7.0

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.6.3...v3.7.0

v3.6.3

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.6.2...v3.6.3

v3.6.2

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.6.1...v3.6.2

v3.6.1

What's Changed

Other Changes

New Contributors

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.6.0...v3.6.1

v3.6.0

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.5.5...v3.6.0

v3.5.5

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.5.4...v3.5.5

v3.5.4

What's Changed

Other Changes

New Contributors

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.5.3...v3.5.4

v3.5.3

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.5.2...v3.5.3

v3.5.2

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.5.1...v3.5.2

v3.5.1

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.5.0...v3.5.1

v3.5.0

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.4.1...v3.5.0

v3.4.1

Fixed

  • Date validation "After another field" reference dropdown now populates when creating a field. The reference-field selector showed "No options available" while creating a new date custom field — it only worked when editing an existing one. The options closure resolved the entity type through the relative state path $get('../../../entity_type'), which inside the field-management action modal (mountedActions.0.data.*) climbed past the form-data scope to the Livewire root and returned null, short-circuiting to an empty list. It now resolves entity_type/code via absolute data-scope paths, correct in both the action-modal and page-form contexts (#172).

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.4.0...v3.4.1

v3.4.0

Fixed

  • Visibility condition value no longer wiped when only the operator changes. Editing a saved section/field visibility condition and changing its operator (e.g. Is in → Is not in) reset the stored value to null, silently turning the condition into an "is in / is not in nothing" match. The value is now preserved whenever the new operator still takes one, and only cleared for value-less operators (is empty / is not empty) (#170).

Added

  • Configurable section modal width. The add/edit section modal width is now resolved through CustomFieldsPlugin::make()->sectionModalWidth(...) (a Width case or closure) or the custom-fields.management.section_modal_width config key. The default widens to screen-lg when section conditional visibility is enabled — previously the add-section modal stayed at 2xl, cramping the conditions row — and the create/edit modals now resolve to the same width (#170).

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.3.0...v3.4.0

v3.3.0

Added

  • SectionForm::extendSchemaUsing() — extend the custom-field section management form from application code (e.g. a service provider), with no subclassing or vendor patching. A single registration applies to both the Add and Edit section modals, and the callback receives the current schema plus the section's entity type, so extensions can be scoped per entity (#165).
  • Free-form extra bag on CustomFieldSectionSettingsData — consumer-defined section settings bound under settings.extra.* now round-trip through the typed settings DTO (and through config import/export). Enables, for example, flagging a section to render as its own tab (#165).

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.2.1...v3.3.0

v3.2.1

Fixed

  • Apply section-level conditional visibility on infolists (#162). Section-level visibility conditions (including cross-record relation conditions) were only honored on forms; on infolists a section rendered for every record whenever it had any visible field. InfolistBuilder now evaluates each section's visibility against the record, mirroring the form path. Sections without conditions and field-level visibility are unaffected.
v3.2.0

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.1.7...v3.2.0

v3.1.7

What's Changed

Other Changes

New Contributors

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.1.6...v3.1.7

v3.1.6

What's Changed

  • Adds Laravel 13 support — the package now installs and tests cleanly on both Laravel 12 and Laravel 13.
  • Replaces transitive postare/blade-mdi dependency with manukminasyan/blade-mdi, a Packagist-published fork that widens the illuminate/support constraint to include ^13.0. Same Postare\BladeMdi\ namespace, no source changes.
  • CI matrix now runs against Laravel 12.* + 13.* on every push.

Compatibility

  • Laravel 12 users: drop-in compatible, no changes required.
  • Laravel 13 users: composer require relaticle/custom-fields now works without extra setup.

PR: https://github.com/relaticle/custom-fields/pull/145

v3.1.5

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.1.4...v3.1.5

v3.1.4

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.1.3...v3.1.4

v3.1.3

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.1.2...v3.1.3

v3.1.2

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.1.1...v3.1.2

v3.1.1

What's Changed

Other Changes

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.1.0...v3.1.1

2.3.7

What's Changed

Full Changelog: https://github.com/relaticle/custom-fields/compare/2.3.6...2.3.7

v3.1.0

What's Changed

New Features

  • Model attribute conditions: Conditional field/section visibility based on model attributes (#74)
  • Section conditional visibility support

Fixes

  • Fix null dereference in normalizeValueForEvaluation
  • Replace addslashes with json_encode for JS string escaping
  • Remove duplicate docblock on getNormalizedFieldValues
  • Resolve rector issues for CI compatibility with rector 2.3.9
  • Add explicit success notification to createSection action
  • Update tests badge to correct workflow filename and branch
  • Use full URL for git ls-remote in changelog workflow

Maintenance

  • Remove Ukrainian translation for maintainability
  • Add release notes configuration for auto-generated changelogs
  • Add auto-release workflow and normalize CI naming
  • Update actions/setup-node to v6, actions/checkout to v6

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.0.14...v3.1.0

1.5.25

Fixed

  • Allow $guarded usage with UsesCustomFields trait — only merge custom_fields into $fillable when the model explicitly defines fillable properties (#109, #110)
2.3.6

What's Changed

Fixes

  • Fix: add explicit success notification to createSection action
  • Fix: update tests badge to correct workflow filename

CI

  • Add auto-release workflow and normalize CI naming
  • Remove PHPStan/Pint/Rector from 2.x CI (not supported on this branch)

Full Changelog: https://github.com/relaticle/custom-fields/compare/2.3.5...2.3.6

2.3.5

Changes

  • fix: integrate exportTransformer in ExporterBuilder (#105)
  • fix: resolve pint 1.28 formatting issues
v3.0.14

Changes

  • fix: integrate exportTransformer in ExporterBuilder (#104)
  • fix: resolve pint 1.28 formatting in config/data.php
2.3.4

What's Changed

  • fix: Allow field types to override compatible visibility operators via FieldSchema::visibilityOperators()
  • fix: Prevent array_key_exists() crash for withoutUserOptions multi-choice fields during visibility evaluation
  • New getCompatibleOperators() and getCompatibleOperatorOptions() methods on FieldTypeData
  • Backward compatible - existing field types default to data type operators
v3.0.13

What's Changed

  • fix: Allow field types to override compatible visibility operators via FieldSchema::visibilityOperators()
  • fix: Prevent array_key_exists() crash for withoutUserOptions multi-choice fields during visibility evaluation
  • New getCompatibleOperators() and getCompatibleOperatorOptions() methods on FieldTypeData
  • Backward compatible - existing field types default to data type operators
v3.0.12

Fixed

  • Remove redundant mimetypes validation rule from AcceptedFileTypesCapability::toRules() — Filament's acceptedFileTypes() already handles this at the component level, and the duplicate rule caused validation failures with Livewire uploads
v3.0.11

Fixed

  • AcceptedFileTypesCapability now expects MIME types (e.g. image/png, application/pdf) instead of file extensions, matching what Filament's acceptedFileTypes() requires
  • Changed validation rule from mimes to mimetypes for consistency
2.3.3

What's Changed

Full Changelog: https://github.com/relaticle/custom-fields/compare/2.3.2...2.3.3

v3.0.10

What's Changed

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.0.9...v3.0.10

2.3.2

Bug Fixes

  • Fix duplicate action crash when option has settings cast (CannotCastData exception) (#97)
  • Refresh field list after duplicating a custom field without requiring page reload (#99)
v3.0.9

Bug Fixes

  • Fix duplicate action crash when option has settings cast (CannotCastData exception) (#96)
  • Refresh field list after duplicating a custom field without requiring page reload (#98)
2.3.1

Fixed

  • Render checkbox list infolist entry as disabled checkboxes instead of a wall of text, matching the input's visual structure in read-only mode
v3.0.8

Fixed

  • Render checkbox list infolist entry as disabled checkboxes instead of a wall of text, matching the input's visual structure in read-only mode
v3.0.7

What's Changed

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.0.6...v3.0.7

v3.0.6

What's Changed

Full Changelog: https://github.com/relaticle/custom-fields/compare/v3.0.5...v3.0.6

v3.0.0

What's Changed

Full Changelog: https://github.com/Relaticle/custom-fields/compare/2.0.5...v3.0.0

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.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator