> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.com/llms.txt
> Use this file to discover all available pages before exploring further.

> Describes how to migrate from Classic Login to Universal Login with ACUL.

# Migrate from Classic Login to Universal Login with ACUL

<Warning>
  At this time, Auth0’s active development efforts are focused on Universal Login, and Classic Login no longer receives updates. Unless your specific use case requires the Classic experience, implementing Universal Login is recommended.
  For a feature comparison between login experiences, review [Universal Login vs. Classic Login](/docs/authenticate/login/auth0-universal-login/universal-login-vs-classic-login).
</Warning>

We recommend migrating your [Classic Login](/docs/authenticate/login/auth0-universal-login/universal-login-vs-classic-login/classic-experience#classic-login-experience) screen implementation to [Universal Login](/docs/authenticate/login/auth0-universal-login/universal-login-vs-classic-login/universal-experience) using [Advanced Customizations for Universal Login (ACUL)](/docs/customize/login-pages/advanced-customizations#advanced-customizations-for-universal-login-acul).

<Card title="Before you start">
  You need:

  * An Auth0 development tenant configured with [Universal Login](/docs/authenticate/login/auth0-universal-login) and a [custom domain](/docs/customize/custom-domains).
  * [Auth0 CLI](https://auth0.github.io/auth0-cli/) installed and configured with your development tenant.
  * A [GitHub](https://github.com/) repository to contain your ACUL custom loign screens.
  * An inventory of your Classic Login experience assets:
    * UI components.
    * CSS/theme tokens and brand assets.
    * Validation rules (email format, required fields).
    * Error handling behavior.
</Card>

## Initialize an ACUL project

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  If you have not configured your development tenant with Auth0 CLI, use the [auth0 login](https://auth0.github.io/auth0-cli/auth0_login.html) command.
</Callout>

Navigate to a location to build your ACUL project and run the following command:

```bash theme={null}
auth0 acul init acul-login --screens login-id,login-password
```

Auth0 CLI initializes your project with pre-built `login-id` and `login-password` authentication screens.

To learn more, read [auth0 aclu on GitHub](https://auth0.github.io/auth0-cli/auth0_acul_init.html).

## Customize ACUL screens

Customize the `login-id` and `login-password` screens to align to your organization standards.

You should consider the following:

* Reuse existing CSS/theme and React components.
* Apply branding (assets, typography, layout).
* Add basic client-side validation (email required/format; password required).
* Standardize error presentation (consistent and accessible).

You can develop your ACUL screens locally to customize them using the command:

```bash theme={null}
auth0 acul dev
```

To learn more, read [ACUL Development Workflow](/docs/customize/login-pages/advanced-customizations/development-workflow).

## Validate the ACUL migration

To validate the user end-to-end login experience, you can use the [auth0 acul](https://auth0.github.io/auth0-cli/auth0_acul_dev.html) command:

```bash theme={null}
auth0 acul dev --connected
```

You need to test and ensure the following:

* The authentication flow uses your custom UI for the `login-id` and `login-password` screens and that they display correctly.
* Wrong password and other server-side error messages are clearly rendered.
* Users are successfully redirected back to your application.
* Email validation, if enabled, behaves as expected.

To learn more, read [ACUL live tenant integration testing](/docs/customize/login-pages/advanced-customizations/development-workflow#live-tenant-integration-testing).

## Deploy ACUL screens to production tenant

The ACUL screen project includes a deployment setup you can use, as a starting point, to deploy your screens to production.

The ACUL deployment steps include:

* Building your screen asset bundles.
* Publishing them to your CDN.
* Enabling ACUL to your Auth0 production tenant.

To learn more, read [ACUL Deployment workflow](/docs/customize/login-pages/advanced-customizations/deployment-workflow).

## Learn more

* [Advanced Customizations for Universal Login (ACUL)](/docs/customize/login-pages/advanced-customizations)
* [ACUL React SDK Reference Documentation](docs/libraries/acul/react-sdk)
* [Auth0 CLI Reference Documentation](https://auth0.github.io/auth0-cli/auth0_acul.html)
* [ACUL Sample Application](https://github.com/auth0-samples/auth0-acul-samples)
