
Livewire Development
- 511 installs
- 652 repo stars
- Updated July 28, 2026
- spatie/freek.dev
livewire-development is a Cursor and Claude Code skill that scaffolds Livewire components with Alpine.js interactivity following Spatie best practices for developers building reactive Laravel UIs.
About
livewire-development is a Spatie-maintained agent skill ranked #5 on skills.sh with 443 installs that guides Livewire component development inside Cursor or Claude Code. The skill scaffolds Livewire components, writes Alpine.js interactivity, and enforces Spatie Laravel best practices without leaving the IDE. Developers reach for livewire-development when building reactive admin panels, forms, and dashboards in Laravel apps where full-page JavaScript frameworks are unnecessary overhead. It compresses boilerplate decisions—component structure, wire: directives, and Alpine pairings—into agent-driven workflows aligned with production Spatie codebases.
- Livewire component scaffolding and full-page component generation
- Alpine.js integration and reactive frontend behavior patterns
- Spatie package conventions and Laravel ecosystem alignment
- Tailwind CSS class generation and responsive layout patterns
- Blade view + Livewire controller synchronization
Livewire Development by the numbers
- 511 all-time installs (skills.sh)
- +12 installs in the week ending Jul 27, 2026 (Skillselion tracking)
- Ranked #617 of 2,245 Frontend Development skills by installs in the Skillselion catalog
- Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/spatie/freek.dev --skill livewire-developmentAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 511 |
|---|---|
| repo stars | ★ 652 |
| Last updated | July 28, 2026 |
| Repository | spatie/freek.dev ↗ |
How do you scaffold Livewire components with Alpine.js?
Get an expert Livewire coding agent that scaffolds components, writes Alpine.js interactivity, and follows Spatie best practices without leaving Cursor or Claude Code.
Who is it for?
Laravel developers using Cursor or Claude Code who build reactive UIs with Livewire and want Spatie-grade component patterns.
Skip if: Teams building React or Vue SPAs without Livewire, or PHP backends with no reactive frontend requirements.
When should I use this skill?
The user is creating or refactoring Livewire components, Alpine.js bindings, or Spatie-style Laravel reactive UI.
What you get
Livewire component classes, Blade templates, Alpine.js bindings, and Spatie-aligned reactive UI code.
- Livewire component classes
- Blade templates with Alpine.js bindings
By the numbers
- 443 installs recorded on skills.sh
- Ranked #5 on skills.sh catalog
Files
Livewire Development
When to Apply
Activate this skill when:
- Creating or modifying Livewire components
- Using wire: directives (model, click, loading, sort, intersect)
- Implementing islands or async actions
- Writing Livewire component tests
Documentation
Use search-docs for detailed Livewire 4 patterns and documentation.
Basic Usage
Creating Components
<code-snippet name="Component Creation Commands" lang="bash">
Single-file component (default in v4)
{{ $assist->artisanCommand('make:livewire create-post') }}
Multi-file component
{{ $assist->artisanCommand('make:livewire create-post --mfc') }}
Class-based component (v3 style)
{{ $assist->artisanCommand('make:livewire create-post --class') }}
With namespace
{{ $assist->artisanCommand('make:livewire Posts/CreatePost') }}
</code-snippet>
Converting Between Formats
Use php artisan livewire:convert create-post to convert between single-file, multi-file, and class-based formats.
Component Format Reference
| Format | Flag | Structure |
|---|---|---|
| Single-file (SFC) | default | PHP + Blade in one file |
| Multi-file (MFC) | --mfc | Separate PHP class, Blade, JS, tests |
| Class-based | --class | Traditional v3 style class |
| View-based | ⚡ prefix | Blade-only with functional state |
Single-File Component Example
<code-snippet name="Single-File Component Example" lang="php">
<?php use Livewire\Component;
new class extends Component { public int $count = 0;
public function increment(): void { $this->count++; } } ?>
<div> <button wire:click="increment">Count: @{{ $count }}</button> </div>
</code-snippet>
Livewire 4 Specifics
Key Changes From Livewire 3
These things changed in Livewire 4, but may not have been updated in this application. Verify this application's setup to ensure you follow existing conventions.
- Use
Route::livewire()for full-page components; config keys renamed:layout→component_layout,lazy_placeholder→component_placeholder. wire:modelnow ignores child events by default (usewire:model.deepfor old behavior);wire:scrollrenamed towire:navigate:scroll.- Component tags must be properly closed;
wire:transitionnow uses View Transitions API (modifiers removed). - JavaScript:
$wire.$js('name', fn)→$wire.$js.name = fn;commit/requesthooks →interceptMessage()/interceptRequest().
New Features
- Component formats: single-file (SFC), multi-file (MFC), view-based components.
- Islands (
@island) for isolated updates; async actions (wire:click.async,#[Async]) for parallel execution. - Deferred/bundled loading:
defer,lazy.bundlefor optimized component loading.
| Feature | Usage | Purpose |
|---|---|---|
| Islands | @island(name: 'stats') | Isolated update regions |
| Async | wire:click.async or #[Async] | Non-blocking actions |
| Deferred | defer attribute | Load after page render |
| Bundled | lazy.bundle | Load multiple together |
New Directives
wire:sort,wire:intersect,wire:ref,.renderless,.preserve-scrollare available for use.data-loadingattribute automatically added to elements triggering network requests.
| Directive | Purpose |
|---|---|
wire:sort | Drag-and-drop sorting |
wire:intersect | Viewport intersection detection |
wire:ref | Element references for JS |
.renderless | Component without rendering |
.preserve-scroll | Preserve scroll position |
Best Practices
- Always use
wire:keyin loops - Use
wire:loadingfor loading states - Use
wire:model.livefor instant updates (default is debounced) - Validate and authorize in actions (treat like HTTP requests)
Configuration
smart_wire_keysdefaults totrue; new configs:component_locations,component_namespaces,make_command,csp_safe.
Alpine & JavaScript
wire:transitionuses browser View Transitions API;$errorsand$interceptmagic properties available.- Non-blocking
wire:polland parallelwire:model.liveupdates improve performance.
For interceptors and hooks, see reference/javascript-hooks.md.
Testing
<code-snippet name="Testing Example" lang="php">
Livewire::test(Counter::class) ->assertSet('count', 0) ->call('increment') ->assertSet('count', 1);
</code-snippet>
Verification
1. Browser console: Check for JS errors 2. Network tab: Verify Livewire requests return 200 3. Ensure wire:key on all @foreach loops
Common Pitfalls
- Missing
wire:keyin loops → unexpected re-rendering - Expecting
wire:modelreal-time → usewire:model.live - Unclosed component tags → syntax errors in v4
- Using deprecated config keys or JS hooks
- Including Alpine.js separately (already bundled in Livewire 4)
Livewire 4 JavaScript Integration
Interceptor System (v4)
Intercept Messages
Livewire.interceptMessage(({ component, message, onFinish, onSuccess, onError }) => {
onFinish(() => { /* After response, before processing */ });
onSuccess(({ payload }) => { /* payload.snapshot, payload.effects */ });
onError(() => { /* Server errors */ });
});Intercept Requests
Livewire.interceptRequest(({ request, onResponse, onSuccess, onError, onFailure }) => {
onResponse(({ response }) => { /* When received */ });
onSuccess(({ response, responseJson }) => { /* Success */ });
onError(({ response, responseBody, preventDefault }) => { /* 4xx/5xx */ });
onFailure(({ error }) => { /* Network failures */ });
});Component-Scoped Interceptors
<script>
this.$intercept('save', ({ component, onSuccess }) => {
onSuccess(() => console.log('Saved!'));
});
</script>Magic Properties
$errors- Access validation errors from JavaScript$intercept- Component-scoped interceptors
Related skills
How it compares
Choose livewire-development over generic Laravel skills when Livewire-specific scaffolding and Spatie UI conventions are the goal.
FAQ
What frameworks does livewire-development cover?
livewire-development targets Laravel Livewire for reactive PHP components plus Alpine.js for client-side interactivity. The skill follows Spatie best practices for Blade templates, wire: directives, and component class structure.
How popular is livewire-development on skills.sh?
livewire-development from spatie/freek.dev ranks #5 on skills.sh with 443 installs. Developers adopt it for agent-guided Livewire scaffolding inside Cursor and Claude Code sessions.