alizharb/laravel-modular-livewire

The official Livewire bridge for Laravel Modular offering automatic discovery and registration of modular Livewire components.

Maintainers

Package info

github.com/AlizHarb/laravel-modular-livewire

pkg:composer/alizharb/laravel-modular-livewire

Transparency log

Fund package maintenance!

alizharb

Statistics

Installs: 35

Dependents: 0

Suggesters: 6

Stars: 3

Open Issues: 0

v1.1.0 2026-07-09 09:23 UTC

This package is auto-updated.

Last update: 2026-07-09 23:50:18 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads License

Laravel Modular Livewire is the official bridge for Laravel Modular. It enables automatic discovery, registration, and first-class Artisan support for Livewire components within your modular architecture.

✨ Features

  • 🔍 Automatic Discovery: Automatically scans and registers Livewire components in Modules/*/app/Livewire.
  • 🏗️ Modular Artisan Command: Enhanced make:livewire command with --module support.
  • 🎨 Namespace Isolation: Components are automatically prefixed with the module name (e.g., <livewire:blog::post-list />).
  • Performance Optimized: Intelligent component caching for zero-overhead in production.
  • 🩺 Diagnostics Ready: Designed for Laravel Modular 1.2 modular:doctor, modular:status, modular:debug, and modular:test.
  • 🤖 Laravel Boost Support: Ships Boost guidance for module-owned Livewire components.
  • Strictly Typed: Fully compatible with PHPStan level 5 (and scalable to level 9).

🚀 Installation

Install the package via Composer (requires alizharb/laravel-modular):

composer require alizharb/laravel-modular-livewire

The service provider will be automatically registered. It will automatically hook into the laravel-modular registry.

📖 Usage

Generating Modular Components

Use the native make:livewire command with the --module flag to generate any Livewire 4 component type.

1. Single-File Components (Default)

The modern Livewire 4 standard. Everything in one .blade.php file.

php artisan make:livewire Status --module=Blog
  • Creates: Modules/Blog/resources/views/livewire/⚡status.blade.php
  • Identifier: blog::status

2. Class-Based Components

The traditional separate Class and Template structure.

php artisan make:livewire Analytics --module=Blog --class
  • Class: Modules/Blog/app/Livewire/Analytics.php
  • View: Modules/Blog/resources/views/livewire/analytics.blade.php

3. Multi-File Components (MFC)

Perfect for complex components with dedicated JS and CSS.

php artisan make:livewire Dashboard --module=Blog --mfc
  • Creates: Modules/Blog/resources/views/livewire/⚡dashboard/ (Directory containing .php, .blade.php, .js, .css)

4. Page Components (Preferred for Routing)

Use the pages:: prefix for full-page components to keep them logically separated from UI fragments.

php artisan make:livewire pages::post.create --module=Blog
  • Creates: Modules/Blog/resources/views/livewire/pages/⚡create.blade.php
  • Identifier: blog::pages::post.create

Routing (Livewire 4)

Laravel Modular Livewire fully supports Livewire 4's native Route::livewire() for full-page modular components.

Using Class-based Routes

use Modules\Blog\Livewire\Analytics;
use Illuminate\Support\Facades\Route;

Route::livewire('/blog/analytics', Analytics::class);

Using Modular Aliases

// Resolves to the single-file or class-based component
Route::livewire('/blog/status', 'blog::status');

// Full-page component via modular alias
Route::livewire('/blog/create', 'blog::pages::post.create');

// Example from Test module
Route::livewire('/blog/create', 'blog::pages::post.create');

Using Components in Blade

In your Blade views, use the module's alias as the namespace:

{{-- Traditional or Single-file --}}
<livewire:blog::status />

{{-- Specialized Page Components --}}
<livewire:blog::pages::post.create />

{{-- Example from Blog module --}}
<livewire:blog::pages::post.create />

⚙️ Configuration

The bridge respects your existing modular.php paths and Livewire's own configuration. No additional configuration is required.

Diagnostics

After changing module Livewire paths or manifests, run:

php artisan modular:doctor
php artisan modular:check
php artisan modular:test Blog

If alizharb/laravel-themer is installed, the make:livewire bridge also supports --theme=theme-slug for theme-scoped Livewire components.

📦 Related Packages

Explore the rest of the Laravel Modular ecosystem:

🧪 Testing

vendor/bin/pest

🤝 Contributing

Please see CONTRIBUTING for details.

📄 License

The MIT License (MIT). Please see License File for more information.

Made with ❤️ by Ali Harb