Mahmoud Al-HabashOpen to new projects
  • WorkWork
  • ServicesServices
  • LabLab
  • WritingWriting
  • ContactContact
Amman--:--عربي
Writing/Livewire

Dirty State Tracking in Livewire v4

Track form changes and unsaved data.

1 February 20261 min readLivewireاقرأ بالعربية

On this page

  1. Show Unsaved Changes Indicator
  2. Target Specific Fields
  3. Prevent Navigation with Unsaved Changes

Livewire v4 automatically tracks when form data has changed from its original state.

Show Unsaved Changes Indicator

blade
<form wire:submit="save">
    <input wire:model="name" placeholder="Name">
    <input wire:model="email" placeholder="Email">
    
    <!-- Show message when ANY field is dirty -->
    <div wire:dirty class="text-yellow-600 text-sm">
        You have unsaved changes
    </div>
    
    <!-- Change button style when dirty -->
    <button 
        type="submit"
        wire:dirty.class="bg-yellow-500 animate-pulse"
        wire:dirty.class.remove="bg-gray-300"
    >
        Save Changes
    </button>
</form>

Target Specific Fields

blade
<div>
    <label>Username</label>
    <input wire:model="username">
    <span wire:dirty.target="username" class="text-orange-500">
        Username modified
    </span>
</div>

<div>
    <label>Bio</label>
    <textarea wire:model="bio"></textarea>
    <span wire:dirty.target="bio" class="text-orange-500">
        Bio modified
    </span>
</div>

Prevent Navigation with Unsaved Changes

blade
<div 
    x-data="{ dirty: false }"
    x-on:livewire-dirty.window="dirty = true"
    x-on:beforeunload.window="if(dirty) return 'You have unsaved changes'"
>
    <form wire:submit="save">
        <input wire:model="title" x-on:input="dirty = true">
        <button x-on:click="dirty = false">Save</button>
    </form>
</div>
All articles

Keep reading

  • Authorization in Livewire v4 Components1 February 20261 min read
  • Blaze Pre-Compiler: Massive Performance Gains in Livewire v41 February 20261 min read
  • Building a Bookmark Feature with Livewire v41 February 20261 min read