robertboes/filament-passkeys
Filament Passkeys adds passwordless WebAuthn passkey login to Filament panels. Users register and sign in with biometrics or hardware security keys, and manage their own passkeys. Simple setup, configurable, and fully integrated with Filament's authentication flow.
Architecture fit. robertboes/filament-passkeys is a Filament panel plugin, not a general Laravel auth package. It slots into the PanelProvider registration model that Filament- based admin panels already use, and it will almost certainly publish a migration, a config file, and a small set of Livewire views/actions (login button, passkey management page). For a team already standardized on Filament + Laravel, the architectural impedance is near zero: no new runtime, no new service, no queue or external dependency. For a team not on Filament, this package is not usable at all — it is a UI-layer wrapper, so the real evaluation must be on the underlying WebAuthn library it wraps, not this repo.
Integration feasibility. Basic integration is genuinely small: composer require, register the plugin in the panel provider, publish and run the migration, set Relying Party ID/origin config, and expose the passkey action on the login page. Realistic spike: 1–2 days for a developer familiar with Filament. The work is not the install — it is the surrounding policy: whether passkeys are an alternative first factor, a second factor, or a passwordless primary; how account recovery works when a device is lost; and how this interacts with any existing 2FA/MFA package. Those decisions dominate the effort and are not solved by the plugin.
Technical risk. This is the dominant concern, and the score of ~15/100 reflects it accurately. Three GitHub stars, zero dependents, and a single maintainer mean effectively no peer review, no downstream battle-testing, and no ecosystem pressure to fix edge cases. For authentication code that is a material risk: WebAuthn is subtle (challenge lifecycle, origin/RP ID validation, signature counter handling, user verification flags), and errors tend to fail closed in confusing ways or, worse, fail open silently. The "last release 2026-08-02" timestamp should be verified — a future-dated or anomalous release record is a housekeeping red flag and may indicate unreliable tagging. There is also a hard coupling risk to Filament major versions (v3 vs v4) and to whichever WebAuthn library powers it; if that underlying dependency is abandoned, this plugin dies with it.
Key questions for the maintainer / spike.
none vs. metadata service)? Does it validate origin and RP ID strictly?Stack fit. Target: Laravel 10–12, PHP 8.2+, Filament 3/4, HTTPS-only environment with a stable registrable domain. Two non-negotiables: (1) the RP ID must be a real, stable domain — localhost works for dev but staging on ephemeral preview hostnames will not; (2) the panel must be served over TLS. If the admin panel is on a subdomain, confirm the RP ID is set to the registrable domain, not the host.
Migration path. Purely additive. Expect one new credentials table (likely passkeys / webauthn_credentials) plus optional columns or a config-published file; no destructive changes to users. Rollback is clean: disable the plugin and its login affordance, leave the table in place. No backfill, no data transformation, no downtime. This is the package's strongest property from a delivery-risk standpoint — it can be trialed and reverted with negligible blast radius.
Compatibility. Verify the browser/authenticator matrix explicitly rather than assuming: platform authenticators (Touch ID / Windows Hello / Android biometrics), roaming security keys, and cross-device/synced passkeys (iCloud Keychain, Google Password Manager). Safari/iOS behavior around synced passkeys and conditional mediation is the usual gap. Also confirm behavior for users on managed devices where platform authenticators are disabled by policy — there must be a visible password fallback.
Sequencing.
Maintenance. Assume you will own this code. With one maintainer and zero dependents, plan for one of two postures: pin and monitor (composer version constraint, watch upstream for six months, accept drift) or fork and vendor (take the ~small surface area in-house, own the Filament view layer, keep the WebAuthn library upstream). Budget roughly 1–2 engineer-days per quarter for either posture, plus a re-evaluation on every Filament major release. The WebAuthn landscape is still moving (Related Origin Requests, synced passkey semantics, evolving browser UX), so "stable and forgotten" is not a realistic end state for auth code.
Support. The operational cost concentrates in account recovery, not in the happy path. Users will not understand the distinction between a device-bound passkey and a synced one; "I got a new phone" and "I wiped my laptop" become helpdesk tickets. You need a documented fallback (password reset or admin-initiated credential removal) and a way for support staff to see and revoke a user's registered credentials. Enrollment messaging matters more than the code.
Scaling. Effectively free. Verification is public-key crypto on the request path — no external API call, no per-auth cost, no meaningful CPU or latency impact. Storage is one row per credential per user, trivial in volume. The only scaling-adjacent concern is if attestation metadata verification pulls in an external metadata service; if it does, that becomes a third-party availability dependency on the login path.
Failure modes to plan for.
Ramp-up. Low for a competent Laravel/Filament developer: half a day to understand the plugin, plus the WebAuthn reading required to review it responsibly. The scarce skill is not Filament — it is someone able to sanity-check the WebAuthn verification path. If nobody on the team can do that review, treat the package as unvetted and either bring in a reviewer or defer.
TPM recommendation. Viable as a low-risk, opt-in additional authentication method for an internal or low-blast-radius Filament panel, where the additive migration and clean rollback make the downside small. Not appropriate as the primary or sole authentication factor for a customer-facing surface in its current state — the adoption signal, maintainer concentration, and security-critical domain together mean the correct move is a fork-and-own strategy, or a direct integration on the underlying WebAuthn library with Filament views written in-house. Treat the plugin as a reference implementation and a fast spike, not as a dependency you inherit blindly.
How can I help you explore Laravel packages today?