The Gap Between "Working" and "Live"
You have built something. It runs in Claude's Artifact preview, or in Bolt's browser panel, or as an HTML file on your desktop. You open it, click around, everything works. So why can't you just send someone a link?
Because right now, your app exists only on your computer — or inside the platform where you built it. There is no address on the internet for it yet. When you share a link, there needs to be a computer somewhere running your app and serving it to whoever visits. That computer is called a server.
The good news: you do not need to set up a server yourself. There are free services that handle this in under five minutes. You drag a file, they handle the rest, and you get a real URL you can share with anyone.
Deployment means moving your app from "on my computer" to "on a computer that is always connected to the internet." That computer gives your app a URL. Anyone who visits that URL sees your app.
Which Path Applies to You
How you deploy depends on how you built the app. Here is a quick way to figure out your path:
- You have a saved .html file (exported from Claude, or downloaded from somewhere) — go to Path A.
- You built it in Bolt — go to Path B.
- You built it in Replit — go to Path C.
- You built it in Lovable — go to Path D.
- You built it in v0 — go to Path E.
If you are not sure, think about what you were using when you built the app. If you had a live preview inside the tool while you described what you wanted, you probably used one of the platforms above. If you copied and pasted code into a text file yourself, you have an HTML file.
Path A — You Have an HTML File
If you built your app in Claude and saved the code as a .html file, you are in the best situation for easy deployment. A single HTML file is the simplest possible thing to put online.
The service to use is Netlify. It is free, takes about two minutes, and no account is required for the quickest option.
How to Deploy with Netlify Drop
quirky-name-12345.netlify.app. That is your app, live on the internet. Click it to confirm it works, then copy and share it.That is it. Anyone with the link can now open your app.
Renaming the Random URL
The auto-generated URL (quirky-name-12345.netlify.app) is not very memorable. If you create a free Netlify account, you can rename it to something like my-watchlist.netlify.app. This takes about 30 seconds in the Netlify dashboard under Site Settings → Site name.
Updating Your App Later
If you make changes to your app and want to redeploy, you need a Netlify account to update the same URL. Without an account, each drop creates a new random URL. Sign up for free and you can drag a new version of the file onto the same site to update it — visitors see the new version immediately.
Pro Tip: Test the Deployed Version
After deploying, open the live URL in a different browser or an incognito window. Your app should look exactly the same as when you tested it locally. If something looks different, it is usually a font or image that was loaded from your computer's files instead of the internet — ask AI to fix the file paths.
Path B — You Built in Bolt
Bolt has a built-in deploy button. Look for a Publish or Deploy button in the top right area of the Bolt interface. Click it and Bolt deploys your app automatically — usually to a Netlify or StackBlitz URL.
You get a shareable URL within about a minute. Bolt handles the server side completely; you do not need to do anything technical.
To update after making changes: make your changes in Bolt, then click the deploy button again. The same URL gets updated.
Path C — You Built in Replit
Replit apps run live by default when you press Run — you may already have a URL. Look at the top of the page for a URL in a preview panel or a browser address bar showing something like your-project.username.repl.co. That is your app.
However, Replit apps on the free plan go to sleep when no one is using them. The first person to visit after a period of inactivity waits 20–30 seconds for it to wake up. For a personal tool this is fine. For something you want to share widely, Replit offers paid deployment plans that keep your app running continuously.
Free Replit apps sleep when inactive. If you are building something for occasional personal use, the free tier works fine — it is just slow to start after being idle. If you need it to be fast every time for anyone, you will need a paid Replit plan or to export and deploy elsewhere.
Path D — You Built in Lovable
Lovable has a Publish button. Find it in the top right of the Lovable editor and click it. Your app gets a URL ending in .lovable.app that is immediately shareable.
Lovable also lets you connect a custom domain if you want your own URL. Look for domain settings in your project's settings panel.
Path E — You Built in v0
v0 is made by Vercel, so deployment goes directly to Vercel. There is a Deploy button in the v0 interface. Click it, connect or create a free Vercel account, and your app is live on a vercel.app URL in about a minute.
Vercel is fast and reliable. If you plan to build more things, it is worth getting comfortable with the Vercel dashboard — it shows you who is visiting and lets you redeploy in one click when you make changes.
Getting Your Own Domain (Optional)
A domain like mywatchlist.com costs about $10–15 per year and makes your app feel real. It is optional — the free .netlify.app or .vercel.app URLs work fine for personal use and sharing with friends.
When a custom domain is worth it:
- You are sharing it professionally or showing it in a portfolio
- You expect people to remember and return to it
- The app serves a real purpose for others, not just yourself
How to Get a Domain
Buy a domain from a registrar — Namecheap, Cloudflare, Squarespace Domains, or Porkbun are all reliable and cost about the same. Search for the name you want, pay for one year, then connect it to wherever your app is hosted.
Both Netlify and Vercel have clear in-dashboard instructions for connecting a custom domain. The process involves adding a couple of DNS records — the dashboard tells you exactly which records to add and where, and it usually takes about 10 minutes to work.
Ask AI to Walk You Through It
If the domain connection steps feel confusing, describe your situation to Claude: "I bought a domain on Namecheap and want to connect it to my Netlify site. Walk me through it step by step." AI is good at breaking down this kind of technical task into plain instructions.
Your Data After Deployment
This is the part that surprises most people. When you deploy, your app goes live — but your data does not go with it.
If your app saves data in the browser (the most common approach for vibe-coded apps), that data is stored on your browser on your computer. When someone else visits your deployed app, their browser starts empty. And when you visit the deployed URL, your browser is also empty — because the deployed version is different from the version you tested locally.
This matters depending on what kind of app you built:
- Personal tools that only you use (habit tracker, shopping list, budget calculator) — Browser-stored data is fine. You will always visit from the same browser, so your data is always there.
- Apps you share with others who each keep their own data — Also fine. Each person's browser stores their own data independently.
- Apps where multiple people share the same data (a shared to-do list, a team board, anything with user accounts) — Browser storage does not work here. Everyone needs to access the same data, which means you need a database.
Browser storage (localStorage) saves data in the user's own browser. It is private to that browser on that device. A database lives on a server and is accessible to anyone you give access to — from any device, any browser. Most simple personal apps do not need a database. Most shared apps do.
Adding a Database (If You Need One)
If your app needs to share data between users or be accessible from multiple devices, the easiest option for vibe-coded apps is Supabase. It is a free service that provides a database you can connect to your app without writing server code.
Ask AI to help: "My app currently saves data in localStorage. I want to move to a real database so any device can access it. I'm using Supabase. Walk me through the changes."
This is a bigger step — it adds complexity to your app. Only take it if you genuinely need shared data. Most vibe-coded apps do not.
What Surprises People After Going Live
Even when everything works locally, going live often reveals new issues. These are normal and fixable.
"It looks different on my friend's phone"
Different browsers and screen sizes render things differently. What looked perfect on your laptop may have overlapping text on a phone, or different fonts on Safari vs. Chrome. If you asked AI for a mobile-friendly design, test it on an actual phone before sharing widely.
My deployed app looks fine on my laptop but the buttons are tiny and the text overlaps on mobile. Here is the current code: [paste your HTML]. Fix the mobile layout — the buttons should be full width on small screens and there should be more space between elements.
"My friends immediately found bugs I never noticed"
When you test your own app, you use it exactly as you designed it — in the order that works, with data that makes sense. Real users do unexpected things. They click buttons in the wrong order, leave fields blank, type unusual characters, and use the app backwards from how you imagined.
This is good. These are genuine bugs and real feedback. Describe what your friend found and ask AI to fix it.
"Anyone on the internet can see it"
Your deployed URL is public. Anyone who has it — or finds it — can open your app. This is usually what you want. But if your app contains personal information, private data, or anything you would not want a stranger to see, do not deploy it to a public URL without adding some form of protection.
The simplest protection: a password prompt. Ask AI to "add a simple password gate to this app — the correct password is 'abc123' — show a password screen before the main app and only show the app if the correct password is entered." This is not real security, but it keeps casual visitors out of personal tools.
"I updated the file but the live site still shows the old version"
Browsers cache (remember) old versions of websites to load them faster. After redeploying, the live site may show the old version for a few minutes. Try opening the URL in a private/incognito window, or hold Shift and press Refresh to force a fresh load.
Deployment — Quick Reference
- HTML file → Netlify Drop — Drag your file onto netlify.com. Live in under a minute. Free, no account needed.
- Built in Bolt, Lovable, v0 — Use the Publish or Deploy button in the tool. They handle everything.
- Built in Replit — Your app already has a URL. Free plans sleep when inactive.
- Custom domain — Optional. Buy from a registrar (~$10/year), connect in Netlify or Vercel settings.
- Your local data does not transfer — The deployed version starts empty. Browser storage is device-specific.
- Shared data between users requires a database — Most simple personal apps do not need this.
- Test on a real phone after deploying — Mobile layout issues only show up on real devices.
- If it looks broken after redeploy — Open an incognito window or force-refresh with Shift+Refresh.
Related Guides
Growing Your App
Your app is live. Learn how to add features safely, handle feedback, and avoid regressions.
7 Vibe Coding Mistakes That Waste Your Time
If your build sessions feel slow or circular, these are the patterns to fix first.
When Vibe Coding Isn't Enough
Know when your project has outgrown AI-only building and how to bring in developer support.