Contact salesSign inSign up

Authsignal secures millions of passkey transactions out of our hosted Sydney region.

Authsignal secures millions of passkey transactions out of our hosted Sydney region.

Join us today!
Blog
/
Current article

Passwordless React UI Components: Add Passkeys to Your Client-Side App

Last Updated:
November 5, 2024
Ben Rolfe
Passwordless React UI Components: Add Passkeys to Your Client-Side App

Add authentication flows into your react app or website using Authsignal’s UI components with the React SDK. Fast-track passkeys and MFA implementation for your client-side app. Authsignal's fast, easy-to-integrate components enable developers to create bespoke authentication user experiences without starting from scratch, giving you the flexibility and control you need to build your client-side authentication flows.

The Authsignal React SDK builds on top of the Web SDK by providing UI components that can be added to your React app.

An example of the UI components in a checkout flow.

AuthsignalProvider component

The AuthsignalProvider component allows you to use the useAuthsignal hook. Render the AuthsignalProvider component at the root of your application so that it is available everywhere you need it.

import { AuthsignalProvider } from "@authsignal/react";

import { Checkout } from "./Checkout";

export function App() {
  return (
    <AuthsignalProvider tenantId="{{TENANT_ID}}" baseUrl="{{BASE_URL}}">
      <Checkout />
    </AuthsignalProvider>
  );
}

useAuthsignal hook

The useAuthsignal hook returns two functions, startChallenge, and startChallengeAsync, that you can use to trigger the authentication flow.

Both functions require a token to be passed as an argument. Your server should return the token after tracking an action.

startChallenge

The startChallenge function triggers the authentication flow.

import { useAuthsignal } from "@authsignal/react";

export function Checkout() {
  const { startChallenge } = useAuthsignal();

  const handlePayment = async () => {
    const response = await fetch("/api/payment", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
      },
    });

    const data = await response.json();

    if (data.token) {
      startChallenge({
        token: data.token,
        onChallengeSuccess: ({ token }) => {
          // Challenge was successful
          // Send the token to your server to validate the challenge
        },
        onCancel: () => {
          // User cancelled the challenge
        },
        onTokenExpired: () => {
          // Token expired
        },
      });
    }
  };

  return (
    <div>
      <button type="button" onClick={handlePayment}>
        Pay
      </button>
    </div>
  );
}

Learn more by visiting the docs.

Try out our passkey demo
Passkey Demo
Subscribe to our monthly newsletter
Subscribe
You might also like
NRF 2025 Retail Biometrics Review - Palm Biometrics by Authsignal in Partnership with Qualcomm.
Revolutionize retail with Authsignal's palm biometric payments and Identity platform. Showcased at NRF, Authsignal’s palm biometric IDX solution enables secure, contactless payments and identity verification. Powered by Qualcomm, it ensures blazing-fast, accurate, and secure user experiences.
CISA Endorses FIDO Passkeys: Protecting Against Telecommunication Network Interception.
Authsignal helps organizations comply with the CISA Mobile Communications Best Practice Guidance by offering drop-in phishing-resistant passkeys, strong MFA fallback methods, and WhatsApp OTP as an encrypted and reliable alternative to SMS
UX Best Practices for Passkeys: Understanding Device-Initiated Authentication
Passkeys differ from traditional username-based methods for passwordless sign-in and MFA. This article will guide you on how to create the most effective passkey experience for your users, focusing on web browsers as the platform.
Secure your customers’ accounts today with Authsignal.