Filament v5 Preview: Changes and How to Prepare | Mohamed Said        [  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png)   Mohamed Said Laravel Backend Engineer  ](https://www.msaied.com) [ Home ](https://www.msaied.com) [ Projects ](https://www.msaied.com/projects) [ Articles  ](https://www.msaied.com/articles) [ Certificates ](https://www.msaied.com/certificates) [ Contact ](https://www.msaied.com#contact-section) 

       [  ](https://github.com/EG-Mohamed)       

 [ Home ](https://www.msaied.com) [ Projects ](https://www.msaied.com/projects) [ Articles ](https://www.msaied.com/articles) [ Certificates ](https://www.msaied.com/certificates) [ Contact ](https://www.msaied.com#contact-section) 

  [ home ](https://www.msaied.com)    [ articles ](https://www.msaied.com/articles)    Filament v5 Preview: What Is Changing and How to Prepare Your Codebase        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)

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

  #filament   #laravel   #filament-v5   #upgrade  

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

     16 Jun 2026      4 min read    ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said  

       Table of contents

  9 sections  

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

 Found this useful?

          [  ](https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.msaied.com%2Farticles%2Ffilament-v5-preview-what-is-changing-and-how-to-prepare-your-codebase&text=Filament+v5+Preview%3A+What+Is+Changing+and+How+to+Prepare+Your+Codebase) [  ](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.msaied.com%2Farticles%2Ffilament-v5-preview-what-is-changing-and-how-to-prepare-your-codebase) 

 Frequently Asked Questions 
----------------------------

  3 questions  

     Q01  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. 

      Q02  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. 

      Q03  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. 

  Continue reading

 More Articles 
---------------

 [ View all    ](https://www.msaied.com/articles) 

 [ ![Laravel Telescope Alternatives: Building a Lightweight Request Inspector with Middleware](https://cdn.msaied.com/216/9b6d240010b80483f072902dafcd216c.png) laravel middleware debugging 

### Laravel Telescope Alternatives: Building a Lightweight Request Inspector with Middleware

Telescope is powerful but heavy for production. Learn how to build a focused, low-overhead request inspector u...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 16 Jun 2026     1 min read  

  Read    

 ](https://www.msaied.com/articles/laravel-telescope-alternatives-building-a-lightweight-request-inspector-with-middleware) [ ![RAG Pipelines in Laravel: Chunking, Embedding, and Retrieval with pgvector](https://cdn.msaied.com/215/e037e13535aa77822f879ee829ec3f68.png) laravel ai pgvector 

### RAG Pipelines in Laravel: Chunking, Embedding, and Retrieval with pgvector

Build a production-ready Retrieval-Augmented Generation pipeline in Laravel using pgvector, OpenAI embeddings,...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 16 Jun 2026     3 min read  

  Read    

 ](https://www.msaied.com/articles/rag-pipelines-in-laravel-chunking-embedding-and-retrieval-with-pgvector) [ ![Laravel Pest: Architecture Tests, Mutation Testing, and Type Coverage in CI](https://cdn.msaied.com/214/0d4822fa8ee1765d0689e387dd849d92.png) laravel pest testing 

### Laravel Pest: Architecture Tests, Mutation Testing, and Type Coverage in CI

Go beyond feature tests. Learn how to enforce architectural rules, catch logic gaps with mutation testing, and...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 16 Jun 2026     4 min read  

  Read    

 ](https://www.msaied.com/articles/laravel-pest-architecture-tests-mutation-testing-and-type-coverage-in-ci) 

   [  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png)   Mohamed Said Laravel Backend Engineer  ](https://www.msaied.com)Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

Explore

- [Home](https://www.msaied.com)
- [Projects](https://www.msaied.com/projects)
- [Articles](https://www.msaied.com/articles)
- [Certificates](https://www.msaied.com/certificates)
- [Contact](https://www.msaied.com#contact-section)

Connect

- [   hello@msaied.com ](mailto:hello@msaied.com)
- [   +20 109 461 9204 ](tel:+201094619204)

© 2026 Mohamed Said. All rights reserved.

 [  ](https://github.com/EG-Mohamed) [  ](https://www.linkedin.com/in/msaiedm/) [  ](https://wa.me/201094619204) [  ](mailto:hello@msaied.com) [  ](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
