How to move a domain between Vercel projects with "Zero Downtime"?

It is possible with Vercel to move a custom domain between projects without downtime.

Alias the Domain to New Project

Using the Vercel CLI command vercel alias, it is possible to alias the custom domain to another Vercel project's Deployment, even though the domain is already assigned to a project. You can run the following command:

vercel alias set [deployment-url-on-new-project] [custom-domain]
Aliasing the custom domain to another Deployment using the Vercel CLI.

Make sure to use the Automatic URL for the [deployment-url-on-new-project] parameter (e.g. [<project-name>-<unique-hash>-<scope-slug>.vercel.app]). Also, make sure to not include the HTTP protocol (e.g. https://) for the [custom-domain] parameter.

✅ vercel alias set hotdog-8jk8-coolcat.vercel.app sillyhotdog.im

❌ vercel alias set hotdog-8jk8-coolcat.vercel.app https://sillyhotdog.im

Assigning the Domain to New Project

With your custom domain aliased to the new target Deployment, you may now visit the original project's Domain settings. Under the domain tab, remove the domain. Under the new project's Domain settings, you may now add the domain, along with any redirects and Git branch assignments.

Using the Vercel API

Alternatively, it is possible to move a custom domain between projects with the Vercel API. This method may be quicker to perform however a brief period of downtime is likely to occur between the execution of the removal and addition API calls.

Couldn't find the guide you need?