TL;DR: Deploy your app to LingCode Cloud from the Mac IDE (the Cloud button in the toolbar). In the success panel, expand Custom domain, type app.yoursite.com, and click Attach. Then at your domain registrar add one record β a CNAME to apps.lingcode.dev, or an A record to 138.197.107.228 for a root domain. HTTPS is issued automatically on the first visit. The IDE shows Pending DNS β Verified β when it's live.
You shipped something to LingCode Cloud and it lives at a lingcode.dev/apps/<id>/ URL. (Haven't deployed yet? Start with Deploy your app to LingCode Cloud β the one-click Cloud button β then come back here.) That's fine for testing, but a real product wants yourbrand.com. The good news: putting your own domain in front of a Cloud app is a two-minute job, and you never touch a TLS certificate β LingCode's edge issues and renews HTTPS for you the moment your DNS points at it.
A "custom domain" is just a friendly front door. Your app already runs on LingCode's infrastructure; attaching a domain tells the edge "when a request arrives for yourbrand.com, serve this app." Everything that makes the app work β the HTML, the hashed JavaScript chunks, client-side routes β is served on your domain exactly as it is on the default URL, just under your name and with your padlock.
There are two halves to it, and they're worth keeping separate because they happen in two different places: attaching the domain (in the IDE β tells LingCode the domain is yours) and pointing the domain (at your registrar β tells the internet where the domain lives). Both have to be true before the site loads. This tutorial walks each, explains the DNS choices, and covers the two things that trip people up.
CNAME vs an A record (subdomain vs root)www in one stepLingCode runs an edge in front of your apps. When you attach a domain, LingCode records that yourbrand.com belongs to your app. When a browser then asks for yourbrand.com, the edge checks that the domain is registered, requests a free Let's Encrypt certificate on demand, and serves your app over HTTPS β including every /assets/β¦ file and any deep link your single-page app uses. You never generate, upload, or renew a certificate.
That "on demand" detail is why the order matters a little: the certificate is issued the first time someone hits the domain after DNS points at LingCode. So you attach, you point DNS, and the first visit a few minutes later is what flips it live.
lingcode.dev/apps/<id>/ URL.app.yourbrand.com or yourbrand.com), and click Attach.www one, leave "Also add <the other>" checked to register both at once.The IDE then shows the DNS record you need and a per-domain status dot β orange (Pending DNS) until your records resolve, green (Verified) once they point at LingCode.
Go to wherever your domain's DNS lives (your registrar, or whoever runs your nameservers) and add one of these records. The IDE shows both; pick the one that fits:
app.yourbrand.com) β a CNAME record pointing to apps.lingcode.dev. This is the preferred option β it tracks our edge automatically if the IP ever changes.yourbrand.com, with no subdomain) β an A record pointing to 138.197.107.228. Apex domains can't use a CNAME, which is why the A record exists.If you attached both the root and www, add the matching record for each: an A record on the root and a CNAME on www (pointing to apps.lingcode.dev) is the typical pairing.
It's usually at whoever you bought the domain from. We have step-by-step guides for the common registrars β Namecheap, Cloudflare, GoDaddy, Porkbun, and more β plus a general walkthrough in connecting a domain with DNS. The record type and target are the same wherever you add them.
DNS changes take anywhere from a minute to (rarely) an hour to spread. The IDE's status dot turns green when your records resolve to LingCode's edge; from that point the first visit issues the certificate and the site is live over HTTPS. You can also just open https://yourbrand.com in a browser β the first load may take a beat while the certificate is minted, then it's instant.
Reopen the Custom domain section any time to see the domains attached to an app, each with its live status. To remove one, click the β next to it β that detaches it immediately (your app keeps running on its default URL and any other domains). Re-deploying the app with the same project does not disturb attached domains: the deploy updates the files in place, and the domain keeps pointing at the same app.
A few things worth knowing: a domain can be attached to only one app at a time (attaching one that's already in use is rejected), *.lingcode.dev names are reserved, and the domain belongs to the same LingCode account the IDE is signed into.