config/filament.php), minimizing boilerplate.| Risk Area | Assessment | Mitigation Strategy |
|---|---|---|
| Filament Version Lock | Tied to Filament v3.x. If using an older/new Filament version, conflicts may arise. | Pin to a compatible Filament version in composer.json. |
| State Transition Logic | Custom state machines may not align with Filament’s UI defaults. | Extend Filament’s Resource/Page classes to override transition behavior. |
| Performance Overhead | Complex state workflows could impact Filament’s reactivity. | Use Lazy-loaded state transitions or Filament’s caching where possible. |
| Testing Gaps | Limited test coverage for edge cases (e.g., concurrent state changes). | Write integration tests for critical workflows post-integration. |
spatie/laravel-model-states is installed (composer require spatie/laravel-model-states).composer require filament/filament:"^3.0").composer require a909m/filament-statefusion
php artisan vendor:publish --provider="A909M\FilamentStateFusion\FilamentStateFusionServiceProvider"
config/filament.php:
'plugins' => [
\A909M\FilamentStateFusion\Plugin::make(),
],
use Spatie\ModelStates\HasStates;
class Order extends Model
{
use HasStates;
}
Schema::create('order_states', function (Blueprint $table) {
$table->id();
$table->string('name')->unique();
$table->json('data')->nullable();
$table->timestamps();
});
use A909M\FilamentStateFusion\Concerns\HasStateFusion;
class OrderResource extends Resource
{
use HasStateFusion;
}
| Component | Compatibility Notes |
|---|---|
| Filament v3.x | Full support. |
| Filament v2.x | Not supported (requires major refactoring). |
| Livewire v3.x | Required (Filament’s dependency). |
| Spatie Model States | v3.x+ (earlier versions may lack Filament integration features). |
| Custom Filament UI | May require CSS/JS overrides if using non-standard state display logic. |
Order).Post, Subscription).a909m/filament-statefusion, spatie/laravel-model-states, and Filament for breaking changes.config/filament-statefusion.php for easy updates.HasStateFusion trait usage.php artisan state:list (Spatie) to inspect model states.config/filament.php) for UI issues.public static function getRelations(): array
{
return [
'states',
];
}
state:cache Spatie command).state:transition via queue).$model->fresh()).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| State Transition Race Condition | Inconsistent model states. | Use database transactions or Spatie’s transitionIf methods. |
| Filament Plugin Crash | UI breaks |
How can I help you explore Laravel packages today?