How to Launch a Vibe Coded App: From Prompt to Production
How to launch a vibe coded app with a tested release candidate, the right deployment route, a focused launch page, and a practical rollout plan.

Key takeaways
- Freeze one release candidate, test the complete first-use path, and keep a known-good version you can restore before inviting strangers.
- Choose a deployment route that matches the app you actually built, then verify the production domain, configuration, payments, email, analytics, and support path.
- Make the launch page answer who the app is for, what job it completes, what access costs, and what a visitor should do next.
- Launch first to a small relevant group, fix repeatable blockers, and only then use a broader venue that fits the product and its stage.
On this page 32
- TL;DR: how to launch a vibe coded app
- How to launch a vibe coded app without confusing preview and production
- A dated launch example: Caspian on Show HN
- Step 1: freeze the promise before the build keeps changing
- Step 2: create a release candidate you can identify and restore
- Step 3: choose the deployment route that fits the current app
- If you publish from Lovable, Replit, or Bolt
- If you deploy from a repository
- If the app ships through mobile stores
- Step 4: test the production journey, not just the preview
- Test production configuration explicitly
- Make failure observable
- Step 5: prepare a launch page that can answer four questions
- Set the link preview before people share it
- Step 6: where to launch a vibe coded app by product and user
- Step 7: run a limited release before the public launch
- Step 8: operate launch day as a feedback window
- Answer questions as the maker
- Step 9: make the first post-launch decisions
- How to launch a vibe coded app in seven days
- Common vibe-coded launch mistakes
- Launching the preview URL
- Prompting after the final test
- Testing only with the builder's account
- Treating a polished screen as a completed product
- Moving hosts without a named requirement
- Publishing to everyone before observing anyone
- Hiding limits behind optimistic copy
- Using launch-site engagement as the product result
- Generating the maker story and submitting it untouched
- The final go or no-go check
- Sources
To learn how to launch a vibe coded app, turn the working prototype into one named release candidate, test its complete first-use path in production, and release it to a small group before asking a broader audience to try it. The building method does not excuse a broken promise: your app should do its stated core job, state its limits, preserve a recoverable version, and give users a clear next step.
Disclosure: ZeroRaised publishes this guide and is one of the launch options mentioned below. This article makes no claim about the site's audience size, traffic, conversions, or launch outcomes.
TL;DR: how to launch a vibe coded app#
| Phase | Decision to make | Evidence required before moving on | Useful first-party reference |
|---|---|---|---|
| Scope | What single job does this release promise? | A stranger can understand the user, job, input, and expected result from the launch page | ZeroRaised editorial method |
| Release candidate | Which exact version will ship? | A tagged or otherwise identifiable version, a production configuration checklist, and a known-good version you can restore | GitHub releases and Vercel rollback, checked 18 Oct 2026 |
| Production test | Can a new user complete the core path? | A clean-account test on the production domain, including any real email or payment step | Replit publishing and Stripe go-live checklist, checked 18 Oct 2026 |
| Limited release | What breaks when unfamiliar users arrive? | Repeated blockers are recorded, prioritized, fixed, and retested | ZeroRaised editorial method |
| Public launch | Which venue contains the intended users and permits this stage? | The app satisfies that venue's current submission rules | Show HN guidelines, Product Hunt guide, and ZeroRaised submission form, checked 18 Oct 2026 |
| Follow-through | What happens after someone clicks? | Support ownership, source attribution, a change log, and a short repair queue | ZeroRaised editorial method |
How to launch a vibe coded app without confusing preview and production#
A vibe-coded app can move from an instruction to a convincing preview before the maker has defined a release. That is useful during exploration, but it can blur three separate things: the editable project, the preview used while building, and the production version that strangers receive.
The publishing model depends on the tool. Lovable says publishing deploys a snapshot, that later edits do not reach the live app until the maker publishes again, and that the publisher can control the audience. Replit likewise separates its development preview from a production deployment and says editor changes do not replace the live release until republishing. Bolt says project changes are not applied to the published site until the maker chooses Update (Lovable publishing, Replit publishing, and Bolt publishing, checked 18 Oct 2026).
That separation is valuable. It gives the launch an object you can name: the release candidate. Your working chat, canvas, or editor can continue to change, but the release candidate stays still long enough to test. The launch question is no longer “does the preview look finished?” It becomes “can a new user complete the promised job in the exact version and environment that will be public?”
This guide uses vibe-coded app as a practical description, not a quality label. It covers an app whose implementation was substantially created or changed through natural-language work with an AI coding tool. The same launch gate applies whether the maker inspected every line, reviewed only the important paths, or worked with another developer: the released behavior must match the public promise.
There are also boundaries to this article. It does not provide a code-security audit or a complete marketing plan. Security review and market development are separate workstreams. Here, the scope is release control, production testing, launch-page clarity, venue fit, a limited rollout, public-launch operation, and the first product decisions afterward.
A dated launch example: Caspian on Show HN#
Recent hook, 28 Sep 2026: Hussain introduced Caspian in a Hacker News submission titled “Show HN: Caspian: Desktop app to build and launch small vibe-coded projects.” He described moving among research, context notes, coding tools, Vercel, analytics, and go-to-market tools, then presented Caspian as a desktop workbench with project context, publishing, analytics, and outreach in one place. Those are the maker's own product claims, not independent findings or a ZeroRaised endorsement (Caspian Show HN, checked 18 Oct 2026).
The thread contains a useful launch lesson. A commenter asked who Caspian was for and what it was particularly good at. Hussain answered that it was for solopreneurs and indie hackers handling multiple projects, with organizing scattered projects as the central problem (Caspian Show HN discussion, checked 18 Oct 2026). The product could publish, but the first reader still needed a sharper audience and job.
That is the distinction this guide will keep making. Deployment puts an app at a URL. Launching gives an intended user enough clarity, access, and support to judge it. A publish button can complete the first job, but not the second.
Caspian also chose a venue with a specific bar. The Show HN guidelines require something the maker worked on personally that people can try. They say the work should be non-trivial, specifically exclude quickly generated one-offs, and ask the maker to explain how and why the project matters to them (Show HN guidelines, checked 18 Oct 2026). A vibe-coded app is not disqualified by its building method, but a thin output with no personal depth is a poor fit for that venue.
Step 1: freeze the promise before the build keeps changing#
Write a release contract before you ask the tool for another feature. This is a one-page editorial device, not a legal agreement. It should answer five questions:
- Who is this version for? Name a role or situation you can recognize. “Anyone who wants productivity” is not specific enough to recruit or support.
- What one job will it complete? Use an observable action, such as turning a meeting transcript into assigned actions or comparing two uploaded files.
- What must the user provide? State the account, file type, connection, permission, or payment needed to begin.
- What result should appear? Describe what the user can see, export, send, or decide when the core path succeeds.
- What is deliberately outside this release? List the adjacent jobs, integrations, and edge cases you are not promising yet.
The contract turns testing into a finite task. If the promise is “a freelance designer can upload a client brief and receive an editable project checklist,” the test has an identifiable user, input, action, and output. “An AI workspace that transforms creativity” gives a tester no comparable finish line.
Now make a release cut. Every requested change goes into one of three columns:
| Change | Ship now when | Hold when |
|---|---|---|
| Core-path repair | The promised job cannot be completed or produces a materially wrong result | The existing result is correct and the change is only a preference |
| Explanation | A reasonable new user cannot tell what to do, what the result means, or what access costs | The current text is clear and the change is stylistic |
| New capability | It is necessary for the stated release contract | It adds a second audience, job, integration, or workflow |
This is ZeroRaised editorial advice. The table is intentionally strict because prompt-driven iteration can make a new feature feel cheaper than it is. Each addition creates more behavior to test, more launch copy to keep accurate, and more states to support.
End the step with one sentence you can put at the top of the launch page:
[App] helps [specific user] complete [specific job] using [input or workflow], then produces [verifiable result].
Do not fill the sentence with a result you have not observed. If the output remains experimental, say that. If a human checks each result, say that. Honest boundaries are part of release readiness.
Step 2: create a release candidate you can identify and restore#
Give the version a name before production testing. A Git tag, a GitHub release, a builder snapshot identifier, or a dated release note can work. GitHub explains that releases are based on Git tags, which mark a specific point in repository history (GitHub releases, checked 18 Oct 2026). The important property is not the label format. It is your ability to answer, “Which exact version did we test and launch?”
Create a compact release record alongside the project:
| Record field | What to write |
|---|---|
| Candidate | Version label, tag, commit, or builder snapshot |
| Production target | Host, project, public URL, and intended audience setting |
| Required services | Database, email, payment, storage, model provider, and any other service the core path calls |
| Configuration check | Confirmation that each required production value exists, without copying sensitive values into the record |
| Known-good version | The version or deployment you would restore if the core path fails |
| Release owner | The person who can publish, pause, restore, and answer user reports |
| Known limits | The conditions you plan to disclose at launch |
This record is ZeroRaised editorial advice. Keep it factual and short. Its purpose is to stop “the version in my browser” from becoming the only definition of the release.
Next, rehearse recovery. On a builder-hosted app, find the documented way to unpublish, republish, or restore before you need it. Lovable documents unpublishing and snapshot-based republishing; Bolt documents both Update and Unpublish (Lovable publishing and Bolt publishing, checked 18 Oct 2026). If you deploy on Vercel, its rollback guide says production can be pointed at a previous deployment without rebuilding, with the eligible history depending on the plan (Vercel rollback, checked 18 Oct 2026).
Do not promise yourself that the AI builder will reconstruct yesterday's state from memory. A recovery route should point to an actual version or deployment. Test enough of the route to know where the control lives and who has permission to use it. You do not need to cause an outage to rehearse; you do need a written decision for when restoring the known-good version is safer than patching production in place.
Freeze unrelated edits once the candidate exists. Fix a release blocker in a new candidate, record the change, and rerun the affected path. A silent prompt after testing invalidates the evidence you just collected, even when the screen appears unchanged.
Step 3: choose the deployment route that fits the current app#
The fastest route is usually the one already supported by the project, provided it can run the app's actual workload and gives you the control needed for this release. Moving stacks immediately before launch introduces new configuration, build behavior, domains, logs, and failure modes. Move only for a named requirement, not because a different host feels more “real.”
| Route | Named examples | What the first-party documentation establishes | Best fit for this release | Verify before choosing |
|---|---|---|---|---|
| Builder-managed web publishing | Lovable, Replit, Bolt | Each separates the editable project or preview from a published version; Lovable and Bolt document visibility controls, while Replit describes a production deployment at its own URL | A web app that already runs correctly within the builder's supported production model | Public or restricted audience, production configuration, domain, logs, usage limits, update path, and recovery path |
| Git-connected web deployment | Vercel | Vercel documents preview and production environments, a production checklist, and deployment rollback | An app already stored in a repository where you need an explicit review and promotion path | Build command, runtime, production variables, domain, monitoring, cost controls, and rollback eligibility |
| Mobile store submission | Expo EAS Submit, Apple App Store Connect, Google Play Console | Expo says store release begins with a signed binary; Apple requires metadata and a chosen build before review; Google Play provides testing and production tracks | A mobile app whose users will install through an app store | Signing, store account, metadata, screenshots, test track, review status, release ownership, and update process |
Sources: Lovable publishing, Replit publishing, Bolt publishing, Vercel environments, Vercel production checklist, Expo store submission, Apple submission, and Google Play releases, all checked 18 Oct 2026.
If you publish from Lovable, Replit, or Bolt#
Use the platform's production URL for the limited release before announcing a custom domain. Test the current audience setting from a signed-out browser. Then republish a harmless visible change and confirm that you understand which action updates the live version. Lovable, Replit, and Bolt all document that editor changes are separate from the live app until another publish or update action (Lovable, Replit, and Bolt, checked 18 Oct 2026).
A custom domain can improve naming continuity, but it does not prove the application works. If you add one, verify the final public URL, redirects, and any callback URLs used by the current release. Keep the builder URL recorded in case it helps distinguish a domain problem from an application problem.
If you deploy from a repository#
Use a preview deployment for the release candidate, then promote or deploy the tested source to production according to the host's workflow. Vercel says preview environments let a team test live changes without affecting the production site, and its production checklist explicitly calls for an incident plan and familiarity with staging, promotion, and rollback (Vercel environments and production checklist, checked 18 Oct 2026).
Do not assume a successful build proves the core path. A build can finish while login callbacks, email, payments, file storage, or an external model call still points at the wrong environment. The production journey in the next step is the acceptance test.
If the app ships through mobile stores#
Separate binary upload from public release. Expo's current documentation says EAS Submit sends Android and iOS binaries to the respective consoles, but store metadata and screenshots remain separate work. It also says an iOS upload becomes available in App Store Connect and is not automatically released to the App Store (Expo store submission, checked 18 Oct 2026).
Apple requires the required metadata and the chosen build before submission for review. Google Play offers internal, closed, open, and production routes, each with its own release workflow (Apple submission and Google Play releases, checked 18 Oct 2026). Put store lead time and approval state in the launch plan. Do not announce that an app is installable until the intended listing and build are actually available to the intended users.
Step 4: test the production journey, not just the preview#
Open the production URL in a private browser window or a fresh browser profile. Use an address and account that were not part of building the app. Complete the promised job without opening the editor or supplying explanations that ordinary users will not see.
Test the journey in this order:
- Arrival: Does the production URL load, and does the first screen describe the same job as the release contract?
- Access: Can the intended user enter under the stated rules? Test account creation, invitation acceptance, or guest access as applicable.
- Setup: Can the user provide the required file, connection, or information, and are supported formats and limits stated before an error?
- Core action: Does the main action run with realistic input rather than only the sample used during building?
- Result: Is the output complete, understandable, and saved or delivered where the interface promises?
- Return: Can the user find the result after signing out and returning, if persistence is part of the promise?
- Help: Does the visible support route reach the person responsible for the release?
This sequence is ZeroRaised editorial advice. Record the browser, device class, account state, input, expected result, observed result, and candidate version for each run. A note such as “works for me” cannot tell you what changed after the next prompt.
Test at least one narrow screen and one larger screen that your launch page claims to support. Use the actual production domain because redirects, login callbacks, cookies, third-party permissions, and public configuration can behave differently from a preview. If you do not support a device or browser, state the boundary rather than allowing the page to imply universal support.
Test production configuration explicitly#
Make a checklist of the services used by the core path and verify them one by one in production. Common categories include the database, object storage, transactional email, payment processor, external API, model provider, and analytics. These are categories, not a claim that every app needs each service.
Replit's publishing documentation draws a clear line between development Preview and the production deployment, and tells makers to open the public URL again after republishing to verify changed behavior (Replit publishing, checked 18 Oct 2026). Use that same discipline on any host: a green preview is evidence about the preview, not the production journey.
If the app charges money through Stripe, use Stripe's own launch checklist rather than treating a successful sandbox purchase as sufficient, and check what each sale will cost in fees. Stripe asks implementers to test incomplete, invalid, and duplicate data; review API error handling; make sure production is not relying on sandbox objects; and register live webhook endpoints when webhooks are used (Stripe go-live checklist, checked 18 Oct 2026). Test the customer-visible success and failure messages as well as the account-side record.
This article intentionally stops short of a security procedure. Passing the functional path does not certify that a vibe-coded app is secure, compliant, private, or suitable for sensitive data. Complete a separate review appropriate to the app's data and risk before public access.
Make failure observable#
You need enough production evidence to distinguish “nobody used it” from “people tried and the app failed.” At minimum, preserve application errors, failed external calls, and the completion of the first useful action, subject to appropriate data handling. Do not log raw customer content merely because it makes debugging easier.
Use the monitoring already available on the deployment platform when it is sufficient. Replit says its production monitoring shows requests, HTTP statuses, response durations, CPU use, and memory use, while its separate Growth view covers visitors, pages, referrers, browsers, and devices (Replit publishing, checked 18 Oct 2026). The useful distinction applies beyond Replit: operational health and audience behavior answer different questions.
Choose one event that represents the release promise. It might be a successfully exported checklist, a completed comparison, or a delivered invitation. Give the event a stable name and verify that one real production run records it once. This is editorial measurement advice, not a benchmark or a platform requirement.
Step 5: prepare a launch page that can answer four questions#
The launch page should let a qualified visitor decide whether to try the app without reading your build history first. Put four answers near the top:
- Who is it for? Use the narrow audience from the release contract.
- What job does it complete? Describe the action and result, not an abstract category.
- What does access require? State whether the app is open, invite-only, in a test track, paid, or limited in another material way.
- What should the visitor do next? Offer one primary action: try, install, request access, or view a real demonstration.
Then supply evidence. Use current product screenshots, a short recording, a sample input and output, or an interactive path that matches the candidate. Label mockups and illustrative outputs. Do not use a generated testimonial, invented customer logo, unsupported result, or screenshot of behavior that the release no longer contains.
Make the limits visible before the call to action. Relevant limits might include supported file types, languages, browsers, countries, store availability, manual review, or the experimental nature of an output. Only list limits that actually apply. This is not negative copy. It prevents the wrong user from discovering a material condition after investing time.
Finish the page with current access terms, a support contact, and links to the policies that apply to the release. Test every link from the public page. If the page and app are separate, confirm that the main button reaches the production version rather than an editor preview, expired test URL, or stale store build.
Set the link preview before people share it#
A copied launch URL should present the right name, description, and image. Lovable's publish documentation says its projects can set a site title, meta description, favicon, and social sharing image, and that metadata changes reach the live site on the next publish (Lovable publishing, checked 18 Oct 2026). Other stacks expose different controls, so inspect the final public page rather than assuming the builder generated accurate metadata.
Write the title and description from the release contract. The social image should identify the real app and remain legible at preview size. Open the public URL in at least one link-preview checker or messaging app available to you, then fix the source metadata if the preview is wrong. Do not paste a corrected title into every launch post while leaving the product page itself unclear.
If you need the broader operational checklist, use the live product launch checklist. This article stays with the extra release-control questions created by a fast, prompt-driven build.
Step 6: where to launch a vibe coded app by product and user#
A launch venue is not a substitute for a production route. Lovable, Replit, Bolt, Vercel, Apple, and Google can make a version available. Show HN, Product Hunt, and ZeroRaised are places where people may discover or discuss that version. Choose the distribution surface only after the production URL or store listing is ready.
| Launch route | Use it when | Current gate to respect | Prepare |
|---|---|---|---|
| Direct limited invitations | You need observations from a small set of intended users before a broader post | Use the app's actual audience controls and contact only people through an appropriate, permission-based route | One task, one feedback question, support contact, and candidate version |
| Show HN | You personally worked on a non-trivial project that HN readers can try and you can discuss how and why you made it | No landing page or sign-up-only page; do not submit a quickly generated one-off; do not ask friends to vote or comment | A plain Show HN title, easy access, maker-written context, and time to answer questions |
| Product Hunt | The usable product fits a community that Product Hunt describes as makers, early adopters, tech people, entrepreneurs, and people who enjoy trying new products | Use a personal account, link directly to the product, represent pricing and status accurately, and follow the current product-fit rules | Product name, tagline, direct URL, topics, media, description, pricing status, makers, and a first comment |
| ZeroRaised | The public product page and current submission form fit a launch for bootstrapped makers | The current form requests a public product URL and says submission is free; review the form and current terms at submission time | Public URL, accurate page, and the information requested in the current form |
Sources: Show HN guidelines, Product Hunt overview, Product Hunt posting guide by Jake Crump, and ZeroRaised submission form, all checked 18 Oct 2026. Product Hunt's named posting guide author is included for attribution; this table does not reproduce any performance statistic.
For Show HN, pay special attention to authorship. Hacker News says the project must be something you worked on personally and that you are around to discuss. Its guidelines also tell makers not to post quickly generated one-offs and to share something personal and interesting, with an explanation of how and why (Show HN guidelines, checked 18 Oct 2026). Explain your decisions, surprising constraints, and what you changed after use. Do not pretend you hand-wrote code that the tool produced, but do not reduce your work to “the AI built it” either.
For Product Hunt, use the current fields rather than a generic launch template. Jake Crump's official posting guide asks for the direct product URL, product name, tagline, topics, media, pricing status, availability status, description, makers, and a first comment, among other applicable fields (Product Hunt posting guide, checked 18 Oct 2026). Product Hunt's overview says the community includes makers and early adopters and that a broken or unclear product site can affect launch-day handling (Product Hunt overview, checked 18 Oct 2026).
ZeroRaised is included with an explicit conflict disclosure because it publishes this article. The current submission form requests a public product page and states that submitting is free, checked 18 Oct 2026. Review the live form when you submit because fields and availability can change. The maker perks page points to vendor terms for selected public offers, but a perk is not evidence that a tool fits your production requirements.
Use one primary venue first. Adapt the explanation to its rules and readers, then remain available. If you still need to choose among more platforms, the live stage-by-stage launch guide compares venue eligibility, while how to write a Show HN post covers HN-specific titles and comments. This article does not repeat those venue playbooks.
Step 7: run a limited release before the public launch#
A limited release is a production test with unfamiliar users, not a second mockup review. Give a small, relevant group the same candidate and access path that you intend to launch. “Small” is intentionally not a prescribed number here. Choose a group you can support closely and whose members plausibly have the problem.
If the platform supports restricted access, use it for this stage. Lovable documents public and invite-based audiences, with exact options varying by plan. Bolt documents private publishing for paid plans and public publishing on its free plan (Lovable publishing and Bolt publishing, checked 18 Oct 2026). If your current route cannot restrict the product, you can still limit whom you invite, but you should not describe a publicly reachable URL as private.
Give each tester a short brief:
- the job the release is supposed to complete;
- the production URL or correct test-track route;
- the input they should bring, with a non-sensitive sample when appropriate;
- the known limitations that could affect the test;
- one request to narrate or record where they become uncertain;
- the support route to use when blocked.
Ask for behavior before opinion. “Show me the point where you could not continue” is more actionable than “Do you like it?” Do not guide the person past a confusing screen and then record the run as a success. Your intervention is evidence that onboarding or product copy is missing.
Classify each observation into one of four buckets:
| Bucket | Meaning | Launch decision |
|---|---|---|
| Blocker | The intended user cannot complete the promised job | Repair, create a new candidate, and retest before broad launch |
| Misleading promise | The page creates an expectation the current result does not meet | Correct the page or the product, then retest the affected step |
| Friction | The user completes the job but encounters avoidable confusion or effort | Fix now when it is repeatable and cheap; otherwise record it clearly |
| Expansion request | The user wants a different audience, workflow, or capability | Keep it out of the candidate unless it exposes a false core promise |
This classification is ZeroRaised editorial advice. Continue to the public launch only when the tested candidate completes the core job for the intended access path, no known blocker remains in that path, the public copy matches observed behavior, and you can support the release. That is a go or no-go standard, not a forecast of market demand.
Step 8: operate launch day as a feedback window#
Treat launch day as a supported production session. Do not begin with an unrelated prompt or redesign. Begin by confirming the candidate, public URL, access setting, support route, and one production completion of the core action.
Keep a simple launch log with four columns: time, source, observation, and action. Record what happened without copying personal user content. The source might be the launch venue, a direct invitation, a store listing, or an unknown referral. The action might be reply, investigate, document, repair, restore, or defer.
When someone reports a problem, ask for the minimum context needed to reproduce it:
- the step they were trying to complete;
- what they expected;
- what appeared instead;
- the device or browser when relevant;
- whether the issue repeats;
- an error reference or screenshot with sensitive information removed.
Try the same path against the live candidate. If the core job is broken for intended users, stop making promotional updates and restore service. Vercel's recovery guide puts restoration before root-cause investigation: verify production is broken, point traffic to a previous deployment, confirm recovery in logs, then investigate and prepare a tested fix (Vercel rollback guide, checked 18 Oct 2026). Even when your host uses a different control, the operating principle is sound: recovery and diagnosis are separate decisions.
If the issue does not block the promised job, record it instead of pushing an untested change during the active launch. A visible typo may be safe to repair. A request that touches data, authentication, billing, routing, or persistence deserves a new candidate and a focused retest. Those categories are editorial examples, not proof that a change is low or high risk in every stack.
Answer questions as the maker#
Describe what the current version does, how you built it, where the AI tool helped, what you inspected yourself, and what remains uncertain. If you do not know why a generated component behaves a certain way, say that you are investigating. Do not invent a technical explanation to look more credible.
For Show HN, stay within Hacker News rules. The official page says not to ask friends to vote or comment, and it expects the maker to be present for discussion (Show HN guidelines, checked 18 Oct 2026). The live Show HN writing guide covers its title and comment format in detail.
For Product Hunt, keep the launch record accurate if access, pricing status, or the public URL changes. Its official guide says to use the direct product URL and represent pricing and availability status in the submission (Product Hunt posting guide by Jake Crump, checked 18 Oct 2026). Follow the current platform rules rather than asking for a particular ranking action.
Do not interpret votes, comments, or visits as proof that the product solved its intended job. The product-side evidence is whether qualified users reached the first useful result, where they stopped, what failed, and whether they returned when returning matters to the job. This is ZeroRaised editorial advice.
Step 9: make the first post-launch decisions#
After the active discussion slows, separate product evidence from launch noise. Use the release contract as the frame. The question is not “Did people like the launch?” It is “What did intended users try, where did the candidate help, and what prevented the promised result?”
Review five records:
- Completed core actions: Check the verified event or other evidence that the first useful result occurred.
- Failed attempts: Group operational failures by the step that stopped the user.
- Support conversations: Extract recurring uncertainty without turning one loud comment into a universal conclusion.
- Source: Compare where qualified attempts came from, without treating raw visits as qualified use.
- Release changes: Note every change made after the candidate so later observations can be tied to the correct version.
Turn the review into three queues:
| Queue | Include | Exclude |
|---|---|---|
| Repair next | Repeatable blockers, incorrect results, broken production states, and misleading promises | New audiences and speculative features |
| Learn next | Important uncertainty that needs another observation, interview, or instrumented test | Questions already answered by production evidence |
| Consider later | Expansion requests that may matter after the core path works consistently | Anything framed as urgent only because it was easy to prompt |
This is an editorial prioritization method. It deliberately protects the core path from the flood of suggestions that a public launch can create.
Create a new candidate for the repair queue, test the affected path and its neighboring states, then republish through the documented route. Lovable, Replit, and Bolt all require an explicit publish, republish, or update action before later editor changes replace the live version (Lovable publishing, Replit publishing, and Bolt publishing, checked 18 Oct 2026).
Close the loop where the report originated. A short factual reply can state that the issue was reproduced, what changed, which current limitation remains, and whether the reporter wants to retry. Do not turn a fix into a claim that the entire product is now reliable.
Finally, write a release memo with the candidate, promise, venue, qualified use observed, main blocker, change shipped, and next uncertainty. Keep it with the project context that informs future prompts. This is how a fast build accumulates product knowledge instead of restarting from a blank conversation after every launch.
How to launch a vibe coded app in seven days#
This schedule is ZeroRaised editorial advice. It is a compact sequence, not evidence that every app can or should launch within a week. Extend any step when store review, integrations, sensitive data, organizational approval, or unresolved risk requires more time.
| Day | Primary job | Output before stopping |
|---|---|---|
| Day 1 | Freeze the promise | Release contract, explicit exclusions, and one clear product sentence |
| Day 2 | Name the candidate | Version identifier, production target, known-good version, and release owner |
| Day 3 | Publish to production | Correct audience setting, final URL, verified configuration, and documented recovery route |
| Day 4 | Test as a stranger | Fresh-account path record, realistic input and output, payment or email checks when applicable, and visible support route |
| Day 5 | Run the limited release | Observations from relevant users, classified blockers, and a go or no-go decision |
| Day 6 | Prepare the public launch | Accurate page, current images, correct link preview, venue-compliant post, and support log |
| Day 7 | Launch and operate | Final smoke test, live post, monitored core path, factual replies, and prioritized issue record |
For a broader plan when you have no existing audience, use how to launch a bootstrapped app. It addresses manual user recruitment and follow-through. The schedule here is specifically about moving a vibe-coded candidate through production and into a controlled public release.
Common vibe-coded launch mistakes#
Launching the preview URL#
A preview can look public while still being temporary, access-restricted, or coupled to the editor. Replit explicitly says its Preview is for development and that publishing creates the stable production deployment visitors use (Replit publishing, checked 18 Oct 2026). Send the production URL or approved store listing, then test it signed out.
Prompting after the final test#
One “small” change can alter dependencies, routing, state, or copy outside the visible target. Any change after acceptance creates a new candidate. Retest the changed path and any adjacent behavior that could reasonably be affected.
Testing only with the builder's account#
The builder account may already have permissions, seeded data, accepted invitations, or a warm session. A fresh production account reveals the route a launch visitor actually receives.
Treating a polished screen as a completed product#
A convincing interface does not establish that persistence, email delivery, payment state, external calls, and return visits work. Test the entire release contract with realistic production inputs and verify the promised result.
Moving hosts without a named requirement#
A migration adds another build and operating model to test. Stay with the supported publishing path when it satisfies the release contract. Move when you can name the missing requirement and can budget time to validate the new environment.
Publishing to everyone before observing anyone#
Use a restricted or invitation-based route when available, or limit the invitations you send. The goal is to find repeatable blockers while the support load is manageable. Do not imply that a public URL is access-restricted when it is not.
Hiding limits behind optimistic copy#
If the release supports one format, needs manual review, or produces an experimental result, state that before the user commits time or money. A limitation discovered after the call to action becomes a trust problem and contaminates feedback about the core job.
Using launch-site engagement as the product result#
A leaderboard position and a completed user job are different events. Record source, core-path attempts, completions, failures, and relevant conversations on the product side. Use the venue's engagement to manage the discussion, not to replace product evidence.
Generating the maker story and submitting it untouched#
The launch explanation should reflect your actual decisions and observations. This matters especially on Show HN, which requires personal work, asks the maker to explain how and why, and rejects quickly generated one-offs (Show HN guidelines, checked 18 Oct 2026). Draft from your release memo and rewrite every sentence you cannot personally support.
The final go or no-go check#
Launch only when every required row is “yes.” “Not applicable” is valid only when the function is genuinely outside the current release contract.
| Check | Yes means |
|---|---|
| Promise | The intended user, core job, input, result, access terms, and known limits are stated accurately |
| Candidate | One exact version is named and no untested edit has followed it |
| Production | The final public URL or intended store track serves the candidate to the intended audience |
| Core journey | A fresh user completed the full job with realistic input in production |
| Connected services | Every service required by the core path was exercised in its production mode |
| Payment | Real-mode configuration, customer-visible outcomes, and applicable callbacks were checked, or payment is outside scope |
| Observability | You can detect a failed request and a completed first useful action without collecting unnecessary user content |
| Recovery | A known-good version and the person who can restore it are identified |
| Launch page | The promise, images, access terms, support route, and link preview match the candidate |
| Venue | The current rules were checked and the post fits the intended users and product stage |
| Support | Someone can answer reports, reproduce failures, pause changes, and record decisions |
| Limited release | Relevant unfamiliar users tried the production path and no known blocker remains in the core job |
If one required row is “no,” postpone the broad post and fix that row. Shipping later is cheaper than spending your best attention explaining a failure you already knew about.
That is how to launch a vibe-coded app without confusing fast construction with readiness: freeze a narrow promise, identify a recoverable candidate, validate the exact production journey, learn from a limited release, and then bring the working version to the venue that fits its users. The method does not require hiding how the app was built. It requires being precise about what the current version can do and present when real users test that claim.
Sources#
- GitHub releases
- Vercel rollback
- Replit publishing
- Stripe go-live checklist
- Show HN guidelines
- Product Hunt guide
- Lovable publishing
- Bolt publishing
- Caspian Show HN
- Vercel environments
- Vercel production checklist
- Expo store submission
- Apple submission
- Google Play releases
- Product Hunt posting guide by Jake Crump
Frequently asked questions
What is the most controlled way to launch a vibe-coded app?
Create one release candidate, preserve a known-good version, test the full user journey in the production environment, release to a small relevant group, and widen access only after fixing repeatable blockers.
Does a vibe-coded app need to be perfect before launch?
No. It needs to deliver its stated core job reliably, explain its limits honestly, and give users a working route to help. Cosmetic improvements can wait when they do not block evaluation or use.
Where should I launch a vibe-coded app?
Choose the venue by user and product stage. Show HN fits something the maker built that people can try, Product Hunt fits a usable tech product, and ZeroRaised accepts submissions through its current form and terms.
Should I launch from the AI builder or move the app first?
Use the builder's publishing route when it supports the runtime, domain, configuration, and rollback needs of the current release. Move only when a specific requirement cannot be met, because a migration creates another system to test.
What should I measure after launch?
Track the path to the app's first useful result, the failures that stop that path, support requests, and the source of qualified visits. Choose measures that match the app's intended job instead of copying a generic dashboard.