Skip to content

wire:model

Laravel Livewire Documentation Reference

Since Magewire is heavily inspired by Laravel Livewire, many concepts are either identical or very similar. To avoid duplicating documentation, this page only covers Magewire-specific and platform-specific details. For all general concepts and in-depth explanations, you can refer to the corresponding Laravel Livewire documentation.

Livewire Reference

wire:model binds a form control to a public component property:

<label for="email"><?= $escaper->escapeHtml(__('Email address')) ?></label>
<input id="email" type="email" wire:model="email">

A plain binding updates the browser-side component state but does not immediately send a request. Its value is included in the next action, submit, or explicit commit. Choose a network trigger when the server must react sooner:

Modifier Request timing
.live While the value changes; text inputs use a 150 ms debounce by default.
.blur When the control loses focus.
.change When the browser emits a change event.
.lazy Supported as an alias for .change.

Use the Livewire 3 reference for casting and debounce modifiers. Bound values are browser-controlled input: validate them before persistence and do not expose secrets or authorization decisions as public properties.

Migrating from Magewire V1

V1's wire:model synchronized with the server by default. V3 defers a plain binding, and .live opts into immediate synchronization. .lazy remains an alias for .change; use .blur when focus loss is the intended trigger. See Upgrade.