Skip to content

Filament v4.13.0 Released: Deferred Schema Loading, Session Grouping & More

Filament v4.13.0 ships with deferred schema loading, persistent table grouping in the session, RichEditor min/max height, a reusable MultiFactorChallenge class, and a handful of important bug fixes.

Published · Updated · 4 min read

Filament v4.13.0 Released: Deferred Schema Loading, Session Grouping & More

Filament v4.13.0: What's New

Released on 7 September 2026, Filament v4.13.0 is a feature-packed minor release that improves performance, developer ergonomics, and UI consistency across the framework. Here is a detailed look at every notable change.


Deferred Schema Loading

The headline addition is deferred schema loading, contributed by @KianAcquoy. Instead of evaluating an entire form or infolist schema on the initial page load, you can now defer that work until it is actually needed. This is particularly valuable for complex admin panels where some schemas are rarely visited, reducing both server-side rendering time and Livewire payload size.


Persist Table Grouping in the Session

Tables that use grouping can now persist the active group in the user's session, thanks to @IGedeon. Users no longer lose their grouping preference when they navigate away and return to a table — a small but meaningful UX win.

Alongside this, @tanthammar added a direction argument to defaultGroup(), giving you control over the default sort direction of a group straight from the table definition:

->defaultGroup(
    Group::make('status')->direction('desc')
)

RichEditor minHeight() / maxHeight()

@pxlrbt added minHeight() and maxHeight() support to the RichEditor component, letting you constrain the editor's vertical size without resorting to custom CSS:

RichEditor::make('body')
    ->minHeight('200px')
    ->maxHeight('600px')

Reusable MultiFactorChallenge Class

@webard introduced a reusable MultiFactorChallenge class, making it easier to share MFA challenge logic across different parts of your application without duplicating code.


Trait-Named Lifecycle Hooks on Pages and Importers

@oddvalue added support for trait-named lifecycle hooks on pages and importers. This means traits can define hook methods that are automatically discovered and called, enabling cleaner composition of page behaviour without overriding base methods.


Stats Empty State Behaviour

@ahmed-rashad-alnaggar implemented empty state behaviour for stats widgets. You can now define what is displayed when a stat has no data, keeping your dashboards informative rather than showing a blank or zero value.


Custom Downloader for Laravel Vapor

@bretto36 introduced a Custom Downloader interface, allowing teams running on Laravel Vapor (or other environments where direct file streaming is not possible) to plug in their own download logic.


Other Notable Changes

  • Published assets added to .gitignore on install — new installs will no longer accidentally commit compiled assets (@chinmaypurav).
  • No unsaved-changes alert for read-only action modals — modals that cannot contain unsaved changes no longer trigger the browser warning (@grafst).
  • Laravel Boost Agent Skill — the Laravel Boost guidelines have been converted into an agent skill for AI-assisted development (@hackel).
  • Collapsible desktop sidebar CSS fix — --collapsed-sidebar-width is now correctly applied to collapsible desktop sidebars (@PrestaEdit).
  • Wizard next-action loading indicator scoped — the loading indicator is now scoped to its own request, preventing false positives (@people-sea).
  • Modal scroll fix — opening a modal with no tabbable content no longer scrolls the page (@lazerg).
  • Improved Composer autoload discovery for discover_app_classes() (@emyassine).
  • Sidebar horizontal scroll prevented inside the image editor (@mrleblanc101).
  • Translation updates for Spanish and Lus locales.

Key Takeaways

  • Defer expensive schema evaluation with the new deferred schema loading feature.
  • Table grouping preferences now survive page navigation via session persistence.
  • RichEditor gains minHeight() and maxHeight() for layout control.
  • A reusable MultiFactorChallenge class simplifies MFA implementations.
  • Laravel Vapor users can now supply a custom file downloader.
  • Several UX and CSS bugs have been resolved in this release.

Full changelog and pull request details: https://github.com/filamentphp/filament/releases/tag/v4.13.0

Frequently asked questions

What is deferred schema loading in Filament v4.13.0?

Deferred schema loading allows Filament to postpone evaluating a form or infolist schema until it is actually needed, rather than processing it on every initial page load. This reduces server-side rendering time and Livewire payload size for complex admin panels.

How does persistent table grouping work in Filament v4.13.0?

When a user selects a grouping on a Filament table, that choice is now stored in their session. If they navigate away and return to the same table, the previously selected group is automatically restored, improving the overall user experience.

Can I use Filament v4.13.0 on Laravel Vapor?

Yes. Filament v4.13.0 introduces a Custom Downloader interface that lets you replace the default file download mechanism with your own implementation, which is necessary on environments like Laravel Vapor where direct file streaming is not supported.

Mohamed Said

About the author

Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

About GitHub LinkedIn WhatsApp Email Address My CV

Have a technical challenge?

Tell me what you’re building. I reply within two working days.

Discuss your project