Filament is the de-facto admin layer of the Laravel world: an MIT-licensed UI framework where you declare a Resource — a model, its form fields, its table columns — and inherit the working admin panel: CRUD, validation, search, filters, auth, notifications, dashboards. Server-driven on the TALL stack (Tailwind, Alpine, Livewire, Laravel), 34.9M+ downloads, and a 982-plugin ecosystem. It's the Frappe-doctype move — declare the metadata, inherit the machinery — rebuilt as a primitive layer on a general-purpose framework.
Filament ships as composable packages — Forms, Tables, Infolists, Notifications, Actions, Widgets — that can be used individually inside any Livewire app, or together through the Panel Builder, which is what most people mean by "Filament": a full admin panel with navigation, auth, global search, and resource pages generated from your declarations. Everything renders server-side through Livewire; there is no separate frontend build, no API layer between the panel and your models.
The numbers, as of August 2026: 31.9k GitHub stars, 34.9M+ downloads, 982+ community plugins, ~19.4k Discord members, MIT licence, repo actively maintained (pushed this week, 57 open issues). In the Laravel ecosystem this is not a contender — it's the default.
2nth production systems are Frappe-first — doctypes already give us this pattern with a whole platform attached. Filament matters when the client is a Laravel shop: it's the answer to "how do we get a decent back office without a frontend team", in their stack, with their talent. The decision guide below is blunt about the other direction: we don't introduce PHP to get Filament.
The tree keeps meeting the same architecture: declare the metadata once, inherit the machinery. Frappe calls it a doctype. The platform-primitives leaf calls it a Layer-2 composable. Filament is that pattern shipped as the Laravel ecosystem's standard part.
| Concern | Frappe doctype | Filament Resource |
|---|---|---|
| You declare | A doctype (fields + permissions, JSON/UI) | A Resource class (form schema + table, PHP) |
| You inherit | Table, form, REST API, permissions, list views | Admin pages, CRUD, validation, search, filters, auth |
| Comes with | A whole opinionated platform (ORM, queue, users, ERPNext above it) | Just the primitive layer — Laravel provides the rest |
| Escape hatch | Server scripts, hooks, custom apps | Livewire components, plugins, plain Blade/PHP |
| Wins when | You want the platform — ERP-shaped systems of record | You have a Laravel codebase and need its back office |
That last row is the whole decision. Frappe gives you the primitive and the platform; Filament gives you the primitive on top of the framework you already run. Neither is the other's replacement — which is exactly what the platform-primitives leaf predicts: the pattern recurs at different layers of ownership.
One artisan command scaffolds it; two declarations — a form schema and a table — drive every page. Filament v5 syntax, verified against the current docs.
# scaffold a resource for an Eloquent model
php artisan make:filament-resource Customer
// CustomerResource.php — the declarations the panel is generated from public static function form(Schema $schema): Schema { return $schema->components([ TextInput::make('name')->required(), TextInput::make('email')->email()->required(), ]); } public static function table(Table $table): Table { return $table->columns([ TextColumn::make('name')->searchable(), TextColumn::make('email')->sortable(), ]); }
From those two methods Filament renders the list page, the create and edit forms, validation, search, sorting, and the action modals — all as Livewire components talking directly to Eloquent. Larger apps typically split the schema and table into their own classes (CustomerForm::configure($schema)), which keeps resources thin and the declarations reusable. Beyond resources, the same schema language drives standalone wizards, settings pages, and dashboard widgets.
Filament v5 (16 January 2026) contains no new features. The project says so plainly: the major bump exists for Livewire 4 support, full stop, with features resuming in the minors (5.2 added callouts and stacked modals in February). Credit where due — a framework that refuses to inflate a compatibility release into a marketing event is telling you something about how it will treat your upgrade path.
The genuinely new thing launched alongside v5 is Filament Blueprint: a premium extension for Laravel Boost that gives AI coding agents deep, structured knowledge of Filament — its APIs, conventions, and current-version syntax — so generated code targets the framework correctly. Read that against this tree's software-for-agents leaf: grounding an agent in a framework's conventions is exactly the memory/skills/grounding problem, and Filament is the first major framework to sell the grounding as a product. Declarative resources were already the ideal codegen target; Blueprint is the vendor noticing.
The plugin directory covers most of what an admin panel grows into — media libraries, importers, permission managers, calendar views, multi-tenancy helpers — with a mix of free and author-paid packages. Combined with the wider Laravel gravity (Livewire, Alpine, the package ecosystem), the practical effect is that a competent Laravel developer assembles in days what used to be a frontend team's quarter.
The caution is the same one the tree applies everywhere: every plugin is a dependency with an author behind it. Quality and maintenance vary across 982 packages; the supply-chain discipline (pin versions, read the code you install, prefer first-party where it exists) is part of the cost of the speed.
Server-driven UI is a fence, not a flaw — but know where the fence is. Every Livewire interaction is a server round-trip. For an internal tool on a decent connection that's invisible; for a public, high-traffic, latency-sensitive surface it's the wrong architecture, and no amount of plugins changes that. Filament is for the back office. Its own positioning agrees; deployments that forget it don't.
Major versions have real migration cost. The v3→v4 cycle unified the schema system and changed core signatures (form(Form $form) became form(Schema $schema)); v5's honesty about being a compat bump is partly a response to that churn. Budget upgrade time for a framework this central to your admin — and note that the ecosystem's 982 plugins each migrate on their author's schedule, not yours.
It requires being a PHP shop. Obvious, but it's the decision most often gotten wrong: Filament is a reason to stay happily in Laravel, never a reason to adopt it.
| Use Filament when… | Skip it when… |
|---|---|
| You're a Laravel shop needing an admin panel, back office, or internal CRUD tool — it's the ecosystem default for a reason | There's no PHP in the building — don't introduce a stack to get an admin panel |
| A small team must ship a real back office without a dedicated frontend team | The surface is public, high-traffic, or latency-sensitive — server round-trips are the wrong shape |
| Your admin is CRUD-heavy over Eloquent models — the declarative payoff is maximal | You're already on Frappe/ERPNext — doctypes give you this pattern with the platform attached |
| AI-assisted development matters — declarative resources are strong codegen targets, and Blueprint formalises the grounding | You need offline-first or SPA-grade interactivity — that's a different architecture, not a plugin |
Filament is the tree's first PHP-ecosystem leaf, and it earns the slot as evidence for a pattern the tree keeps finding: declare the metadata, inherit the machinery — and in the agent era, whoever owns the declarations owns the codegen target. For SA delivery the fit is real: the local agency and hosting world remains heavily PHP, and an MIT stack on commodity hosting is a rand-friendly cost base.
Primary sources only. The v5 announcement is worth reading as an example of how to communicate a compatibility release. Last reviewed 2026-08-22.