This article is initial research based on the READMEs of
laravel/passkeys-server and laravel/passkeys. Both packages are still in an untagged development stage (as of April 2026).What are these packages?
Laravel’s official organization has published two packages for implementing passwordless authentication (WebAuthn / passkeys).- Server side (PHP):
laravel/passkeys-server - Client side (JavaScript):
@laravel/passkeys
Server side: laravel/passkeys-server
Installation and initial setup
1
Add the PHP package
2
Publish and run migrations
3
Add the trait and contract to your User model
Routes registered automatically
Key options in config/passkeys.php
relying_party_idallowed_originsuser_handle_secrettimeoutguardmiddlewarethrottleredirect
Events
The package dispatches the following events.PasskeyRegisteredPasskeyVerifiedPasskeyDeleted
Customization points
CustomActions (replace WebAuthn processing)
CustomActions (replace WebAuthn processing)
Extend and bind
GenerateRegistrationOptions / GenerateVerificationOptions / StorePasskey / VerifyPasskey / DeletePasskey to the service container to change behavior.CustomResponses (replace responses)
CustomResponses (replace responses)
Implement contracts like
PasskeyLoginResponse to change success responses (JSON, redirect, etc.) to match your app’s needs.Client side: @laravel/passkeys
@laravel/passkeys is a JavaScript client that handles browser-side WebAuthn ceremonies.
Installation
Basic API
Framework helpers
- React:
usePasskeyVerify,usePasskeyRegisterfrom@laravel/passkeys/react - Vue:
usePasskeyVerify,usePasskeyRegisterfrom@laravel/passkeys/vue - Svelte:
usePasskeyVerify,usePasskeyRegisterfrom@laravel/passkeys/svelte
Passkey autofill
Passingautofill: true allows the browser’s passkey picker to appear on inputs with autocomplete="... webauthn". In unsupported environments or when the user cancels, it falls back to the normal flow.
Typed errors
The README exposes the following error classes.NotSupportedErrorUserCancelledErrorPasskeyExistsErrorPasskeyError(base class)
SSR support
WebAuthn is a browser API, but each framework’s hooks are SSR-safe. On the server,isSupported is treated as false and updates to the actual browser state after mounting.
Summary
- Combining
laravel/passkeys-server(PHP) and@laravel/passkeys(JS) lets you build a fully Laravel-native passkey authentication stack. - Both are still in an untagged development stage but, as part of Laravel’s official ecosystem, they’re likely to become a standard authentication method going forward.
- If you’re adopting early, design around the routes, configuration, error handling, and customization extension points in the README to stay safe.
Passkeys were later officially added as a feature of Laravel Fortify. To enable passkeys via Fortify, use
Features::passkeys() instead of installing laravel/passkeys-server directly. See Laravel Fortify and starter kits for details.laravel/passkeys-server
See the latest README and implementation for the server-side package.
@laravel/passkeys
See the latest README and API for the client-side package.
Laravel Fortify and starter kits
Learn how to enable passkeys via Fortify and how it relates to the starter kits.