laravel-livewire

SkillAI & models

Livewire 4 reactive components on Laravel 13 - wire:model, actions, events, Volt, Folio. Use when building reactive UI without JavaScript.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the laravel-livewire skill

What this skill tells your AI

The instructions your AI receives, as published by fusengine/agents in plugins/laravel-expert/skills/laravel-livewire/SKILL.md and read by ahel’s review.

Laravel Livewire

Agent Workflow (MANDATORY)

Before ANY implementation, spawn 3 agents in parallel, one Agent call each with a name:

  1. fuse-ai-pilot:explore-codebase - Check existing Livewire components
  2. fuse-ai-pilot:research-expert - Verify Livewire 3 patterns via Context7
  3. mcp__context7__query-docs - Check specific Livewire features

After implementation, run fuse-ai-pilot:sniper for validation.


Overview

FeatureDescription
ComponentsReactive PHP classes with Blade views
wire:modelTwo-way data binding
ActionsCall PHP methods from frontend
EventsComponent communication
VoltSingle-file components
FolioFile-based routing

Critical Rules

  1. Always use wire:key in loops
  2. Use wire:model.blur for validation, not .live everywhere
  3. Debounce search inputs with .debounce.300ms
  4. #[Locked] for sensitive IDs
  5. authorize() in destructive actions
  6. protected methods for internal logic

Decision Guide

Component Type

Component choice?
├── Complex logic → Class-based component
├── Simple page → Volt functional API
├── Medium complexity → Volt class-based
├── Quick embed → @volt inline
└── File-based route → Folio + Volt

Data Binding

Binding type?
├── Form fields → wire:model.blur
├── Search input → wire:model.live.debounce.300ms
├── Checkbox/toggle → wire:model.live
├── Select → wire:model
└── No sync → Local Alpine x-data

Reference Guide

Core Concepts (WHY & Architecture)

TopicReferenceWhen to Consult
Componentscomponents.mdCreating components
Wire Directiveswire-directives.mdData binding, events
Lifecyclelifecycle.mdHooks, mount, hydrate
Formsforms-validation.mdValidation, form objects
Eventsevents.mdDispatch, listen
Alpinealpine-integration.md$wire, @entangle
File Uploadsfile-uploads.mdUpload handling
Nestingnesting.mdParent-child
Loadingloading-states.mdwire:loading, lazy
Navigationnavigation.mdSPA mode
Testingtesting.mdComponent tests
Securitysecurity.mdAuth, rate limit
Voltvolt.mdSingle-file components

Advanced Features

TopicReferenceWhen to Consult
Foliofolio.mdFile-based routing
Precognitionprecognition.mdLive validation
Reverbreverb.mdWebSockets

Templates (Complete Code)

TemplateWhen to Use
BasicComponent.php.mdStandard component
FormComponent.php.mdForm with validation
VoltComponent.blade.mdVolt patterns
DataTableComponent.php.mdTable with search/sort
FileUploadComponent.php.mdFile uploads
NestedComponents.php.mdParent-child
ComponentTest.php.mdTesting patterns

Quick Reference

Basic Component

class Counter extends Component
{
    public int $count = 0;

    public function increment(): void
    {
        $this->count++;
    }

    public function render()
    {
        return view('livewire.counter');
    }
}

Volt Functional

<?php
use function Livewire\Volt\{state};

state(['count' => 0]);

$increment = fn() => $this->count++;
?>

<button wire:click="increment">{{ $count }}</button>

Wire Directives

<input wire:model.blur="email">
<input wire:model.live.debounce.300ms="search">
<button wire:click="save" wire:loading.attr="disabled">Save</button>

Best Practices

DO

  • Use wire:key in @foreach loops
  • Debounce search/filter inputs
  • Use Form Objects for reusable logic
  • Test with Livewire::test()
  • #[Locked] for IDs, #[Computed] for derived data

DON'T

  • wire:model.live on every field
  • Query in render() method
  • Forget authorization in actions
  • Skip wire:key in loops
  • Store sensitive data in public properties

Laravel 13 Notes

Livewire 4 sur Laravel 13

Livewire 4 est la version compatible Laravel 13. Changements clés :

  • PHP 8.3 minimum (était 8.2 sur Livewire 3)
  • wire:model.live rate-limited par défaut (300ms debounce implicite)
  • #[Locked], #[Computed], #[On] toujours supportés
  • Volt et Folio : versions majeures alignées (Volt 2, Folio 2)
  • PreventRequestForgery : routes /livewire/update gérées automatiquement, pas de config requise

Migration depuis Livewire 3

  • wire:poll.5s → toujours valide
  • $this->dispatch('event') → toujours valide
  • Form Objects (#[\Livewire\Attributes\Validate]) → API stable

Signals

GitHub stars
25
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
laravel-livewire
Source
github.com/fusengine/agents
laravel-livewire: Skill · ahel