koalafacade/filament-crash
Filament Crash gives your Filament admin panel a graceful crash screen: it catches unhandled exceptions, logs the details, and shows users a friendly error page instead of a raw stack trace, keeping diagnostics available for developers while maintaining a polished experience. Simple to install.
Architecture fit. koalafacade/filament-crash is a Laravel package that plugs into the Filament admin panel lifecycle and gates access to the panel based on a "client paid" condition. Architecturally this is a thin concern — a service provider plus (most likely) a middleware, panel hook, or render-time check that blocks or degrades the admin UI. That means it sits at the edge of the application, not in the domain layer. The fit is only relevant to one specific org profile: an agency or freelancer delivering Filament-based admin panels to clients under milestone or retainer payment terms. For a product company shipping its own SaaS, this package has no legitimate role — you do not gate your own users on a payment flag you control.
Integration feasibility. Mechanically simple: composer require, publish config, register the plugin in the relevant PanelProvider. The unknown is how the payment state is determined. The description implies an external check — most likely a remote license/status endpoint or a configurable expiry date — and that determines almost everything about feasibility. If it is a hardcoded/configured kill date, integration is trivial and fully offline. If it phones home to a licensing service, you inherit a third-party dependency, a network failure domain, and a data-privacy question about what the client's instance transmits.
Technical risk. High, for four compounding reasons:
Key questions.
filament/filament, laravel/framework, and PHP? Does it support Filament v3/v4?Stack fit. Laravel + Filament only. Prerequisite is that we own the deployment and can register panel plugins — i.e., we ship the app, not the client. It is not applicable to multi-tenant SaaS where panels are shared across paying customers, since the gate is per-installation, not per-tenant.
Migration path. Treat this as a greenfield add-on rather than a migration: install on a single internal/demo Filament project, confirm it resolves against our Filament version, and observe behavior under each state (paid, unpaid, endpoint unreachable). Because the package is likely to require a version bump or a small compatibility patch, budget for a composer.json constraint adjustment or a fork under our own namespace.
Compatibility. This is the gating item. Verify composer require koalafacade/filament-crash against our actual composer.lock before anything else — if it conflicts on Filament or PHP 8.2/8.3, the decision collapses to "fork or reimplement." Given the presumed small surface area (a middleware and a Blade view), reimplementation in-house is likely cheaper than carrying a fork of an abandoned dependency.
Sequencing. (1) Source review and compatibility spike, ~1 day. (2) Legal/contract review of enforcement clause — this runs in parallel and is the real long pole. (3) Internal pilot with a documented override procedure. (4) One client engagement with an explicit contractual opt-in, on a project where we also control support. (5) Do not standardize across the portfolio until the package has survived one Filament major upgrade cycle or we have replaced it with owned code.
Maintenance. The package is effectively unmaintained. Assume we own it from day one: either vendor the source into our repo or fork it publicly. The ongoing cost is small per-incident but recurring — every Filament major version requires a compatibility pass on a component nobody on the team wrote.
Support. No vendor, no SLA, community-only. With ~21 stars, expect no help channel. Our own on-call absorbs every lockout ticket, and lockout tickets are inherently high-severity because the client cannot work. This needs a documented runbook and a break-glass procedure (env flag or artisan command) that any engineer can execute without reading the source.
Scaling. Runtime cost is negligible — one check per request or per panel boot, trivially cacheable. The scaling concern is not compute, it is fan-out of the enforcement decision: each client installation is an independent point where a misconfiguration produces an outage. Enforcing across N engagements multiplies the false-positive surface linearly. If a remote check is involved, that endpoint becomes a shared dependency across all client installations and needs its own uptime target and cache-fallback policy.
Failure modes. Enumerate and test explicitly:
Ramp-up. Near-zero for any Laravel developer — installation and configuration are an hour's work. The real ramp-up is procedural, not technical: the team must internalize the override runbook, and account managers must understand that a misconfigured flag is a client-facing outage. Budget a short internal writeup plus a rehearsed break-glass drill.
Recommendation. Do not adopt as a production dependency in its current state. The functional core is small enough to reimplement as owned code with the failure semantics we choose, which removes the abandonment risk and gives us an auditable override path. If it is used at all, use it as a reference implementation and a forcing function to settle the contractual question first — because the hardest part of "enforce that the client paid" is not the middleware, it is the agreement that says you may.
How can I help you explore Laravel packages today?