- How do I install WireChat in a Laravel application?
- Install the package with Composer (namu/wirechat), then publish its config and migrations and run the migrations. Next, implement the WirechatUser contract and add the InteractsWithWirechat trait to every model that should participate in chats. Finally, create and register a PanelProvider and configure the guards the panel should use. Real-time messaging additionally requires an Echo-compatible broadcaster, channel authorization, and queue workers for the messages and events queues.
- Which Laravel, PHP and Livewire versions does WireChat support?
- The package advertises support for PHP 8.1 through 8.4, Laravel 10 through 13, and Livewire 3.7 through 4.0. That is a wide compatibility matrix for a small project, so test on the exact version extremes you plan to run rather than assuming the middle of the matrix is representative. Pin versions in composer.json and run your test suite before every upgrade.
- Does WireChat support real-time messaging, and what happens if broadcasting is not available?
- Yes — WireChat is built around Echo-compatible broadcasting, with channel authorization, per-panel broadcast configuration, and dedicated queues for messages and events. It also offers optional web push via a service worker. What the package does when broadcasting is unavailable (polling fallback versus silent staleness) is not clearly documented, so verify this behavior in your environment before relying on it. In production you should also run queue workers so messages are delivered promptly.
- Can WireChat handle group chats, invitations and join requests?
- Yes. WireChat ships a full chat domain including private one-to-one chats, self chats, groups, invitations, and join requests, plus attachments and embeds. This is a batteries-included package rather than a thin messaging primitive, so you get the conversation model and UI together. Review the domain model early to confirm it matches your expected permission and invitation semantics.
- Does WireChat work with an Inertia, React or Vue SPA, or as a headless API?
- No. WireChat's primary surface is Blade, Tailwind and Livewire components shipped with routes, middleware and migrations, so it fits a Laravel monolith rendering Blade views. A widget mode exists for embedding a chat surface, but it is a UI embed rather than a headless API contract you can drive from a separate frontend. For an API-first or SPA architecture you would need a different package or significant custom work.
- Can WireChat support multiple user models and multiple guards in one app?
- Yes, WireChat uses polymorphic participants and panel-level guard configuration, so multiple participant model types and multiple guards can coexist. This is genuinely useful for B2B2C scenarios where staff and end customers share a conversation model, or where a customer-facing widget and an internal console live in the same deployment. Because of that flexibility, authorization and cross-tenant isolation are your responsibility to design, not something you can assume from the package.
- How do I configure file attachments, storage disks and upload limits in WireChat?
- Attachment behavior is configured per panel through options such as the storage disk, visibility, attachment directories, and MIME and size limits. Decide early whether attachments live on a private disk and are served through signed or otherwise authorized URLs, since that materially affects your security posture. Also check that the storage disk and queue configuration you choose survive package upgrades, because both sit inside the panel surface.
- Is WireChat production-ready, and who maintains it?
- WireChat has meaningful traction but limited external validation — roughly 577 GitHub stars and no dependents on Packagist — so you would be an early adopter and should treat it accordingly. The repository name (wirechat/wirechat) and the Composer package name (namu/wirechat) differ, and documentation references a wirechat-pro sibling, so confirm which source is canonical and who publishes releases. Before committing, ask about release cadence, the semver and deprecation policy for panel methods and component aliases, and whether core group, invite and broadcast fixes land in the free package or drift into pro.
- How stable are WireChat's public APIs when upgrading?
- The project explicitly treats panel methods, route middleware aliases, Livewire component aliases, config keys and user-model traits as durable public API, which is honest but also a broad commitment. Because broadcasting, storage and queue settings are part of the panel surface, a package upgrade can change runtime behavior and not just code. Publish and version-control your config and views, read the upgrade notes, and re-run integration tests against your exact Laravel and Livewire versions before deploying.
- How should I test a Laravel app that integrates WireChat?
- Test WireChat like any Livewire feature: render the components in Livewire tests, register the PanelProvider in your test case, and assert on conversations, participants and messages created through the package's actions. Fake the broadcaster and use the sync or database queue driver in tests so queue workers are not required. Add explicit tests for guard isolation and for your searchUsersUsing callback, since a search that spans guards or tenants is the most likely place for a data leak.