Laravel 11 & Filament v3: The Ultimate Development Guide
Introduction: The PHP Renaissance
Laravel 11 continues the framework's tradition of developer happiness, streamlining the directory structure and introducing powerful new features. Combined with FilamentPHP v3, the TALL-stack powered admin panel builder, you have the ultimate toolkit for rapid application development (RAD) in 2026.
This guide aims to move beyond "Hello World" tutorials. We will explore how to architect a scalable, maintainable application using these two powerhouses, covering everything from project setup to advanced custom resources.
Part 1: What's New in Laravel 11?
Laravel 11 introduced a slimmer skeleton application. The kernel.php files are gone, middleware is defined in bootstrap/app.php, and the config folder is streamlined. This "minimalist" approach reduces visual clutter for new projects.
Simplified Middleware
Previously, you'd register middleware in the Kernel. Now, it's fluent and centralized:
// bootstrap/app.php
->withMiddleware(function (Middleware $middleware) {
$middleware->append(EnsureTokenIsValid::class);
$middleware->alias([
'admin' => \App\Http\Middleware\AdminAuth::class,
]);
})
Per-Second Rate Limiting
Finally, rate limiting goes granular. Instead of "per minute", you can limit requests per second, crucial for high-traffic APIs.
Part 2: Why Filament v3?
Filament is not just an admin panel; it's a full-stack TALL (Tailwind, Alpine, Laravel, Livewire) development platform. Version 3 brought a modernized UI, "InfoList" components for viewing records, and independent "Panels" support (allowing multiple dashboards like Admin, Vendor, Customer).
Setting Up Filament
Installation is a breeze, but configuration is where the magic happens:
composer require filament/filament:"^3.2" -W
php artisan filament:install --panels
Tip: Always publish your config files if you plan to heavily customize the branding or assets. php artisan vendor:publish --tag=filament-config
Part 3: Building a Resource (The Correct Way)
Let's build a `Product` resource. Don't just generate the basic CRUD. Let's make it robust.
1. Generate the Resource
php artisan make:filament-resource Product --generate
2. Optimizing the Table
In `ProductResource.php`, use efficient columns. Avoid `TextColumn::make('relationship.name')` on huge datasets without eager loading (with()). Filament handles this well, but be mindful.
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\ImageColumn::make('thumbnail')
->circular(),
Tables\Columns\TextColumn::make('name')
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('price')
->money('USD')
->sortable(),
Tables\Columns\IconColumn::make('is_active')
->boolean(),
])
->filters([
Tables\Filters\SelectFilter::make('category')
->relationship('category', 'name'),
]);
}
Part 4: Custom Pages and Widgets
Sometimes CRUD isn't enough. You need a dashboard widget or a settings page.
For a custom stats widget:
php artisan make:filament-widget ProductStats --chart
This generates a Livewire component that automatically refreshes. You can place it on the Dashboard or specific Resource pages.
Part 5: Advanced Tips for Scale
1. Use Enums
Stop using magic strings for status columns. PHP 8.1+ Enums are fully supported in Filament.
// In your Model
protected $casts = [
'status' => ProductStatus::class,
];
// In Filament Resource
Select::make('status')
->options(ProductStatus::class)
2. Optimize Images
Use the `conversion` method on your file uploads in Filament to generate thumbnails automatically, saving bandwidth on the index view.
Frequently Asked Questions
1. Can I use Filament for the customer-facing frontend?
Yes, but it's designed for "data-dense" interfaces. For a marketing landing page, standard Blade/Livewire is better. For a customer portal (orders, profile), Filament Panels are perfect.
2. Is Laravel 11 a breaking change?
For most apps, no. The upgrade path is smooth. The changes are mostly structural in the skeleton layout. Existing code inside Controllers/Models works largely the same.
3. How do I handle permissions?
Filament integrates seamlessly with `spatie/laravel-permission`. You can use the `filament-spatie-roles-permissions` plugin or implement policies manually. Filament respects Laravel Policies out of the box.
Conclusion
The combination of Laravel 11's refined architecture and Filament v3's rapid UI capabilities makes you unstoppable. You can build complex, secure, and beautiful SaaS applications in a fraction of the time it took 5 years ago. Dive in, experiment, and build something amazing.
Written by Hamza Goudala
Creator at Farfosh Blog.