
Security News
CVE Volume Surges Past 48,000 in 2025 as WordPress Plugin Ecosystem Drives Growth
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.
@auth0/auth0-acul-react
Advanced tools
The Auth0 ACUL React SDK enables you to build Advanced Customization for Universal Login with React hooks and components.

📚 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.
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.
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.
FAQs
The Auth0 ACUL React SDK enables you to build Advanced Customization for Universal Login with React hooks and components.
We found that @auth0/auth0-acul-react demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 49 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.

Security News
Socket CEO Feross Aboukhadijeh joins Insecure Agents to discuss CVE remediation and why supply chain attacks require a different security approach.

Security News
Tailwind Labs laid off 75% of its engineering team after revenue dropped 80%, as LLMs redirect traffic away from documentation where developers discover paid products.