asbiin/laravel-webauthn
asbiin/laravel-webauthn brings passwordless WebAuthn authentication to Laravel. Let users register security keys, Touch ID, Face ID, or Windows Hello and sign in without passwords using simple routes, middleware, and configurable user models.
webauthn-lib 5.3 and returns CredentialRecord instead of the now-deprecated PublicKeyCredentialSource. For a PM this is a dependency-health signal (upstream is actively maintained, deprecated APIs are being retired) plus a scheduled engineering cost if you've customized credential storage. It does not change end-user behavior — no new product capability, no UX change — so it should be planned as maintenance, not sold as a feature.Consider adopting when:
Look elsewhere or defer when:
To executives: Passkeys are becoming table stakes in consumer and enterprise auth — they're phishing-resistant, faster than passwords, and cut reset volume. This package lets our Laravel app add them without building cryptography ourselves, so the cost is integration and UX, not R&D. The 6.0.0 release is routine upstream alignment: it retires a deprecated API and modernizes credential handling. No customer-facing change, but it does mean a planned migration sprint for teams that customized credential storage. Recommendation: treat the upgrade as scheduled maintenance, and treat passkey adoption as a separate product bet with its own success metrics (sign-in completion rate, reset-ticket volume, MFA coverage).
To engineering: 6.0.0 is a breaking major. The credential object returned by the library is now CredentialRecord rather than the deprecated PublicKeyCredentialSource, tracking webauthn-lib 5.3. Anyone with custom authenticator repositories, serialized credential payloads, type-hinted services, or tests asserting on the old class needs a migration pass — including any persisted serialization format, which is the highest-risk area and needs a backward-compatibility check on existing enrolled credentials. Audit for deprecation warnings before upgrading. Sequence it as: inventory customizations → verify stored credential round-trip → upgrade on a branch → confirm existing passkeys still authenticate before rollout. Pin the version in composer.json and budget this as a recurring line item, because upstream majors will keep coming.
How can I help you explore Laravel packages today?