mcpField
L
laravel-livewire

laravel-livewire

github.com/fusengineDevelopment34152 installsUpdated 2w ago
Repository

About laravel-livewire

laravel-livewire is a reference skill for developers working with Laravel 13 and Livewire 4, covering reactive components, forms, events, and testing. It also documents Volt, Folio, Precognition, and Reverb patterns and version-specific notes.

Key features

  1. 01Reactive PHP class components with Blade views
  2. 02wire:model binding, actions, and lifecycle hooks
  3. 03Forms, validation, events, and Alpine.js integration
  4. 04File uploads, component nesting, and navigation
  5. 05Guides for Volt, Folio, Precognition, and Reverb
  6. 06Testing, security guidance, and Livewire 3 migration notes

Use cases

  1. 01Build Livewire components and interactive forms
  2. 02Configure binding and debounce for search inputs
  3. 03Implement component events and Alpine.js interactions
  4. 04Migrate from Livewire 3 and review security practices

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/fusengine/agents --skill laravel-livewire

After installing, type/laravel-livewirein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
alpine-integration.md
components.md
events.md
file-uploads.md
folio.md
forms-validation.md
lifecycle.md
loading-states.md
navigation.md
nesting.md
precognition.md
reverb.md
security.md
testing.md
volt.md
wire-directives.md
references/templates/
BasicComponent.php.md
ComponentTest.php.md
DataTableComponent.php.md
FileUploadComponent.php.md
FormComponent.php.md
NestedComponents.php.md
VoltComponent.blade.md

Details

From the project README
Covers Livewire 4 on Laravel 13: reactive class-based components with Blade views, wire:model two-way binding and its modifiers (.blur, .live, .debounce), actions, component lifecycle hooks, forms/validation, events (dispatch/listen), Alpine.js integration ($wire, @entangle), file uploads, component nesting, loading states, SPA navigation, testing, security (auth/rate limiting), and the Volt (single-file components) and Folio (file-based routing) sub-features, including Precognition live validation and Reverb WebSocket integration.

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 4 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.live.blur for live validation (Livewire 4.1+: plain .blur only syncs client state), 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 (live validation) → wire:model.live.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.live.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 on Laravel 13

Livewire 4 (current 4.4) is the current major, used by the L13 Livewire starter kit. Key points:

  • Livewire 4 requirements: PHP 8.1+ / Laravel 10+ (Laravel 13 requires PHP 8.3 anyway)
  • #[Locked], #[Computed], #[On] still supported
  • Native single-file / multi-file components (make_command.type = sfc by default); Volt stays on 1.x (current 1.11), Folio on 1.x (current 1.2)
  • Pages: Route::livewire('/dashboard', Dashboard::class) is now the recommended method (mandatory for single/multi-file components)
  • Hashed endpoints: /livewire-{hash}/update (derived from APP_KEY) instead of /livewire/update — update firewall/CDN/middleware rules that target /livewire/
  • wire:model.live: parallel requests; wire:poll is non-blocking
Migrating from Livewire 3
  • composer require livewire/livewire:^4.0 then php artisan optimize:clear
  • Renamed config: layout → component_layout (layouts::app), lazy_placeholder → component_placeholder; smart_wire_keys = true by default
  • 4.1+: .blur / .change also control client-side sync → for the old behavior (network request on blur) write wire:model.live.blur
  • wire:model ignores events from children (add .deep if needed); <livewire:x /> tags must be closed
  • wire:transition uses the View Transitions API (modifiers removed); wire:scroll → wire:navigate:scroll
  • $this->stream(): to: renamed el:; $wire.$js('name', fn) deprecated → $wire.$js.name = fn
  • wire:poll.5s, $this->dispatch('event'), Form Objects (#[\Livewire\Attributes\Validate]) → unchanged

Comments

Markdown supported