Skip to content

<SignUp />

<SignUp /> renders the complete sign-up flow — identifier entry, identifier verification (email code / email link / phone code), optional first-name / last-name capture, password / passkey enrollment when required, and the post-sign-up handoff (organization invitation acceptance, automatic active-org selection).

Available from v1 of @authn.sh/sdk-react.

import { SignUp } from '@authn.sh/sdk-react';
export default function SignUpPage() {
return <SignUp />;
}
PropTypeDefaultDescription
routing'path' | 'hash' | 'virtual''path'How the component navigates between internal steps.
pathstring'/sign-up'Base path for routing: 'path'.
signInUrlstringWhere to send users who click “Already have an account? Sign in”. Defaults to the environment’s sign-in URL.
afterSignUpUrlstringenvironment home_urlWhere to send users on successful sign-up.
afterSignInUrlstringenvironment home_urlUsed when the sign-up flow transfers into a sign-in (e.g. magic-link recipient who already has an account).
redirectUrlstringthe OAuth callback handlerOAuth redirect_uri override.
initialValuesPartial<SignUpFormValues>{}Pre-fills { emailAddress, firstName, lastName, phoneNumber }.
appearanceAppearancePer-render appearance override.
localizationLocalizationPer-render localization override.
unsafeMetadataRecord<string, unknown>Forwarded as User.unsafe_metadata on creation.
forceRedirectUrlstringForces the post-sign-up redirect to this URL regardless of afterSignUpUrl.
start → identifier entry + optional fields
verifying → identifier verification in flight (email-code / magic-link / phone-code)
missing_requirements → environment requires a field the form didn't capture (e.g. password)
complete → User created, session minted, redirect imminent

The missing_requirements state is the affordance for environments that require, e.g., a password on sign-up. The component renders the missing-field prompt automatically — there’s no extra wiring.

If a user arrives at <SignUp /> via an organization invitation link (the ?__authn_ticket=... query param), the component:

  1. Verifies the ticket against /v1/me/invitations/accept.
  2. Pre-fills the email field with the invited address and locks editing.
  3. After verification, automatically adds the new User to the inviting Organization and sets it as User.active_organization.

No extra props required — the component reads the ticket from the URL.