
π Documentation | π Getting Started | π» API Reference | πͺ Hooks | Examples | π¬ Feedback
Developers using Auth0βs Universal Login can use this React SDK to customize screens like login, signup, or reset password. It provides hooks, context, and utilities to build flexible, type-safe experiences that match your brand and deliver a seamless user experience.
This feature is still in Early Access.
Before starting, ensure that you have the following setup:
npm install @auth0/auth0-acul-react
Peer dependency:
npm install react
The SDK supports partial imports for each screen, allowing you to include only the code you need for your specific use case. This helps keep your bundle size small and improves performance.
Also, you can use a root import to load all screens from a single bundle if your app requires it.
Each screen has its own set of hooks and methods. You can import only what you need for the screen you're building.
The following example shows how to import and use SDK to build login-id screen.
import {
// Context hooks
useUser,
useTenant,
useBranding,
useClient,
useOrganization,
usePrompt,
useScreen,
useTenant,
useTransaction,
useUser,
useUntrustedData,
// Common hooks
useErrors,
useTexts,
// Utility hooks
useUsernameValidation,
usePasswordValidation,
useLoginIdentifiers,
// Submit methods
login,
passkeyLogin,
federatedLogin,
} from '@auth0/auth0-acul-react/login-id';
The SDK also supports a root import, which lets you load all screens from a single bundle. This is useful if your app dynamically renders different screens at runtime based on the current Auth0 flow, for example, when you want one unified build that can handle all possible screens.
However, root imports arenβt ideal for most projects since they can increase bundle size. If you only need specific screens, use partial imports instead for better performance.
import {
// Common hooks
useCurrentScreen,
useAuth0Themes,
useErrors,
// Screen-specific hooks for multiple screens
useLoginId,
useSignupId,
useResetPassword
} from '@auth0/auth0-acul-react';
Typescript types and interfaces can be imported from @auth0/auth0-acul-react/types for type safety and better DX.
import type {
Connection,
CustomOptions,
IdentifierType,
Organizations,
EnrolledDevice
// ...other types
} from '@auth0/auth0-acul-react/types';
Refer to our API Reference for the full list of available types and interfaces.
| No. | Prompt | Screen Name | Documentation Link |
|---|---|---|---|
| 1 | login | login | Link |
| 2 | login-id | login-id | Link |
| 3 | login-password | login-password | Link |
| 4 | signup-id | signup-id | Link |
| 5 | signup-password | signup-password | Link |
| No. | Prompt | Screen Name | Documentation Link |
|---|---|---|---|
| 6 | login-passwordless | login-passwordless-email-code | Link |
| 7 | login-passwordless | login-passwordless-sms-otp | Link |
| 8 | passkeys | passkey-enrollment | Link |
| 9 | passkeys | passkey-enrollment-local | Link |
| 10 | phone-identifier-enrollment | phone-identifier-enrollment | Link |
| 11 | phone-identifier-challenge | phone-identifier-challenge | Link |
| 12 | email-identifier-challenge | email-identifier-challenge | Link |
| 13 | captcha | interstitial-captcha | Link |
| 14 | reset-password | reset-password-email | Link |
| 15 | reset-password | reset-password-request | Link |
| 16 | reset-password | reset-password | Link |
| 17 | reset-password | reset-password-error | Link |
| 18 | reset-password | reset-password-success | Link |
| 19 | signup | signup | Link |
| 20 | mfa | mfa-detect-browser-capabilities | Link |
| 21 | mfa | mfa-enroll-result | Link |
| 22 | mfa | mfa-begin-enroll-options | Link |
| 23 | mfa | mfa-login-options | Link |
| 24 | mfa-push | mfa-push-enrollment-qr | Link |
| 25 | mfa-push | mfa-push-welcome | Link |
| 26 | mfa-push | mfa-push-challenge-push | Link |
| 27 | mfa-push | mfa-push-list | Link |
| 28 | mfa-sms | mfa-country-codes | Link |
| 29 | mfa-sms | mfa-sms-challenge | Link |
| 30 | mfa-sms | mfa-sms-enrollment | Link |
| 31 | mfa-sms | mfa-sms-list | Link |
| 32 | mfa-email | mfa-email-challenge | Link |
| 33 | mfa-email | mfa-email-list | Link |
| 34 | invitatino | accept-invitation | Link |
| 35 | organizations | organization-picker | Link |
| 36 | organizations | organization-selection | Link |
| 37 | reset-password | mfa-otp-challenge | Link |
| 38 | mfa-otp | mfa-otp-enrollment-code | Link |
| 39 | mfa-otp | mfa-otp-enrollment-qr | Link |
| 40 | reset-password | reset-password-mfa-email-challenge | Link |
| 41 | reset-password | reset-password-mfa-push-challenge-push | Link |
| 42 | reset-password | mfa-sms-challenge | Link |
| 43 | reset-password | reset-password-mfa-otp-challenge | Link |
| 44 | mfa-phone | mfa-phone-enrollment | Link |
| 45 | mfa-voice | mfa-voice-enrollment | Link |
| 46 | mfa-recovery-code | mfa-recovery-code-challenge | Link |
| 47 | device-flow | device-code-activation-allowed | Link |
| 48 | device-flow | device-code-activation-denied | Link |
| 49 | device-flow | device-code-activation | Link |
| 50 | reset-password | reset-password-mfa-recovery-code-challenge | Link |
| 51 | reset-password | reset-password-mfa-voice | Link |
| 52 | common | redeem-ticket | Link |
| 53 | device-flow | device-code-confirmation | Link |
| 54 | mfa-phone | mfa-phone-challenge | Link |
| 55 | mfa-voice | mfa-voice-challenge | Link |
| 56 | mfa-recovery-code | mfa-recovery-code-enrollment | Link |
| 57 | reset-password | reset-password-mfa-phone-challenge | Link |
| 58 | mfa-recovery-code | mfa-recovery-code-challenge-new-code | Link |
| 59 | logout | logout | Link |
| 60 | logout | logout-aborted | Link |
| 61 | logout | logout-complete | Link |
| 62 | email-verification | email-verification-result | Link |
| 63 | login-email-verification | login-email-verification | Link |
| 64 | mfa-webauthn | mfa-webauthn-platform-enrollment | Link |
| 65 | mfa-webauthn | mfa-webauthn-error | Link |
| 66 | mfa-webauthn | mfa-webauthn-roaming-enrollment | Link |
| 67 | mfa-webauthn | mfa-webauthn-roaming-challenge | Link |
| 68 | mfa-webauthn | mfa-webauthn-platform-challenge | Link |
| 69 | mfa-webauthn | mfa-webauthn-enrollment-success | Link |
| 70 | mfa-webauthn | mfa-webauthn-change-key-nickname | Link |
| 71 | mfa-webauthn | mfa-webauthn-not-available-error | Link |
| 72 | reset-password | reset-password-mfa-webauthn-platform-challenge | Link |
| 73 | reset-password | reset-password-mfa-webauthn-roaming-challenge | Link |
| 74 | consent | consent | Link |
| 75 | customized-consent | customized-consent | Link |
| 76 | email-otp-challenge | email-otp-challenge | Link |
useUser() - Current user informationuseTenant() - Tenant configurationuseClient() - Application client informationuseScreen() - Current screen data and configurationuseTransaction() - Transaction state and methodsuseBranding() - Tenant branding and themeuseOrganization() - Organization context (if applicable)usePrompt() - Current authentication promptuseUntrustedData() - Untrusted data from the authentication flowSpecialized hooks for form validation, polling, and identifier management:
useLoginIdentifiers() - Get available login identifier types (email, phone, username)useSignupIdentifiers() - Get available signup identifier types, each with its required statususePasswordValidation(password, rules) - Real-time password strength validationuseUsernameValidation(username) - Username format and availability validationuseMfaPolling(options) - Manage MFA push notification polling lifecycleuseResend(options) - Handle resend operations with cooldown timersGeneral-purpose hooks available across all screens:
useCurrentScreen() - Get complete current screen context datauseAuth0Themes() - Access tenant branding and theme configurationuseErrors(options) - Comprehensive error management with categorization
'validation', 'auth0', 'configuration'Each screen module exports methods for screen actions:
// Login ID Screen
import {
loginMethod,
continueWithFederatedLogin
} from '@auth0/auth0-acul-react/login-id';
// Password Screen
import {
loginMethod,
forgotPasswordMethod
} from '@auth0/auth0-acul-react/login-password';
// MFA Push Challenge
import {
continueMethod,
resendPushNotification,
useMfaPolling
} from '@auth0/auth0-acul-react/mfa-push-challenge-push';
We appreciate feedback and contribution to this repo! Before you get started, please see the following:
To provide feedback or report a bug, please raise an issue on our issue tracker.
Please do not report security vulnerabilities on the public GitHub issue tracker. The Responsible Disclosure Program details the procedure for disclosing security issues.
Early Access. This SDK and its associated product are made available only in Early Access ("EA") format and are governed by the Free Trial terms of the Okta Master Subscription Agreement. If Okta elects to make a version of this SDK and its associated product Generally Available ("GA"), such GA version may have different pricing, product and feature configurations, and use of the GA product and SDK will be subject to the standard terms of the Agreement (or other such titled written or electronic agreement addressing the same subject matter) between Okta and Customer."
Auth0 is an easy to implement, adaptable authentication and authorization platform. To learn more checkout Why Auth0?
This project is licensed under the MIT license. See the LICENSE file for more info.