internachi/modular-livewire
A Livewire plugin for internachi/modular that automatically discovers Livewire components in each module's src/Livewire directory and registers them as module::component names. Components are kebab-cased, subdirectories use dot notation, and they're instantly usable in Blade.
This package does not unlock new product capability. It changes how engineering organizes and ships UI work, and the product decisions it supports are therefore about delivery economics — how many teams can work in parallel, how much coordination a new screen costs, and whether the platform bet on a modular monolith pays off. Frame it accordingly, and it earns a place in the roadmap discussion. Frame it as a feature, and it will not survive scrutiny.
internachi/modular — it removes the main friction that makes modularization annoying in a Livewire shop. If the roadmap depends on multiple squads shipping independently in one codebase, this is the small tool that makes that bet coherent. If the organization is seriously reconsidering modularization, this package is moot and should not be evaluated in isolation.Adoption is justified only when a specific set of conditions holds simultaneously. Any one of them failing moves the answer to "decline and revisit."
Consider it when:
internachi/modular v3+ is already adopted or approved. This is a plugin for that package; standalone it does nothing. If modularization itself is still undecided, the real decision in front of you is about architecture, not about this plugin — do not let a 2-star dependency become the camel's nose for a larger migration.{module}::{component} aliases derived from directory names. No custom aliases, no configurable paths, no exceptions.composer.json, not the README. The README claims Laravel 11+, while the 2.0.0 release notes state Laravel 11 support was dropped. Resolve this before committing a sprint.Look elsewhere when:
App\Livewire namespace needs nothing here; Livewire's own discovery already covers it.For executives — one paragraph. This is a small, free, MIT-licensed plugin that lets teams drop Livewire UI components into application modules and have them work automatically, instead of each one needing a manual registration edit in a shared file. It doesn't add customer-facing capability; it reduces coordination cost between squads, which is the thing that slows delivery once more than one team works in the same codebase. The cost is near zero and the change is reversible — components can be moved module by module, one squad at a time, and existing registrations keep working throughout. The risk is support: it is a 2-star package with one maintainer and no vendor, so the recommendation is a scoped pilot on one non-critical module, with a named owner and a fallback plan of writing the equivalent ~50 lines ourselves. Approve the pilot, not a platform commitment.
For engineering — the summary. A plugin for internachi/modular v3+ that scans each module's src/Livewire/ and registers components with Livewire as {module}::{kebab-case-class} (dot notation for subdirectories). Zero-config via package auto-discovery — no config file, no published assets, no migrations. Requires PHP 8.3+; verify the Laravel and Livewire majors against composer.json rather than the README, which claims Laravel 11+ that release 2.0.0 says was dropped. Migration is additive: existing Livewire::component() calls in the service provider continue to work, so this can be piloted per module and reverted by deleting a directory. The only change with blast radius is Blade alias renaming (<livewire:invoice-table /> → <livewire:billing::invoice-table />) — grep and review it. Capability ceiling is deliberate: no dynamic registration, no custom aliases, no configurable paths, no registration hook for audit. If we need any of those, we write our own provider instead. Success criteria for the pilot: components resolve under the expected alias, existing tests pass, and a newly added component requires zero manual registration edits. Gate: if the pilot surfaces a need for aliasing or non-standard layouts, stop rather than accumulating workarounds.
How can I help you explore Laravel packages today?