Índice de contenido
- ¿Qué nos ofrece Livewire?
- Reactividad sin complicaciones
- Casos de uso: SEO y Dashboards
- Un ecosistema en constante evolución
- Qué permite Livewire
- ¿Por qué elegir Livewire para tu proyecto Laravel?
- Elementos esenciales de un proyecto Livewire
- Dependencias clave: Volt, Flux y más
- Laravel Volt
- Laravel Flux UI
- Data-binding, props y eventos (wire:model, actions)
- Que nos trae un Proyecto en Laravel Livewire
- ¿Por qué el emoji ⚡?
- Componentes de un solo archivo (Livewire Volt)
- Blade, Componentes de Blade, Layouts y Flux
- Ruteo, vistas y página única (sin controlador tradicional)
- Carga de archivos, validación en tiempo real y lazy loading
- Analizando un proyecto en Livewire
- Buenas prácticas que debes seguir
- Performance y carga diferida
- SEO, accesibilidad y experiencia de usuario
- Testing, mantenimiento y escalabilidad
- Jetstream el legado
- Que permiten los equipos de Laravel Livewire
- Gestión de Tokens de autenticación
- Jetstream, Livewire y Tailwins.CSS
- FAQs: Preguntas frecuentes sobre proyectos Livewire
Antes de comenzar a desarrollar nuestra aplicación en Livewire, una vez creado el proyecto en Laravel Livewire, quiero hacer una pequeña pausa para comentarte qué es lo que tenemos en un proyecto con este framework.
En pocas palabras, podemos decir que Livewire son componentes de Laravel “vitaminizados”. Es decir, con estos componentes podemos hacer múltiples operaciones que normalmente requerirían mucho más código o configuraciones adicionales.
Cuando comienzas un proyecto con Laravel Livewire, especialmente desde la versión 12 en adelante, rápidamente descubres que no estás trabajando con “Laravel tradicional”, sino con algo que —como me pasó a mí la primera vez— se siente como componentes de Laravel vitaminizados. En este artículo te explico, desde la práctica, cuáles son las características reales de un proyecto Livewire moderno, cómo está construido, qué incluye, qué cambia respecto a versiones anteriores y cómo sacarle todo el jugo.
Vamos a hablar sobre los aspectos más importantes que tenemos al momento de crear un proyecto en Laravel Livewire a partir de la versión 12 de Laravel, que como comentamos antes, a diferencia de versiones anteriores, ya no trae incluidas las funcionalidades que tenemos en versiones anteriores con Jetstream.
¿Qué nos ofrece Livewire?
Crear aplicaciones modernas hoy en día es un reto. No solo debemos dominar el Backend (donde Laravel es el rey indiscutible), sino también la capa de presentación o Frontend. Tradicionalmente, esto implicaba usar frameworks como Vue o React, lo que nos obligaba a separar nuestro desarrollo en dos mundos distintos, aumentando la complejidad y el mantenimiento.
Aquí es donde entra Livewire: un framework full-stack para Laravel que nos otorga las bondades de la reactividad (muy similares a lo que ofrece Vue) pero manteniéndonos integrados al 100% en el ecosistema de Laravel. Es, literalmente, lo mejor de dos mundos.
Livewire es un marco completo para Laravel que simplifica la creación de interfaces dinámicas, sin dejar la comodidad de Laravel; en pocas palabras nos permite usar esquemas similares a los de Vue y React directamente en Laravel.
Podemos trabajar con esquemas similares a los de Laravel y Vue, pero de una manera más directa y simple; el desarrollo de Laravel está fuertemente ligado al uso de componentes; los mismos componentes de Laravel pero con agregados importante de Laravel Livewire lo que permite escalar enormemente el uso de componentes:
- Vincular mediante el archivo de rutas.
- Comunicación sencilla basada en acciones, eventos y funciones entre el cliente y el servidor.
- Agrega funcionalidades como paginación, carga de archivos, query string entre otras.
En definitiva, con Livewire, podemos hacer lo mismo que hacemos con Laravel y sus controladores, pero de una manera más sencilla en la cual podemos usar los componentes y reutilizar piezas de código que nos ofrece Livewire para hacer una comunicación muy sencilla entre el servidor con el cliente.
Reactividad sin complicaciones
Para mí, lo mejor de Livewire es la potencia de sus eventos. En un desarrollo tradicional o con APIs, realizar una acción como "clonar un post" requeriría:
- Crear una ruta.
- Implementar una llamada con Axios.
- Manejar la respuesta en el cliente.
Con Livewire, esto se reduce a un atributo wire:click (o similar) que llama directamente a un método del servidor. Es magia pura y simplifica el flujo de trabajo de una manera increíble.
Aparte de que, dependiendo como decidas instalar a Laravel Livewire, puedes habilitar opciones que ya vienen de gratis como:
- Sistema de autenticación con registro, recuperación de credenciales.
- Vista de perfil con carga de usuario.
- Manejo de equipos mediante equipos.
En definitiva, Livewire no es un framework, lo puedes ver como un paquete más que agrega funcionalidades extras a algunos elementos de Laravel que lo convierten en un scaffolding o esqueleto para nuestras aplicaciones.
Casos de uso: SEO y Dashboards
Livewire es extremadamente versátil. En mi propio blog, por ejemplo, utilizo una combinación estratégica:
- Administración (Dashboard): Uso Livewire para aprovechar la velocidad de desarrollo y la reactividad en formularios y tablas.
- Parte pública (Blog): Empleo Laravel directamente, ya que al renderizarse en el servidor, el contenido es fácilmente indexable por Google, a diferencia de algunas implementaciones pesadas en JS o usando Livewire.
Un ecosistema en constante evolución
Livewire y Laravel cambian rápido. Livewire lanza versiones mayores cada cierto tiempo y Laravel lo hace anualmente. En este curso, no solo aprenderemos la teoría, sino la implementación moderna:
- Componentes en un solo archivo: Veremos cómo Livewire está migrando hacia una estructura similar a los Single File Components de Vue, donde la lógica y el HTML pueden convivir para mejorar la velocidad de desarrollo.
- Integración con Alpine.js: Para aquellas interacciones que no necesitan viajar al servidor, Livewire se apoya en Alpine.js, un framework de JS ligero que también cubriremos.
Qué permite Livewire
Con los componentes de Livewire podemos:
- Realizar ruteo de vistas: en vez de que un controlador devuelva una vista, podemos hacerlo mediante un componente.
- Usar propiedades dinámicas, similares a los v-model de Vue, para enlazar datos entre el frontend y el backend de forma reactiva.
- Trabajar con query strings para mantener información en la URL y sincronizarla con el estado del componente.
- Manejar la carga de archivos de manera sencilla.
- Y muchas otras operaciones más que iremos viendo en la práctica.
No quiero adelantar demasiado, porque algunas funciones son más técnicas y es mejor explorarlas directamente mientras construimos nuestra aplicación.
Lo importante es quedarte con la idea: Livewire nos da componentes de Laravel mejorados, con muchas funcionalidades listas para usar, lo que nos permite desarrollar aplicaciones dinámicas sin salir del ecosistema de Laravel.
¿Por qué elegir Livewire para tu proyecto Laravel?
Livewire se ha posicionado como una solución intermedia perfecta entre Blade tradicional y frameworks SPA como Vue o React. Es ideal para quienes quieren interfaces reactivas sin tener que levantar toda una infraestructura de JavaScript moderno.
En mis primeros proyectos con Livewire, una de las cosas que más me sorprendió fue poder hacer acciones instantáneas con wire:model, wire:click, o incluso manejar Query Strings sin escribir una sola línea de JS. Literalmente, conectas una propiedad a la vista y el estado fluye.
Ventajas principales a destacar:
- Eliminación del JS complejo para la mayoría de interacciones.
- Integración 100% nativa con Blade.
- Componentes reutilizables y anidados.
- Carga diferida, validación instantánea, subida de archivos.
- Ideal para paneles, dashboards, CRUDs y herramientas internas.
Elementos esenciales de un proyecto Livewire
Estructura de carpetas y componentes
Un proyecto Livewire en Laravel 12 se basa en la idea de que cada parte de tu interfaz es un componente. Esto incluye formularios, dashboards, sidebar, perfiles y cualquier elemento que necesite lógica y vista.
En mis primeros pasos noté que, a diferencia de versiones anteriores, la dependencia directa de Livewire ya no aparece en composer.json: ahora llega a través de paquetes como Volt y Flux, lo cual cambia la arquitectura del proyecto.
Si revisas la estructura de un proyecto Livewire recién instalado, notarás:
- /app/Livewire → donde viven los componentes
- /resources/views/livewire → vistas blade de cada componente
- /resources/views/components → componentes Blade auxiliares
- /routes/web.php → rutas que pueden apuntar directamente a componentes Livewire
Es común ver rutas como:
Route::get('/dashboard', \App\Livewire\Dashboard::class);Dependencias clave: Volt, Flux y más
En Livewire 12+, el ecosistema viene reforzado con:
Volt
Volt permite construir lógica y vista en un solo archivo, algo que se siente casi como Svelte o Vue Single File Components, pero directamente en Blade.
Un ejemplo típico:
<?php
use function Livewire\Volt\{state};
state(['count' => 0]);
$increment = fn () => $this->count++;
?>
<div>
<h1>{{ $count }}</h1>
<button wire:click="increment">+</button>
</div>Volt no es de mis tecnologías favoritas, ya que, no me gusta que mezclemos lógica con presentación y en Livewire 4 inclusive vamos a tener una tercera forma de poder crear componentes en Livewire, aun así, es una estructura completamente válida.
Laravel Volt
En proyectos recientemente de Laravel Livewire, a partir de la versión 12 de Laravel, al crear un proyecto en Laravel Livewire incluye otras tecnologías como:
Volt:
https://livewire.laravel.com/docs/volt
Con la cual, podemos crear tanto la lógica como la vista (blade) en un solo archivo:
<?php
use function Livewire\Volt\{state};
state(['count' => 0]);
$increment = fn () => $this->count++;
?>
<div>
<h1>{{ $count }}</h1>
<button wire:click="increment">+</button>
</div>Laravel Flux UI
También veremos que los componentes auxiliares que empleamos ahora no son los mismos que antes, ahora empleamos flux.
Flux, que no es más que una librería de componentes para Laravel Livewire ya listos para utilizar:
https://fluxui.dev/
<flux:input
wire:model="email"
:label="__('Email address')"
type="email"
required
autocomplete="email"
placeholder="email@example.com"
/>Que puedes exponer para personalizar:
$ php artisan flux:publishTambién vemos una estructura más compleja como que en el composer.json no tenemos la dependencia a Livewire, si no, a los paquetes anteriores que importan Livewire como una dependencia.
Flux es una librería de componentes UI preconstruidos que Livewire integra para acelerar el desarrollo, realmente tiene componentes muy buenos, es de tipo freemium, lo que significa que, tiene componentes gratis y de pago.
Componentes como:
<flux:input>
<flux:navlist>
<flux:dropdown>
<flux:menu>
<flux:profile>Por ejemplo:
<flux:input
wire:model="email"
label="Email"
type="email"
required
/>Estos son componentes Laravel con toneladas de clases Tailwind, fáciles de extender:
$ php artisan flux:publishCon el comando anterior, puedes publicar TODOS los componentes de flux para analizarlos.
Data-binding, props y eventos (wire:model, actions)
Livewire permite que las vistas y la lógica se mantengan sincronizadas automáticamente.
Ejemplos:
- wire:model="email" mantiene el estado entre input y componente.
- wire:click="save" ejecuta métodos del backend sin recargar.
- wire:loading maneja estados de carga.
- wire:keyup.debounce.500ms optimiza eventos.
Para mi, LO MEJOR de Livewire es el wire:click.
Que nos trae un Proyecto en Laravel Livewire
En este apartado, vamos a hablar sobre los aspectos más importantes que tenemos al momento de crear un proyecto en Laravel Livewire a partir de la versión 13 de Laravel con Livewire 4, que como comentamos antes, a diferencia de versiones anteriores, ya no trae incluidas las funcionalidades que tenemos en versiones anteriores con Jetstream, aunque si incluyeron nuevamente el manejo de Teams de manera opcional.
Lo primero que vemos, es un par de enlaces para registrarse y login, en este punto, si ya no los has hecho, crea un usuario; una vez registrado o iniciar la sesión, tendrás acceso a; crea un usuario:
http://livewirestore.test/register
Y enviará a:
Si seleccionastes team: http://livewirestore.test/team-1/dashboard
Sin team: http://livewirestore.test/dashboard
Publica el archivo de configuraciones de Livewire:
$ php artisan livewire:publish --configO
$ php artisan livewire:config
Que es un archivo de configuración, en donde verás, el layout empleado:
config\livewire.php
'component_layout' => 'layouts::app',Te recomiendo que revises el archivo mencionado, veras información como indica que ya inyecta el CSS y JS de Livewire para poder emplear los atributos y peticiones (que vamos a conocer más adelante):
The view that will be used as the layout when rendering a single component as | an entire page via `Route::livewire('/post/create', 'pages::create-post')`. | In this case, the content of pages::create-post will render into $slot.Puedes crear tus layouts para otros módulos y sobrescribir en las configuraciones, aunque te recomiendo que de momento que no los crees:
$ php artisan livewire:layoutY puedes ver que, en la ruta:
- resources\views\layouts\app.blade.php
Veras el layout de la app:
<x-layouts::app.sidebar :title="$title ?? null">
<flux:main>
{{ $slot }}
</flux:main>
</x-layouts::app.sidebar>Que internamente, emplea otros componentes que estan al mismo nivel en una carpeta app:
- app
- header
- sidebar
Si por ejemplo, vez el componente de:
resources\views\pages\settings\⚡profile.blade.php
Veras varias cosas interesantes, como la composición de un único archivo (HTML y PHP en un mismo archivo), clases sin nombre, uso de atributos de PHP que es nuevo desde la versión 8:
new #[Title('Profile settings')] class extends Component {
use ProfileValidationRules;Y el pase de parámetro:
resources\views\pages\settings\⚡profile.blade.php
Title('Profile settings')resources\views\layouts\app.blade.php
<x-layouts::app.sidebar :title="$title ?? null">Antes para pasar parámetros era:
->layoutData(['title' => 'Teams'])Y lo mejor de todo, NO existe una ruta para esta página:
Route::view('/', 'welcome', [
'canRegister' => Features::enabled(Features::registration()),
])->name('home');
Route::prefix('{current_team}')
->middleware(['auth', 'verified', EnsureTeamMembership::class])
->group(function () {
Route::view('dashboard', 'dashboard')->name('dashboard');
});
Route::middleware(['auth'])->group(function () {
Route::livewire('invitations/{invitation}/accept', 'pages::teams.accept-invitation')->name('invitations.accept');
});Y puedes ver desde el dashboard, en el navbar, una opción al perfil:
- http://livewirestore.test/settings/profile
¿Por qué el emoji ⚡?
Quizás te preguntes por el rayo en el nombre del archivo. Este pequeño detalle tiene una función práctica: permite que los componentes de Livewire sean reconocibles al instante en el árbol de archivos y los resultados de búsqueda de tu editor. Al ser un carácter Unicode, funciona a la perfección en todas las plataformas: Windows, macOS, Linux, Git y tus servidores de producción.
El emoji es totalmente opcional y, si no te resulta cómodo, puedes desactivarlo por completo en tu archivo config/livewire.php:
'make_command' => [ 'emoji' => false, ],
Componentes de un solo archivo (Livewire Volt)
Otra novedad que puede chocar es la estructura de los componentes. Tradicionalmente, teníamos una clase en PHP y una vista en Blade. Ahora, con Volt, todo se puede unir en un mismo bloque:
- Lógica funcional: Arriba tenemos un bloque de PHP (a veces identificado con un emoji en el editor) donde definimos las propiedades y funciones.
- Atributos Dinámicos: Usamos atributos de PHP 8 (como #[Layout]) para pasar datos directamente al layout, como el título de la página.
- HTML: Justo debajo tenemos el código Blade.
Es una mezcla muy potente que recuerda a los componentes de Vue, pero procesada enteramente en el servidor. Al estar todo en el mismo archivo, ya no necesitamos una función render(), pues Livewire asume que el HTML de abajo es lo que debe mostrar.
Blade, Componentes de Blade, Layouts y Flux
Cómo puedes apreciar, x-layout-app, corresponde a un componente en Laravel base:
resources/views/components/layouts/app.blade.php
<x-layouts.app.sidebar :title="$title ?? null">
<flux:main>
{{ $slot }}
</flux:main>
</x-layouts.app.sidebar>Otra cosa extraña del código anterior es que, el componente que inicia con flux, los cuales, son los componentes mencionados al inicio que provee el paquete de Livewire Flux, hay muchos a lo largo de toda la aplicación que sirven para distintos propósitos, pero, su sufijo, ya ejemplifica bastante bien qué es lo que hacen, por ejemplo:
<flux:navlist>
<flux:navlist.item>
<flux:heading>
<flux:subheading>
<flux:dropdown>
<flux:profile>
<flux:menu>
<flux:input>Al final, todos estos no son más que componentes en Laravel con un montón de clases de Tailwind, así que, puedes inspeccionarlos desde el navegador; de igual forma, estos componentes los iremos empleando poco a poco a medida que avancemos.
resources/views/components/layouts/app/sidebar.blade.php
<flux:sidebar sticky stashable class="border-r border-zinc-200 bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-900">El resto de las acciones disponibles creadas por el instalador de Laravel tenemos acciones como cambiar la contraseña y otros datos de usuario, cerrar la cuenta, modo oscuro y poco más, esto lo tienes en el sidebar listado antes en la parte inferior:
http://livewirestore.test/settings/profile
Ruteo, vistas y página única (sin controlador tradicional)
Un componente Livewire puede reemplazar a un controlador.
Ejemplo clásico:
class Dashboard extends Component {
public function render() {
return view('livewire.dashboard');
}
}Esto simplifica la arquitectura en más de un 40% en proyectos pequeños/medianos.
Carga de archivos, validación en tiempo real y lazy loading
Características avanzadas de Livewire que suelen ser highlight del framework:
- Upload de archivos con validación previa.
- Validación instantánea con reglas del servidor.
- Lazy loading para componentes que no deben cargar al inicio.
- Query Strings sincronizable con propiedades internas: útil para filtros, tablas, paginación.
Cuando implementé carga de archivos por primera vez, me sorprendió que no tuve que escribir nada de JS para los previews y estados.
Analizando un proyecto en Livewire
La ruta apunta directo al componente, sin pasar por un controlador tradicional. La primera vez que lo hice pensé: “vaya, esto simplifica toneladas de boilerplate”.
Pero eso es solo el comienzo. Lo más importante es entender cómo se estructura un proyecto Livewire moderno, así que vayamos a eso.
Lo primero que vemos, es un par de enlaces para registrarse y login, en este punto, si ya no los has hecho, crea un usuario; una vez registrado o iniciar la sesión, tendrás acceso a:
http://livewirestore.test/dashboard
Cuya vista corresponde a:
<x-layouts.app title="Dashboard">
<div class="flex h-full w-full flex-1 flex-col gap-4 rounded-xl">
<div class="grid auto-rows-min gap-4 md:grid-cols-3">
<div class="relative aspect-video overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-700">
<x-placeholder-pattern class="absolute inset-0 size-full stroke-gray-900/20 dark:stroke-neutral-100/20" />
</div>
<div class="relative aspect-video overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-700">
<x-placeholder-pattern class="absolute inset-0 size-full stroke-gray-900/20 dark:stroke-neutral-100/20" />
</div>
<div class="relative aspect-video overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-700">
<x-placeholder-pattern class="absolute inset-0 size-full stroke-gray-900/20 dark:stroke-neutral-100/20" />
</div>
</div>
<div class="relative h-full flex-1 overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-700">
<x-placeholder-pattern class="absolute inset-0 size-full stroke-gray-900/20 dark:stroke-neutral-100/20" />
</div>
</div>
</x-layouts.app>Cómo puedes apreciar, x-layout-app, corresponde a un componente en Laravel base:
resources/views/components/layouts/app.blade.php
<x-layouts.app.sidebar :title="$title ?? null">
<flux:main>
{{ $slot }}
</flux:main>
</x-layouts.app.sidebar>Lo más extraño del código anterior, es el componente que inicia con flux, los cuales, son los componentes mencionados al inicio que provee el paquete de Livewire Flux, hay muchos a lo largo de toda la aplicación que sirven para distintos propósitos, pero, su sufijo, ya ejemplifica bastante bien qué es lo que hacen, por ejemplo:
<flux:navlist>
<flux:navlist.item>
<flux:heading>
<flux:subheading>
<flux:dropdown>
<flux:profile>
<flux:menu>
<flux:input>Al final, todos estos no son más que componentes en Laravel con un montón de clases de Tailwind, así que, puedes inspeccionarlos desde el navegador; de igual forma, estos componentes los iremos empleando poco a poco a medida que avancemos.
resources/views/components/layouts/app/sidebar.blade.php
<flux:sidebar sticky stashable class="border-r border-zinc-200 bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-900">El resto de las acciones disponibles creadas por el instalador de Laravel tenemos acciones como cambiar la contraseña y otros datos de usuario, cerrar la cuenta, modo oscuro y poco más, esto lo tienes en el sidebar listado antes en la parte inferior:
http://livewirestore.test/settings/profile
Buenas prácticas que debes seguir
Performance y carga diferida
- Usa lazy cuando posible (wire:model.lazy).
- Divide componentes grandes en subcomponentes.
- Evita renderizados innecesarios usando ->skipRender().
- Carga scripts solo cuando se necesiten.
SEO, accesibilidad y experiencia de usuario
Aunque Livewire no es un framework SPA completo, sí soporta:
- metas dinámicas
- títulos por página
- navegación rápida
- componentes accesibles (especialmente con Flux UI)
Realmente, puedes usar aspectos de Livewire junto con Laravel clásico y esta web es un ejemplo de eso, para el Dashboard uso Laravel Livewire, para el blog, uso Laravel base.
Testing, mantenimiento y escalabilidad
- Usa pruebas con Livewire::test().
- Mantén un naming consistente entre componentes y vistas.
- Versiona componentes UI.
- Evita mezclar demasiada lógica en un solo componente (máximo 1 responsabilidad).
En resumen: trabajar con Livewire hoy se siente moderno, flexible y mucho más simple que antes aunque lamentablemente, ya no hay disponible opciones predefinidas antes con Jetstream como carga de avatar, sesión, roles/equipos.
Jetstream el legado
Livewire en sus orígenes usaba Jetstream que era varias funcionalidades que podíamos usar de gratis que te voy a listar a continuación, pero, en la evolución que ha tenido Livewire ya NO viene con Livewire:
Que permiten los equipos de Laravel Livewire
- Los equipos son un mecanismo para agrupar usuarios bajo un perfil en particular; por lo tanto, un usuario pertenece a un o varios equipos, que puede ser el equipo que se cree de manera automática cuando creamos el usuario.
Gestión de Tokens de autenticación
- Desde la opción de API Tokens podemos generar Tokens de autenticación que podemos emplear en cualquier otra aplicación, para esto recuerda que empleamos Laravel Sanctum.
Jetstream, Livewire y Tailwins.CSS
- Este paquete emplea por defecto el framework CSS conocido como tailwind.css, el cual al igual que Bootstrap nos ofrece un completo conjunto de clases para personalizar nuestra interfaz; pero, la diferencia fundamental con este último, radica en la que NO tenemos componentes; no tenemos componentes como cartas, botones, y prácticamente nada de lo que aparece en la sección de componentes de Bootstrap.
- Pero mediante estas clases nosotros podemos construir estos componentes; esto tiene su lado bueno y malo al mismo tiempo:
- El lado bueno es que podemos crear una interfaz con un mayor nivel de personalización que podemos hacer en Bootstrap, ya que Bootstrap con componentes existentes si los queremos cambiar tuviéramos que sobrescribir reglas CSS.
- El lado malo es precisamente el efecto que se obtiene del primer punto; al ser un diseño más manual tenemos que pasar un tiempo creando estos componentes y por lo tanto un desarrollo más lento.
FAQs: Preguntas frecuentes sobre proyectos Livewire
- ¿Livewire reemplaza a Vue o React?
- Depende del tipo de proyecto: para paneles internos y CRUDs sí, para apps ultra interactivas no.
- ¿Puedo usarlo junto con Alpine.js?
- Sí, es una combinación muy común.
- ¿Es adecuado para proyectos grandes?
- Sí, especialmente con componentes bien divididos. La comunidad en Reddit comparte buenas experiencias en proyectos medianos/grandes.
- ¿Qué cambia en Laravel 12?
- Volt y Flux pasan a ser parte del ecosistema Livewire moderno, y Jetstream ya no incluye tantas funciones predefinidas.
Ahora, vamos a conocer la pieza clave de Livewire, los componentes.