Blog

Home / Blog / FilamentPHP: like Laravel Nova, but easier.

FilamentPHP: like Laravel Nova, but easier.

  • FilamentPHP: like Laravel Nova, but easier.

21 Nov 2023

I didn't want to write this post until I had tried Filament in a real project. I also didn't have much time to do so, so after a few days of evaluation, we decided at Lampminds to rework a work-in-progress project (Laravel + Nova) and migrate it to Filament.

The first impression: Filament is heavily based on Nova. In fact, the initial versions of Filament appeared around mid-2020, two years after Nova was released and when Nova was already in its version 3.

If you are familiar with Laravel Nova, learning Filament will only take you a few hours, but the best part is when you delve into how Filament addresses the issues of Nova. If you don't know Nova, Filament will be surprising, but much of its success is owed to Nova.

In general terms, Filament presents itself as a solution that seems to be trying to become independent of Laravel. The fact that it places all the default scripts inside a /filament directory already gives us that idea. There are no Blades in the /resources, no controllers outside of it. But fortunately, this is the default behavior. As we progress in usage, we see that it still "quite" respects Laravel standards.

Filament is based on Livewire, unlike Nova, which uses Vue.js. This is definitely a plus. Developing customized components in Nova is a real challenge, and often you have to deal with it. I have often experienced that Laravel's persistent caches or the browser work against you when recompiling Nova components with NPM, and you don't see results until you eliminate the last hint of cached material.

Filament's user interface is definitely more intuitive than Nova after four versions. The filters applied to a view are displayed much more clearly than Nova's taciturn "little filter."

These are just my first impressions. As we progress with our testing project, I will update this post and add more information. Greetings.