quix-labs/filament-extendable
quix-labs/filament-extendable is a Laravel/Filament package that makes Filament resources and components easier to extend and customize. It helps developers add reusable behavior, reduce boilerplate, and keep admin panels maintainable.
quix-labs/filament-extendable is a Filament plugin for injecting components into existing Filament schemas (forms, layouts, groups) without editing the original class. It is pre-1.0 (v0.0.1-alpha.5), so treat the API as unstable.
Minimal path:
composer require quix-labs/filament-extendable:0.0.1-alpha.5 — pin the exact alpha; do not use ^0.0.1 if you value reproducible deploys.->plugin(QuixLabs\FilamentExtendable\FilamentExtendablePlugin::make())) and run php artisan filament:upgrade / clear cached panel components.src/ for the extension registry and the README example that inserts a component into a group — that is the canonical first use case.Group/Section (e.g. append a "Notes" field to a third-party resource form) and confirm it renders on create and edit pages.If you only need static, in-repo customisation, stick with Filament's native schema composition and skip this package entirely — the value is in extending schemas you don't own.
Extensions/ directory, registering them once at boot rather than inside resource classes. Keeps the injection declarative and testable.->sort() argument) instead of relying on registration order — boot order differs between console, queue, and HTTP contexts.if (Feature::active(...)) so you can disable an injected field without redeploying schema code.assertFormFieldExists) after booting the panel in your test case; extension registration happens in the panel bootstrapper, so a bare unit test won't see it.0.0.1-alpha.x releases can and do break the registration API between patches. Read the diff, not just the changelog line, before bumping. Pin the exact version in composer.json.alpha.4 or earlier and see Allowed memory size exhausted during form render or filament:cache-components, upgrade. If the symptom persists on alpha.5, look for an extension whose target group is a descendant of the component it injects — that self-reference is the usual culprit.php artisan filament:clear-cached-components (and optimize:clear in CI) or you'll debug a ghost.once/static flag.composer update rather than a merge conflict.->getComponents() on the container) in a tinker/test to see what actually got injected and in what order, rather than inferring from the browser.How can I help you explore Laravel packages today?