When you publish an app on Major, it always gets an internet-accessible URL. By default that’s aDocumentation Index
Fetch the complete documentation index at: https://docs.major.build/llms.txt
Use this file to discover all available pages before exploring further.
usemajor.dev subdomain, but you can also serve apps from your own branded domain — for example, dashboard.acme.com instead of acme-dashboard.usemajor.dev.
Custom domains are configured in two steps:
- An organization admin verifies a domain you own (e.g.
acme.com) by adding two DNS records. - Any builder can then pick a subdomain (e.g.
dashboard.acme.com) when publishing an app on the verified domain.
Set up an organization domain
Adding a domain is a one-time, organization-level action that any admin can perform from Settings > Domains.- Go to Settings > Domains and click Add Domain.
- Enter the root domain you own (e.g.
acme.com). - Major shows you two CNAME records to add at your DNS provider:
| Record | Type | Target |
|---|---|---|
*.acme.com | CNAME | cname.major.build |
_acme-challenge.acme.com | CNAME | _acme-challenge.acme.major.build |
- Add both records in your DNS provider’s dashboard.
- Major automatically polls DNS, validates ownership, and issues an SSL certificate.
The wildcard CNAME (
*.acme.com) is what makes the rest of the flow zero-touch. Once it’s in place, every new subdomain you assign to an app routes to Major’s infrastructure without any further DNS changes.Verification status
After you add a domain, it progresses through these states on the Domains page:- Pending DNS — Major is waiting to see your CNAME records resolve.
- DNS verified — Records found; certificate provisioning has started.
- Provisioning certificate — Major is requesting an SSL certificate from Let’s Encrypt.
- Active — The domain is live and ready to be assigned to apps.
- Certificate failed — Issuance failed, usually because the
_acme-challengeCNAME is missing or misconfigured.
Assign a domain to an app
Once an organization domain is Active, any builder with edit access on an app can pick a subdomain on it:- Open the app in the editor and click Publish.
- In the URL picker, choose the verified organization domain.
- Enter the subdomain you want (e.g.
dashboardfordashboard.acme.com). - Click Publish.
usemajor.dev URL first. The subdomain is reserved as soon as you confirm it; routing goes live as soon as the deployment completes.
You can also assign a custom subdomain to an already-deployed app — it becomes the app’s primary URL immediately.
Multiple subdomains per app
A single app can be served from multiple subdomains at once (for example, bothdashboard.acme.com and app.acme.com). Add additional subdomains from the app’s URL settings.
Authentication on custom domains
Custom domains work for both public and private apps.- Public apps load directly with no sign-in.
- Private apps still require an authenticated Major session. We perform a one-time auth handshake the first time a user visits a custom domain:
- The user is redirected to
app.major.buildto confirm they’re signed in and have permission to view the app. - They’re redirected back to your custom domain with a short-lived session cookie scoped to it.
- Subsequent visits skip the redirect — the cookie is valid for 7 days.
- The user is redirected to
Limits
| Resource | Limit |
|---|---|
| Organization domains | 10 per organization |
| Subdomains | 20 per application |
Removing a domain
- Removing a subdomain from an app — Open the app’s URL settings and remove the entry. The last URL on an app cannot be removed; if a custom domain is the only URL, you must add another (a
usemajor.devslug or a different subdomain) before removing it. - Removing an organization domain — Go to Settings > Domains and delete the domain. You must first remove every app subdomain that uses it.
Not supported
A few configurations are intentionally not available today:- Apex domains. You can use
dashboard.acme.combut notacme.comitself as an app URL. - Multi-level subdomains.
api.acme.comworks;api.v2.acme.comdoes not — the wildcard certificate covers exactly one level. - Bring-your-own certificates. All certificates are issued by Major via Let’s Encrypt.
- Frontend-only (Vite) apps. Custom domains are available for full-stack (Next.js) apps only.