afterbuild/ops
ERR-923/stack trace
ERR-923
Add a custom domain to a v0 app on Vercel without 404s

Add a custom domain to a v0 app on Vercel without 404s

Last updated 15 April 2026 · 8 min read · By Hyder Shah
Direct answer

v0 apps 404 on a custom domain because the apex is pointed at the wrong IP, the www subdomain is missing, or Vercel is bound to the wrong project. Fix DNS at your registrar, add both apex and www in Vercel, pick a canonical redirect direction, and wait for SSL to provision. 20 minutes end to end.

Quick fix for Add a custom domain to a

Start here

Step 1 — Add the domain in Vercel

In Vercel → your project → Settings → Domains, add both yourapp.com and www.yourapp.com. Vercel will show the exact DNS records you need — usually an A record pointing at 76.76.21.21 for the apex and a CNAME pointing at cname.vercel-dns.com for www.

Deeper fixes when the quick fix fails

  1. 02

    Step 2 — Set DNS at your registrar

    At your domain registrar (Cloudflare, Namecheap, Google Domains), add exactly the records Vercel listed. Remove any old records for @ and www that point somewhere else. If you use Cloudflare, set proxy to DNS only (grey cloud) until SSL is working, then decide whether to proxy.

  2. 03

    Step 3 — Pick a canonical: apex or www

    In Vercel, click the three dots next to one of your two domains and select “Redirect to the other.” Pick one canonical (www → apex is standard today). Never have both resolve independently — Google will split ranking signals between them.

  3. 04

    Step 4 — Handle trailing slashes and Next.js config

    In next.config.js, set trailingSlash: false (or leave default) and do not also redirect in middleware. Double redirects between trailing-slash variants and apex/www cause infinite loops. Keep it simple: one redirect layer, run by Vercel only.

  4. 05

    Step 5 — Wait for SSL and verify

    Vercel provisions Let’s Encrypt automatically. It usually takes 1–5 minutes but can take longer if DNS is still propagating. Verify with curl -I https://yourapp.com — you want a 200 on the canonical and a 308 on the non-canonical, both with a valid certificate.

Why AI-built apps hit Add a custom domain to a

v0 deploys to a preview URL on v0.dev or a Vercel-generated origin. Binding a custom domain requires DNS at your registrar, a matching domain added to your Vercel project, and an agreement between apex and www so one redirects to the other.

Getting any surface wrong — wrong A record, missing www, Vercel bound to a different project — returns 404 or DEPLOYMENT_NOT_FOUND. Trailing slashes and Next.js config can add a second redirect layer that confuses the browser further.

Diagnose Add a custom domain to a by failure mode

Match what you see in the browser to what needs fixing.

SymptomRoot causeFix step
404 on apex (yourapp.com)Apex A record missing or wrongStep 1
Works on www, 404 on apexApex not added to Vercel projectStep 2
DEPLOYMENT_NOT_FOUNDDomain bound to a different Vercel projectStep 3
Infinite redirect loopApex and www both redirect at each otherStep 4
SSL error / not secure warningSSL still provisioning or DNS staleStep 5

Related errors we fix

Still stuck with Add a custom domain to a?

Emergency triage · $299 · 48h turnaround
We restore service and write the root-cause report.

Domain still 404-ing after you’ve tried everything? We fix these in under an hour.

  • 404 on the apex, works on www (or vice versa)
  • SSL error won't go away
  • Redirect loop between apex and www
start the triage →

Add a custom domain to a questions

Why does my v0 app return 404 on the custom domain?+
Almost always because the domain is bound to a different Vercel project (or no project), or the apex A record was never added at your registrar. In Vercel → Domains, confirm the domain sits under the correct project and shows 'Valid Configuration.' At your registrar, confirm the A record matches what Vercel asked for exactly.
Should I point the apex or the www to Vercel?+
Both. Add an A record for the apex pointing at Vercel's IP and a CNAME for www pointing at cname.vercel-dns.com. Then pick one as canonical in Vercel and redirect the other to it. Don't try to 'just use www' and leave the apex broken — users will type the apex and get a 404.
Why does my v0 custom domain loop between apex and www?+
Both domains are trying to redirect at each other. Open Vercel → Domains and confirm only one domain has 'Redirect to' set. The other should be the canonical target. If you also redirect in middleware or next.config, remove that — let Vercel own redirects at the edge.
How long does SSL take to provision on Vercel?+
Usually 1–5 minutes after DNS resolves. If it takes longer, DNS is still propagating (use dig yourapp.com +short to verify) or Cloudflare's proxy is blocking Let's Encrypt's challenge. Turn Cloudflare proxy off (grey cloud) until SSL provisions, then decide whether to re-enable.
Does v0 charge extra for a custom domain?+
No. Custom domains attach to the Vercel project you deployed to, not to v0 itself. Vercel's Hobby plan allows custom domains for free on personal projects. For commercial use, you need the Pro plan ($20/month) per the Vercel terms of service.
How much does it cost to have you set up the domain?+
Our Integration Fix at $799 covers domain setup + any other single integration (Stripe, auth, email). Emergency Triage at $299 covers a broken domain as a single blocker with 48-hour turnaround. Most custom-domain setups are included in the Deploy-to-Production Pass at $1,999 alongside env, monitoring, and error tracking.
Next step

Ship the fix. Keep the fix.

Emergency Triage restores service in 48 hours. Break the Fix Loop rebuilds CI so this error cannot ship again.

About the author

Hyder Shah leads Afterbuild Labs, shipping production rescues for apps built in Lovable, Bolt.new, Cursor, Replit, v0, and Base44. our rescue methodology.

Add a custom domain to a experts

If this problem keeps coming back, you probably need ongoing expertise in the underlying stack.

Sources