Laravel Livewire v1.0 is Here
Published on by Paul Redmond
Laravel Livewire by Caleb Porzio has reached v1.0 today. Livewire is “a full-stack framework for Laravel that makes building dynamic interfaces simple, without leaving the comfort of Laravel.”
This release adds the following:
- Turbolinks integration
- Alpine JS integration
- Support for wire:model listening for “input” events dispatched by AlpineJS: $dispatch(‘input’, ‘foo’)
- Support for
wire:custom-event="foo"
receiving params from an AlpineJS dispatch:$dispatch('custom-event', 'bar')
. (Inpublic function foo($param)
,$param
will be'bar'
) - Livewire custom-tag syntax (similar to Laravel 7 Blade component tag syntax) (only available in Laravel 7):
If you’re unfamiliar with Livewire, the homepage has an overview that gives you the gist of what it does:
- Livewire renders the initial component output with the page (like a Blade include), this way it’s SEO friendly.
- When an interaction occurs, Livewire makes an AJAX request to the server with the updated data.
- The server re-renders the component and responds with the new HTML.
- Livewire then intelligently mutates DOM according to the things that changed.
Be sure to check out the quickstart documentation, which will help you build your first component. Here’s the gist of what a Livewire component looks like from the Quickstart guide:
use Livewire\Component; class Counter extends Component{ public $count = 0; public function increment() { $this->count++; } public function decrement() { $this->count--; } public function render() { return view('livewire.counter'); }}
With the accompanying Blade template:
<div style="text-align: center"> <button wire:click="increment">+</button> <h1>{{ $count }}</h1> <button wire:click="decrement">-</button></div>
Today Caleb also gave a talk at Laracon Online along with the project used during his talk. If you want to see Caleb’s Livewire talk, you can still purchase Laracon Online 2020 tickets for $25, and the videos will be available online soon.
You can get upgrade instructions and details about the release from Release v1.0.0 on GitHub.