Build, verify, ship
Custom domains
Serve your published app on your own hostname.
Premium, Pro, Team, and Enterprise plans can connect one custom domain per project. The domain serves your published app, and access to the app must be set to Anyone.
Add the hostname
Open Publish in the project header. Under Custom domain, enter a hostname such as app.example.com and choose Add. If the row asks you to, set Access to Anyone first.
Configure DNS
At your DNS provider, add the record the sheet shows:
| Type | Host | Value |
|---|---|---|
| CNAME | Your hostname, for example app.example.com | Your app’s pre.dev address, as shown |
Enter the value as a hostname, without https:// or a path. Some providers expect only the subdomain part, such as app, in the host field. For an apex domain, use your provider’s CNAME flattening or alias record.
Verify the connection
Choose Verify Connection. DNS can take a few minutes to propagate. Once verification succeeds, the domain becomes active; allow time for the certificate before checking HTTPS.
Check the application
Open the domain and exercise key flows. Review allowed origins, sign-in callback URLs, cookies, and any provider configuration that depends on the hostname. The agent can help update application settings after the domain is active.
Troubleshooting
| Symptom | What to check |
|---|---|
| No custom domain field | The plan is Premium or higher, access is Anyone, the project has a build, and no domain is already configured |
| DNS verification fails | The hostname resolves to the exact value shown; the DNS change may still be propagating |
| Verify is unavailable | Wait for the current operation to finish |
| HTTPS is not ready | Check hostname status and certificate provisioning; do not repeatedly remove a valid DNS record |
| The app loads but sign-in or API calls fail | Check callback URLs, allowed origins, cookies, and runtime configuration |
Use the domain’s remove control to detach it, then remove the DNS record at your provider when it is no longer needed. The app’s pre.dev address keeps working.