PHPackages                             quix-labs/filament-extendable - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. quix-labs/filament-extendable

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

quix-labs/filament-extendable
=============================

Extend Filament's form, table and infolist builders dynamically using a modular and composable system.

v0.0.1-alpha.5(1y ago)01[5 PRs](https://github.com/quix-labs/filament-extendable/pulls)MITPHPPHP ^8.2CI passing

Since Jun 28Pushed 5mo agoCompare

[ Source](https://github.com/quix-labs/filament-extendable)[ Packagist](https://packagist.org/packages/quix-labs/filament-extendable)[ Docs](https://github.com/quix-labs/filament-extendable)[ GitHub Sponsors](https://github.com/alancolant)[ RSS](/packages/quix-labs-filament-extendable/feed)WikiDiscussions main Synced today

READMEChangelog (5)Dependencies (9)Versions (12)Used By (0)

🧩 Filament Extendable
=====================

[](#-filament-extendable)

[![Latest Version on Packagist](https://camo.githubusercontent.com/c48af3b7bbfaeca91d0c5e7145a29c8752b1e3c9f1b6e224e1ee409f3767cc60/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f717569782d6c6162732f66696c616d656e742d657874656e6461626c652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/quix-labs/filament-extendable)[![GitHub Tests Action Status](https://camo.githubusercontent.com/611ece6007deed89584c13d18513518a81aac66b4be4a8962c6f28c90dbbff05/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f717569782d6c6162732f66696c616d656e742d657874656e6461626c652f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/quix-labs/filament-extendable/actions?query=workflow%3Arun-tests+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/3f038c587a0b280c8987476678100949a2a67024afc3b0deb1497de5ed1e4138/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f717569782d6c6162732f66696c616d656e742d657874656e6461626c652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/quix-labs/filament-extendable)

**Filament Extendable** is a powerful extension toolkit for [FilamentPHP](https://filamentphp.com/), enabling highly composable and dynamic customization of tables, forms, and infolists — all without touching core logic.

🚩 Important Notice
------------------

[](#-important-notice)

> This library is under active development. APIs and features may evolve. Contributions and feedback are highly appreciated.

Features
--------

[](#features)

- Dynamic registration of modifiers for **forms**, **tables**, and **infolists**
- Insert components **before** or **after** existing ones
- Remove components by key
- Full compatibility with `filament:make-*` commands
- Minimal interference with native Filament lifecycle

Requirements
------------

[](#requirements)

- PHP `^8.2`
- Laravel `^11.x || ^12.x`
- Filament `^4.0`

📦 Installation
--------------

[](#-installation)

```
composer require quix-labs/filament-extendable
```

If needed, register the service provider (usually auto-discovered):

```
// config/app.php
'providers' => [
    // ...
    QuixLabs\FilamentExtendable\FilamentExtendableServiceProvider::class,
],
```

Usage
-----

[](#usage)

### 1. Enable Extensibility in Your Resource

[](#1-enable-extensibility-in-your-resource)

Wrap your resource schema and tables with the builders:

```
use QuixLabs\FilamentExtendable\Facades\FilamentExtendable;

class UserResource extends Resource
{
    public static function form(Schema $schema): Schema
    {
        return FilamentExtendable::processSchema($schema, 'user-form');
    }

    public static function infolist(Schema $schema): Schema
    {
        return FilamentExtendable::processSchema($schema, 'user-infolist');
    }

    public static function table(Table $table): Table
    {
        return FilamentExtendable::processTable($table, 'user-table');
    }
}
```

### 2. Register Modifiers

[](#2-register-modifiers)

Define dynamic modifiers in the `boot` function of your service provider:

```
use QuixLabs\FilamentExtendable\Builders\TableBuilder;
use QuixLabs\FilamentExtendable\Builders\SchemaBuilder;
use QuixLabs\FilamentExtendable\Facades\FilamentExtendable;
use Filament\Tables\Columns\TextColumn;
use Filament\Forms\Components\TextInput;
use Filament\Infolists\Components\TextEntry;

class FilamentExtendServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        // Insert a column after 'email' in the user table
        FilamentExtendable::addTableModifier('user-table', function (TableBuilder $tableBuilder) {
            $tableBuilder->insertAfter('email', [
                TextColumn::make('lastname')->label('Last Name'),
            ]);
        });

        // Add a field to the user infolist
        FilamentExtendable::addSchemaModifier('user-infolist', function (SchemaBuilder $schemaBuilder) {
            $schemaBuilder->pushComponents([
                TextEntry::make('lastname')->label('Last Name'),
            ]);
        });
    }
}
```

### 3. Schema Manipulations

[](#3-schema-manipulations)

#### Insert component in schema

[](#insert-component-in-schema)

Push components at root or inside nested groups via dot notation:

Control insertion with:

- `position` — `'before'` or `'after'` relative to a target key
- `targetKey` — component key near which to insert
- `targetGroup` — dot notation path to nested group

```
// Append at root level (default behavior)
$schemaBuilder->pushComponents([
    TextInput::make('nickname')->label('Nickname'),
]);

// After 'bio' at root level
$schemaBuilder->pushComponents([
    TextArea::make('additional_notes'),
], position: InsertPosition::AFTER, targetKey: 'bio');

// Before 'email' at root level
$schemaBuilder->pushComponents([
    Select::make('preferred_contact_method'),
], position: InsertPosition::BEFORE, targetKey: 'email');

// After 'last_login' in 'tabs.activity' nested tab/section/group/...
$schemaBuilder->pushComponents([
    TextEntry::make('last_login_ip')->label('Last Login IP'),
], position: InsertPosition::AFTER, targetKey: 'last_login', targetGroup: 'tabs.activity');
```

#### Delete Components from Schema

[](#delete-components-from-schema)

You can remove components from both the root level and nested groups using their keys.

**If a specified key is not found, the operation is silently skipped (no error thrown).**

```
$schemaBuilder->removeComponents([
    'email', // Removes 'email' field from the root level
    'tabs.seo.meta_title', // Dot notation is supported for nested paths.
]);
```

Integration with Filament Artisan Commands
------------------------------------------

[](#integration-with-filament-artisan-commands)

Filament Extendable patches the following commands to scaffold extendable resources automatically:

```
php artisan make:filament-resource User
php artisan make:filament-table UserTable
php artisan make:filament-form UserForm
php artisan make:filament-schema UserSchema
```

They generate boilerplate code that includes calls to `FilamentExtendable::processSchema()`and `FilamentExtendable::processTable()`, ready for modifier registration.

> 💡 This allows you to plug in modifiers immediately, without writing boilerplate.

Why this exists
---------------

[](#why-this-exists)

Filament is an exceptional tool, but there are scenarios where additional dynamic control is needed:

- Modular package systems needing to inject UI logic
- Enterprise-grade systems with conditional rendering needs
- Reusable and declarative customizations across multiple resources

**Filament Extendable** solves this with a non-intrusive, declarative API.

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

🤝 Contributing
--------------

[](#-contributing)

We welcome your contributions!

1. Fork the repository.
2. Create a new branch for your feature or bugfix.
3. Commit your changes.
4. Push your branch.
5. Create a pull request.

Credits
-------

[](#credits)

- [COLANT Alan](https://github.com/alancolant)
- [Uni-Deal](https://github.com/uni-deal)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance62

Regular maintenance activity

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

5

Last Release

367d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a0cd49a0eefd2292fabb9cf776fba3c78ea32d7902fa4193e758ad539dfd1b1e?d=identicon)[alancolant](/maintainers/alancolant)

---

Top Contributors

[![alancolant](https://avatars.githubusercontent.com/u/19172637?v=4)](https://github.com/alancolant "alancolant (28 commits)")

---

Tags

extendablefilamentphplaravelmodularlaravelmodularfilamentextendable

###  Code Quality

TestsPest

Static AnalysisRector

### Embed Badge

![Health badge](/badges/quix-labs-filament-extendable/health.svg)

```
[![Health](https://phpackages.com/badges/quix-labs-filament-extendable/health.svg)](https://phpackages.com/packages/quix-labs-filament-extendable)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[ysfkaya/filament-phone-input

A phone input component for Laravel Filament

3161.3M25](/packages/ysfkaya-filament-phone-input)[bezhansalleh/filament-google-analytics

Google Analytics integration for FilamentPHP

211189.7k8](/packages/bezhansalleh-filament-google-analytics)[promethys/revive

A 'RecycleBin' page where users can restore or delete permanently soft-deleted models.

162.9k](/packages/promethys-revive)[wsmallnews/filament-nestedset

Filament nestedset tree builder powered by kalnoy/nestedset with Filament v4 and v5 support

197.8k19](/packages/wsmallnews-filament-nestedset)[tapp/filament-form-builder

User facing form builder using Filament components

132.4k3](/packages/tapp-filament-form-builder)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
