Filament v5 Preview: Changes and How to Prepare | Mohamed Said       [Skip to content](#main)  [ ![](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png) Mohamed SaidLaravel Backend Engineer ](https://www.msaied.com/public) - [Home](https://www.msaied.com/public)
- [Projects](https://www.msaied.com/public/projects)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [About](https://www.msaied.com/public#about)

           [  Contact](https://www.msaied.com/public#contact) Menu 

Menu
----

Close 

 - [HomeStart here](https://www.msaied.com/public)
- [ProjectsCase studies](https://www.msaied.com/public/projects)
- [ArticlesEngineering notes](https://www.msaied.com/public/articles)
- [CertificatesCredentials](https://www.msaied.com/public/certificates)
- [AboutHow I work](https://www.msaied.com/public#about)
- [ContactGet in touch](https://www.msaied.com/public#contact)

  [Start a conversation](https://www.msaied.com/public#contact) [WhatsApp](https://wa.me/201094619204) [Email](mailto:hello@msaied.com) 

 1. [Home](https://www.msaied.com/public)
2. /
3. [Articles](https://www.msaied.com/public/articles)
4. /
5. Filament v5 Preview: What Is Changing and How to Prepare Your Codebase

 Filament v5 Preview: What Is Changing and How to Prepare Your Codebase
=======================================================================

 Filament v5 is on the horizon with significant API shifts. This article walks through the confirmed changes, deprecation patterns, and concrete refactor steps you can take today to reduce upgrade friction.

 ![](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp) [Mohamed Said](https://www.msaied.com/public#person) Published 16 Jun 2026 · Updated 16 Jun 2026 · 4 min read

ShareCopy linkCopied

 ![Filament v5 Preview: What Is Changing and How to Prepare Your Codebase](https://cdn.msaied.com/206/a7c9129a92bd03024da0ac0759cab8f6.png) 

  On this page +1. [Why v5 Matters More Than a Minor Bump](#why-v5-matters-more-than-a-minor-bump)
2. [The Biggest Architectural Shift: Schema-First Everything](#the-biggest-architectural-shift-schema-first-everything)
3. [Deprecated Patterns to Clean Up Now](#deprecated-patterns-to-clean-up-now)
4. [1. -&gt;disabledOn() / -&gt;hiddenOn() String Context Checks](#1-code-gtdisabledoncode-code-gthiddenoncode-string-context-checks)
5. [2. Static getRelations() / getWidgets() Arrays](#2-static-codegetrelationscode-codegetwidgetscode-arrays)
6. [3. Custom Field getView() Without a Component Class](#3-custom-field-codegetviewcode-without-a-component-class)
7. [Testing Strategy During the Transition](#testing-strategy-during-the-transition)
8. [Practical Preparation Checklist](#practical-preparation-checklist)
9. [Key Takeaways](#key-takeaways)

 Why v5 Matters More Than a Minor Bump
-------------------------------------

Filament has shipped breaking changes with every major version, and v5 is no exception. The core team is using v5 to finish what the Schema API started in v4: a fully unified, typed component graph that removes the last remaining inconsistencies between forms, infolists, and table columns. If your panels are non-trivial, preparing now saves a painful weekend later.

> **Disclaimer:** Filament v5 is not yet stable. Everything below is based on public GitHub discussions, the v5 development branch, and official RFC comments as of mid-2025. APIs may still shift before release.

---

The Biggest Architectural Shift: Schema-First Everything
--------------------------------------------------------

In v4, forms and infolists adopted the Schema API but table columns remained on a parallel component tree. v5 collapses this — columns, filters, and actions will all be first-class `Schema\Component` descendants.

Practically, this means the `->columns()` method on a table will accept the same component pipeline as `->schema()` on a form. Shared concerns like visibility, disabled state, and hidden-when logic will live in one trait instead of three.

```php
// v4 — two separate APIs
public static function form(Form $form): Form
{
    return $form->schema([
        TextInput::make('name')->required(),
    ]);
}

public static function table(Table $table): Table
{
    return $table->columns([
        TextColumn::make('name')->sortable(),
    ]);
}

// v5 — columns gain full Schema lifecycle hooks
public static function table(Table $table): Table
{
    return $table->columns([
        TextColumn::make('name')
            ->sortable()
            ->visible(fn (Model $record): bool => $record->is_active)
            ->extraAttributes(['data-cy' => 'name-cell']), // now works on columns too
    ]);
}

```

---

Deprecated Patterns to Clean Up Now
-----------------------------------

### 1. `->disabledOn()` / `->hiddenOn()` String Context Checks

Passing string context names (`'create'`, `'edit'`) is being replaced by explicit closure-based checks. Start migrating:

```php
// Before (v3/v4 style)
TextInput::make('slug')->disabledOn('edit'),

// After (v5-ready)
TextInput::make('slug')
    ->disabled(fn (string $operation): bool => $operation === 'edit'),

```

### 2. Static `getRelations()` / `getWidgets()` Arrays

These are moving to a fluent panel builder registration pattern. If you override them in every resource, consider abstracting into a base resource class now:

```php
abstract class BaseResource extends Resource
{
    protected static function defaultRelations(): array
    {
        return [];
    }

    public static function getRelations(): array
    {
        return array_merge(static::defaultRelations(), [
            AuditRelationManager::class,
        ]);
    }
}

```

This pattern survives the v5 migration because the override point is in one place.

### 3. Custom Field `getView()` Without a Component Class

Blade-only custom fields that rely on `getView()` returning a string are being deprecated in favour of anonymous Livewire components or full `Component` subclasses. Audit your plugin fields:

```bash
grep -r 'getView()' app/Filament --include='*.php'

```

Any hit that returns a raw view string needs a `Component` wrapper before v5.

---

Testing Strategy During the Transition
--------------------------------------

Before upgrading, lock your Pest feature tests against the current behaviour so regressions surface immediately:

```php
it('renders the name column on the user table', function () {
    livewire(ListUsers::class)
        ->assertCanSeeTableRecords(User::factory(3)->create())
        ->assertTableColumnExists('name');
});

```

These assertions are stable across v4 and the current v5 beta because they test behaviour, not internal component structure.

---

Practical Preparation Checklist
-------------------------------

- **Audit `disabledOn`/`hiddenOn` string usage** — replace with closures.
- **Centralise relation manager registration** in a base resource.
- **Replace Blade-only custom fields** with proper `Component` subclasses.
- **Pin your Filament version** in `composer.json` (`"filament/filament": "^4.0"`) and monitor the v5 changelog.
- **Run `php artisan filament:upgrade`** on a branch as soon as a stable beta lands.
- **Write table column existence tests now** so you catch regressions during the upgrade.

---

Key Takeaways
-------------

- v5 unifies the Schema API across forms, infolists, and table columns — one component tree to rule them all.
- String-based context checks (`disabledOn`, `hiddenOn`) are on their way out; closures are the future.
- Custom Blade-only fields need to become proper `Component` subclasses before v5.
- Behaviour-focused Pest tests are your safety net during the upgrade.
- Centralising resource boilerplate in a base class dramatically reduces the surface area of breaking changes.

- [filament](https://www.msaied.com/public/articles?search=filament)
- [laravel](https://www.msaied.com/public/articles?search=laravel)
- [filament-v5](https://www.msaied.com/public/articles?search=filament-v5)
- [upgrade](https://www.msaied.com/public/articles?search=upgrade)

 Frequently asked questions 
---------------------------

  Is Filament v5 stable enough to upgrade production apps now?No. As of mid-2025 Filament v5 is still in active development. You should monitor the official GitHub repository and changelog, prepare your codebase by removing deprecated patterns, but wait for a stable release before upgrading production.

   Will my v4 custom field plugins break in v5?Likely yes if they rely on Blade-only `getView()` string returns or extend internal classes that are being merged into the unified Schema component tree. Wrapping them in a proper Component subclass now is the safest migration path.

   How do I track Filament v5 progress before it is released?Watch the `v5` branch on the filamentphp/filament GitHub repository, subscribe to the official Discord announcements channel, and follow the core team's RFCs in the Discussions tab.

   ![Mohamed Said](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp)About the author
----------------

[Mohamed Said](https://www.msaied.com/public#person)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](https://www.msaied.com/public#about) [GitHub ↗](https://github.com/EG-Mohamed) [LinkedIn ↗](https://www.linkedin.com/in/msaiedm/) [WhatsApp ↗](https://wa.me/201094619204) [Email Address ↗](mailto:hello@msaied.com) [My CV ↗](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)  

   [Previous articleFilament Storage Monitor: Track Disk Usage From Your Filament Dashboard](https://www.msaied.com/public/articles/filament-storage-monitor-track-disk-usage-from-your-filament-dashboard) [Next articleLaravel API Rate-Limiting: Custom Limiters, Per-Route Strategies, and Header Contracts](https://www.msaied.com/public/articles/laravel-api-rate-limiting-custom-limiters-per-route-strategies-and-header-contracts)  

   On this page
-------------

1. [Why v5 Matters More Than a Minor Bump](#why-v5-matters-more-than-a-minor-bump)
2. [The Biggest Architectural Shift: Schema-First Everything](#the-biggest-architectural-shift-schema-first-everything)
3. [Deprecated Patterns to Clean Up Now](#deprecated-patterns-to-clean-up-now)
4. [1. -&gt;disabledOn() / -&gt;hiddenOn() String Context Checks](#1-code-gtdisabledoncode-code-gthiddenoncode-string-context-checks)
5. [2. Static getRelations() / getWidgets() Arrays](#2-static-codegetrelationscode-codegetwidgetscode-arrays)
6. [3. Custom Field getView() Without a Component Class](#3-custom-field-codegetviewcode-without-a-component-class)
7. [Testing Strategy During the Transition](#testing-strategy-during-the-transition)
8. [Practical Preparation Checklist](#practical-preparation-checklist)
9. [Key Takeaways](#key-takeaways)

 ###  Have a technical challenge?

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

[Start a conversation](https://www.msaied.com/public#contact) 

   Related articles
-----------------

 [ ![](https://cdn.msaied.com/740/cce86edc21eddcbdd2f2454fadaf9c70.png)  · 3 min read### The Pipeline Pattern in Laravel: Custom Pipelines Beyond Middleware

5 Oct 2026 ](https://www.msaied.com/public/articles/the-pipeline-pattern-in-laravel-custom-pipelines-beyond-middleware-1) [ ![](https://cdn.msaied.com/739/2d6897fdcdcf090613f96f72a64b8a78.png)  · 4 min read### MySQL Full-Text Search in Laravel: Indexes, Relevance Scoring, and Boolean Mode

4 Oct 2026 ](https://www.msaied.com/public/articles/mysql-full-text-search-in-laravel-indexes-relevance-scoring-and-boolean-mode) [ ![](https://cdn.msaied.com/738/073696a3fefe18bec825beec5ac658f5.png)  · 4 min read### Laravel Queue Rate-Limited Middleware: Throttling Jobs Without Losing Work

4 Oct 2026 ](https://www.msaied.com/public/articles/laravel-queue-rate-limited-middleware-throttling-jobs-without-losing-work) 

  Have a technical challenge?
----------------------------

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

 [Discuss your project ↗](https://www.msaied.com/public#contact) 

  © 2026 Mohamed Said · Built with Laravel, meant to last.Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

 - [Home](https://www.msaied.com/public)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [GitHub](https://github.com/EG-Mohamed)
- [LinkedIn](https://www.linkedin.com/in/msaiedm/)
- [WhatsApp](https://wa.me/201094619204)
- [Email Address](mailto:hello@msaied.com)
- [My CV](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
- [Sitemap](https://www.msaied.com/public/sitemap.xml)
