npm package: @passageidentity/webauthnutils
Description: A utility library for helping navigate UX decisions around WebAuthn built by Passage by 1Password.
Author: Passage by 1Password
Latest version: 1.4.2
Deprecated: This package is deprecated and no longer maintained as of January 16, 2026.

![webauthnutils](https://storage.googleapis.com/passage-docs/github-md-assets/webauthnutils.png)

![NPM Version](https://img.shields.io/npm/v/%40passageidentity%2Fwebauthnutils)
![NPM Type Definitions](https://img.shields.io/npm/types/%40passageidentity%2Fwebauthnutils)
![NPM License](https://img.shields.io/npm/l/%40passageidentity%2Fwebauthnutils)
![Static Badge](https://img.shields.io/badge/Built_by_1Password-grey?logo=1password)


## About

[Passage by 1Password](https://1password.com/product/passage) unlocks the passwordless future with a simpler, more secure passkey authentication experience. Passage handles the complexities of the [WebAuthn API](https://blog.1password.com/what-is-webauthn/), and allows you to implement passkeys with ease. 

Use [Passkey Flex](https://docs.passage.id/flex) to add passkeys to an existing authentication experience.

Use [Passkey Complete](https://docs.passage.id/complete) as a standalone passwordless auth solution.

Use [Passkey Ready](https://docs.passage.id/passkey-ready) to determine if your users are ready for passkeys.



<br />

### In webauthnutils

This package contains utility functions that simplify the creation and management of WebAuthn credentials and passkeys in web applications. Also included are functions that check if the current browser supports different features of WebAuthn, including hybrid credentials and conditional UI (autofill).

## Getting Started

### Install
```shell
npm i @passageidentity/webauthnutils
```

### Import
```js
import { CreateCredentialUtils, GetCredentialUtils } from '@passageidentity/webauthnutils'
```

### Implement
```js
// get challenge from server
// ...

// create credential
const supportedFeatures = await CreateCredentialUtils.createCredentialAvailable();
if supportedFeatures.available {
    const { credential, transports } = await CreateCredentialUtils.createCredential(
        challenge
    ).catch((_) => {
        // handle error
    });
}
```

See inline documentation on all classes and methods for full documentation.


## Support & Feedback

We are here to help! Find additional docs, the best ways to get in touch with our team, and more within our [support resources](https://github.com/passageidentity/.github/blob/main/SUPPORT.md). 

<br />

---

<p align="center">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://storage.googleapis.com/passage-docs/github-md-assets/passage-by-1password-dark.png">
      <source media="(prefers-color-scheme: light)" srcset="https://storage.googleapis.com/passage-docs/github-md-assets/passage-by-1password-light.png">
      <img alt="Passage by 1Password Logo" src="https://storage.googleapis.com/passage-docs/github-md-assets/passage-by-1password-light.png">
    </picture>
</p>

<p align="center">
    <sub>Passage is a product by <a href="https://1password.com/product/passage">1Password</a>, the global leader in access management solutions with nearly 150k business customers.</sub><br />
    <sub>This project is licensed under the MIT license. See the <a href="LICENSE">LICENSE</a> file for more info.</sub>
</p>