Skip to main content

¿Qué es Livewire?

Cuando intentabas crear UIs dinámicas en Laravel, antes no había más remedio que combinar frameworks JavaScript como Vue.js o React, o escribir tú mismo las peticiones AJAX. Livewire es un paquete para Laravel que resuelve ese problema. Permite construir UIs reactivas solo con PHP y Blade. Puedes implementar en PHP funcionalidades que antes requerían JavaScript, como validación de formularios en tiempo real, búsqueda en vivo, contadores, etc.
Livewire 4 funciona con Laravel 10 o superior y PHP 8.1 o superior. La versión más reciente actualmente es Livewire 4.

Resumen del mecanismo

Un componente Livewire es la combinación de una clase PHP en el servidor y una plantilla Blade. Cuando el usuario hace clic en un botón o rellena un formulario, Livewire envía por debajo una petición AJAX, ejecuta PHP y refleja en la página solo la parte modificada. El desarrollador no tiene que ser consciente de este mecanismo y puede escribir todo solo con PHP.

Instalación

Ejecuta el siguiente comando en la raíz de tu aplicación Laravel.
Como el autodescubrimiento de paquetes de Laravel está activo, no se necesita configuración adicional.

Creación del archivo de layout

Si vas a usarlo como componente de página completa, necesitas un archivo de layout. Puedes generarlo con el siguiente comando Artisan.
Se genera resources/views/layouts/app.blade.php.
@livewireStyles y @livewireScripts cargan automáticamente los assets de Livewire y Alpine.js.

Tu primer componente

Existe un comando Artisan para generar componentes Livewire. Vamos a crear un contador simple.
Con este comando se genera un componente de archivo único llamado resources/views/components/⚡counter.blade.php.
El ⚡ en el nombre del archivo sirve para identificar a simple vista los componentes Livewire. Mejora la visibilidad en el editor. Si no lo necesitas, puedes desactivarlo en la configuración.
Edita el archivo generado de la siguiente manera.
Para incrustar este componente en una plantilla Blade, se usa la sintaxis normal de componentes Blade.
Cada vez que se hace clic en un botón, el contador se actualiza sin recargar la página. wire:click es el mecanismo para invocar un método PHP en lugar de JavaScript.

Propiedades y acciones

Propiedades — wire:model

Con la directiva wire:model puedes vincular bidireccionalmente un elemento de entrada con una propiedad del componente.
Por defecto, wire:model sincroniza con el servidor solo cuando se ejecuta una acción (por ejemplo, el envío del formulario). Si quieres que se sincronice a cada entrada, añade el modificador .live.

Acciones — wire:click, wire:submit

wire:click liga un método al evento de clic, y wire:submit al evento de envío de formulario.

Validación en tiempo real

En Livewire 4 puedes definir reglas de validación directamente en las propiedades con el atributo #[Validate].
Las propiedades con #[Validate] disparan una validación automática en cada actualización. Al combinarlas con wire:model.live.blur, logras una experiencia de validación en tiempo real en la que aparece el mensaje de error justo al perder el foco.
$this->validate() verifica todas las propiedades a la vez al enviar el formulario. El patrón recomendado es usarlo en dos niveles junto con la validación automática mediante #[Validate].

Hooks del ciclo de vida

Los componentes Livewire tienen varios hooks de ciclo de vida.

mount() — Inicialización

mount() se usa para inicializar el componente. Es el equivalente al constructor.

updated() — Procesamiento tras cambiar propiedad

Si quieres insertar procesamiento después de que se actualice una propiedad, usa updated(). Si quieres acotarlo a una propiedad concreta, inclúyela en el nombre del método.
A cada entrada, se convierte automáticamente a minúsculas.

Integración con Laravel

Uso de modelos Eloquent

Livewire puede mantener modelos Eloquent directamente como propiedades.

Objetos de formulario

Los formularios complejos se pueden extraer a objetos de formulario para mantener el componente sencillo.
Usa el objeto de formulario desde el componente.

Conclusión

Resumen de los casos de uso en los que Livewire encaja especialmente bien. Livewire lo pueden empezar a usar hoy mismo los ingenieros Laravel “que hayan usado Blade”. Su mayor fortaleza es que permite lograr UIs interactivas sin el coste de aprendizaje de un framework JavaScript. Cuando se necesitan interacciones avanzadas al nivel de una SPA, Inertia.js encaja mejor, pero para formularios, paneles de administración o tablas de datos, en muchos casos Livewire permite implementarlo de manera más simple. Empieza probando con un componente pequeño.

Documentación oficial de Livewire

Consulta la documentación oficial para todas las funcionalidades de Livewire (subida de archivos, paginación, testing, etc.).
Última modificación el 13 de julio de 2026