Tilly The Coder
Tilly The Coder
What's New in Filament v4 and How to Use It in Your Laravel Projects
Tilly The Coder

What's New in Filament v4 and How to Use It in Your Laravel Projects

Tilly The Coder
6 mins
This is the estimated time it takes to read the article.

Filament v4.0.0 was released on Aug 12, 2025, and the official feature overview was published the same day. By the Apr 10, 2026 crawl date, teams were no longer just reading launch notes; they were building real Laravel projects on v4.

The short version: Filament v4 is faster, more structured, and more capable. The bigger story is that it gives you better tools for large panels without forcing every panel to become complicated.

Performance and Tailwind CSS v4

The official Filament v4 overview calls out significant rendering and interaction improvements, especially on large tables where server rendering time can drop by two to three times. Filament also moved to Tailwind CSS v4, which changes the theming and build story.

The practical change is that large panels feel less fragile. Search-heavy tables, relation managers, repeaters, and action-heavy resources used to collect small delays until the whole panel felt slow. v4 reduces a lot of that pressure, but it still rewards normal Laravel discipline: eager load relationships, keep computed columns cheap, and avoid doing authorization or formatting work in loops when the result can be prepared once.

Tailwind CSS v4 is not just a package bump. Theme files need to be rebuilt with the new content source style, and plugin views have to be included correctly. If a custom panel suddenly loses styling after the upgrade, check the panel theme entrypoint before changing Filament components.

Schemas are the new mental model

Schemas sit at the center of Filament v4 server-driven UI approach. Forms, infolists, page content, and other UI structures are described through schema components rather than scattered page markup.

A large resource should not have a 500-line form() method and a 400-line table() method. Filament v4 makes it more natural to split schemas, table definitions, components, actions, and pages into focused classes.

final class ArticleForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema->components([
            TextInput::make('title')->required()->maxLength(160),
            TextInput::make('slug')->required()->unique(ignoreRecord: true),
            RichEditor::make('content')->required()->columnSpanFull(),
        ]);
    }
}

That shape is easier to review because the resource can point to a form class, table class, and action classes. The resource becomes routing and orchestration instead of the place where every UI decision goes to live forever.

Authentication grew up

Filament v4 includes built-in multi-factor authentication support. The official overview lists app-based one-time passwords and email-based verification codes. For panels that manage customer data, billing, or admin workflows, MFA should be part of the launch plan.

  • Decide which panels require MFA.

  • Make recovery paths clear.

  • Test email delivery and rate limits.

  • Keep the login UI simple enough for password managers.

  • Document support procedures before users are locked out.

The best MFA rollout starts with roles. A public course dashboard may not need MFA for every student, while an admin panel that can refund invoices or edit content probably should. Make the requirement explicit in policy, onboarding, and support docs so the security behavior does not surprise users.

Nested resources and richer fields

Nested resources let resource URLs and breadcrumbs reflect real hierarchy. Filament v4 also introduced or improved fields such as the TipTap rich editor, slider, code editor, and table repeater.

Nested resources are a strong fit for data that is not meaningful outside its parent. Course lessons, product variants, project tasks, organization members, and account API keys all read better when the URL carries the hierarchy. They are a weaker fit when the child model is commonly managed on its own, because deep navigation can make simple admin tasks feel buried.

The richer fields remove a lot of custom field code. A code editor can handle snippets without a bespoke component, the TipTap editor gives content teams a better structured writing surface, and table repeaters can keep simple repeated data inside a form without immediately introducing another full resource.

Less network noise in forms

Filament v4 added tools such as hiddenJs() and afterStateUpdatedJs() to move simple UI reactions into JavaScript. It also supports partial rendering so only the components that need updating have to be refreshed.

TextInput::make('title')
    ->afterStateUpdatedJs(<<<'JS'
        $set('slug', ($state ?? '').toLowerCase().replace(/\s+/g, '-'))
    JS);

TextInput::make('slug')
    ->required()
    ->unique(ignoreRecord: true);

Use those helpers for interface state, not business rules. A client-side slug preview is excellent. Permission checks, price calculations, and final validation should still happen on the server where they can be tested and enforced consistently.

Tables, actions, and bulk work

Tables can now be backed by custom data sources, which is useful when data comes from APIs, computed arrays, or external systems rather than Eloquent. Bulk actions also gained better authorization and chunking tools, making them safer for large datasets.

Custom data sources are useful for admin views over search indexes, billing provider objects, read-only analytics rows, or external API results. The tradeoff is that you lose some automatic Eloquent affordances, so write the table as a boundary: shape the data once, name columns clearly, and avoid sprinkling API calls into column closures.

Bulk actions deserve the same care as queued jobs. Authorize the action, chunk the selected records, show useful confirmation text, and make the work retryable if it touches external systems. A bulk action that succeeds for 998 records and silently fails for 2 is worse than a slower action that reports the state honestly.

How I would upgrade a real project

  • Upgrade in a branch and read the official guide before touching application code.

  • Rebuild custom themes for Tailwind CSS v4.

  • Replace old form hacks with schemas, partial rendering, or client-side field helpers where appropriate.

  • Split large resources into schema, table, and action classes.

  • Re-test authentication, authorization, imports, exports, and bulk actions.

  • Compare generated pages against production screenshots before deploying.

For a serious panel, I would start with one representative resource before upgrading everything. Pick a resource with a form, a table, actions, relation managers, and authorization. Convert it properly, measure the diff, then repeat the pattern. That gives the team a local standard instead of ten slightly different v4 migrations.

Filament v4 is not only a feature release. It is a chance to make panels easier to maintain. The best upgrades remove old workarounds and lean into the new structure rather than wrapping Filament 4 in Filament 3 habits.