Skip to main content
In this tutorial you’ll build a complete identity registration UI using the useRegistration hook. A user will type an alias, click a button, and watch their registration progress through every step — from alias availability check all the way to on-chain confirmation. By the end you’ll have a full registration form that provides real-time feedback and displays the final transaction hash and DID when registration succeeds.

What you’ll build

A RegistrationForm component that:
  1. Accepts an alias from the user.
  2. Calls register(alias) from useRegistration.
  3. Displays a live progress list that updates as each of the 12 phases completes.
  4. Shows the registration result — DID, smart account address, and transaction hash — on success.

Prerequisites

  • You have completed the Quickstart tutorial. Your app already has HyperAuthProvider wrapping its root.

Steps

1

Understand the registration phases

Before writing any UI code, look at what useRegistration tracks under the hood. The hook moves through these 12 steps in order:Each step has a status of 'pending', 'active', 'done', or 'error'. You’ll use these to render a live checklist.
2

Create the RegistrationForm component

Create a new file src/RegistrationForm.tsx:
src/RegistrationForm.tsx
useRegistration is called without arguments — it reads the client from HyperAuthProvider internally. The register(alias) function is the only call you need to make. Everything else — passkey creation, identity generation, on-chain submission — happens automatically.
3

Add the ProgressList component

Add this to the same file, below RegistrationForm:
src/RegistrationForm.tsx
Each RegistrationStep has three fields:
The detail field carries short contextual text that HyperAuth fills in as each step finishes — for example step 0 sets detail to 'Available' once the alias check passes, and step 3 sets it to the predicted smart account address.
4

Add the result and error components

Still in src/RegistrationForm.tsx:
src/RegistrationForm.tsx
RegistrationOutcome is the shape of the result value returned by the hook once registration completes:
5

Mount the form in your app

Open src/App.tsx and add the form inside the ready branch:
src/App.tsx
6

Run the flow end to end

Start the dev server and open the app:
Type an alias — for example alice — and click Register. You’ll see the progress list come alive one row at a time:
Follow the browser’s WebAuthn prompt when step 1 appears. After step 10 confirms on-chain, the result panel appears with your DID, smart account address, and transaction hash.
If the alias is already taken, the flow stops at step 0 with an error message and the Try again button resets everything so the user can pick a different name.

What you have built

You’ve built a complete identity registration flow. useRegistration manages all twelve steps of the process — alias checking, passkey creation, identity generation, account prediction, fee sponsorship, signing, on-chain submission, and session storage — and exposes just enough state for your UI to reflect exactly what is happening at every moment. The result.did and result.smartAccount values you received are now live on-chain. The next tutorial, Sign and Verify Data, shows how to use the identity you just created to sign arbitrary messages.