Skip to main content
Deployments

How deployment URLs are built

Commit, branch, and production URL patterns on Easel, and where to find them in the dashboard.

This page covers generated HTTPS URLs for commits, branches, and production. You will find where they appear in the dashboard, how Easel builds each pattern, and how truncation and anti-phishing shortening work.

Where to view generated URLs

You can open generated URLs in the dashboard:

  1. Open your workspace and select the project.
  2. Open the Deployments tab.
  3. Select a deployment to open its detail page.

On the deployment detail page, the Domains section shows:

  • Primary URL (globe icon): the main URL for this deployment (commit-style when available). Use Visit to open it.
  • +N: when more than one non-Git URL exists, hover the +N badge for the Assigned Domains list.
  • Branch URL (branch icon): always points to the latest deployment for that Git branch.
  • Commit URL (commit icon): always points to this specific deployment (tied to the Git commit hash).

All generated URLs use the suffix preview.easelusercontent.com and are reachable over HTTPS.

URL components

Generated URLs use these pieces. The pattern depends on whether the URL is for a commit, a branch, or production:

ComponentDescriptionUsed in
Project slugSlugified project nameAll URL types
Commit hashFirst 9 alphanumeric chars of the Git commit hashCommit URL only
Scope slugSlugified workspace or team name (capped in length)All URL types
Branch slugSlugified Git branch name (for example feature-xyz from feature/xyz)Branch URL only

Easel slugifies project and scope names: lowercased, non-alphanumeric characters become hyphens, and extra hyphens collapse. Branch names with slashes become hyphens (for example main stays main, feature/foo becomes feature-foo).

Commit URL

The commit URL is unique to a single deployment. It uses the Git commit hash so the URL matches the exact version you deployed.

Pattern:

https://project_slug-commit_hash-scope_slug.preview.easelusercontent.com

Example for project My App, commit a1b2c3d4e, and scope acme:

https://my-app-a1b2c3d4e-acme.preview.easelusercontent.com

Use this URL when you want to share or bookmark a specific deployment. It does not change when you push new commits.

Branch URL

The branch URL always points to the latest deployment for that branch. Every new deploy for the same branch updates what the URL serves.

Pattern:

https://project_slug-git-branch_slug-scope_slug.preview.easelusercontent.com

Example for project My App, branch main, and scope acme:

https://my-app-git-main-acme.preview.easelusercontent.com

Use this URL for ongoing review or staging. The hostname stays the same while always showing the latest build for that branch.

Production URL

When you deploy to production, Easel also creates a production URL. It always points to the latest production deployment for that project.

Pattern:

https://project_slug-scope_slug.preview.easelusercontent.com

Example for project My App and scope acme:

https://my-app-acme.preview.easelusercontent.com

Only one production URL exists per project and scope. It updates whenever you deploy to production.

Truncation when names are long

The subdomain (the part before .preview.easelusercontent.com) must be at most 63 characters. If the combined slug would be longer, Easel shortens it so the URL stays valid:

  • Scope first: Easel shortens the scope segment so the project name stays readable. Scope is also capped when the URL is built.
  • Hard cap at 63: if the result is still over 63 characters, Easel keeps the first 63 characters of the subdomain. You keep project and branch or commit, and may lose the end of the scope.

You do not need to act; truncation is automatic. If you rely on shareable URLs, keep project and workspace names reasonably short so the full scope remains in the URL.

Anti-phishing protection

If the slugified project name looks like a domain name (for example www-mycompany-com), Easel shortens it to avoid browser anti-phishing warnings. For example, a project that slugifies to www-mycompany-com might appear as mycompany in the URL.

This only affects the project segment. Branch, commit hash, and scope are unchanged. If your project name is not domain-like, no shortening occurs.

Limitations

  • Long names: if project or workspace names are long, Easel truncates the scope (and in rare cases more). Use shorter names when you need predictable, shareable URLs.
  • Custom domains: generated URLs on this page are separate from your own hostnames. Attach a domain in project settings; see Custom domains.
  • Missing URLs: if a deployment has no URLs yet, the build or manifest upload may still be in progress. Wait for a completed state and refresh the deployment page.

Example URLs at a glance

TypeExample URL
Commitmy-app-a1b2c3d4e-acme.preview.easelusercontent.com
Branchmy-app-git-main-acme.preview.easelusercontent.com
Productionmy-app-acme.preview.easelusercontent.com

Prefix any of these with https:// when opening or sharing.

  • Deployments: how deployments are created and managed
  • Environments: preview vs production and when each URL type is created
  • Custom domains: serve production on your hostname with automatic TLS