From the BUILD archive
Ship or Iterate? How to Know When Your Vibe Coded MVP Is Good Enough
A safer launch decision framework for an MVP: resolve blockers, choose the audience, and learn from evidence.
Originally published on BUILD 2025-11-26. Adapted from BUILD; updated September 28, 2026.
Polishing can become a comfortable way to avoid feedback. The answer is not to ship regardless of risk. It is to choose a launch level, resolve real blockers, and accept that lower-risk rough edges can wait.
The main promise must work reliably
A user must be able to complete the primary action you advertise. Test success, invalid input, cancellation, failure, and a returning session. If the path loses work, exposes another user's data, charges the wrong amount, or fails unpredictably, it is not ready for outside users. A decorative inconsistency can wait; a broken promise cannot.
Match evidence to the launch
An invite-only beta with five known testers has a different risk profile from a public paid launch. A beta can tolerate limited polish if testers understand the scope and have a support channel. A public launch needs accurate price and terms, reliable payment handling, privacy and support information, recovery from common failures, and monitoring that tells you when the main path breaks.
Check comprehension without coaching
Give a target user the page with no walkthrough. Ask what they think it does, what they expect after clicking, and what they would do first. Observe rather than steering. Confusion is evidence about message, navigation, or labels. It is not a reason to blame the participant.
Check mobile and separate sessions
Use a real phone when possible. Confirm that text fits, controls can be activated, forms do not trigger unwanted zoom, overlays can be dismissed, and the primary action remains visible. An incognito window starts a separate browsing session; it does not literally clear the regular browser's cache. Use it to examine a fresh-session experience, then test a returning session separately.
Do not ship with blocker classes
Resolve data leakage, lost work, incorrect charges, broken account recovery, missing consent where required, and a failed primary path before inviting public traffic. If the product handles health, financial, legal, employment, children’s, or other sensitive decisions, seek appropriate specialist review rather than treating a quick product check as sufficient.
What can wait
A perfect color palette, elaborate animation, dark mode, advanced filters, export formats, and uncommon shortcuts may be later work unless they are central to the promise. Keep a dated backlog. “Later” should mean deliberately deferred, not forgotten.
Use feedback without freezing the product
Collect observations continuously and fix urgent failures immediately. Do not ignore serious issues for an arbitrary waiting period. Group lower-risk comments into patterns before changing the product. A single preference is not automatically a defect; repeated inability to complete the task is stronger evidence.
A practical launch decision records each critical check as Pass, Fail, Not tested, or Not applicable, along with evidence, owner, and date. A public launch requires every blocker resolved or an explicit decision not to launch. The vibe coding checklist provides that structure.
Ship when the promised path works, material risks are addressed, and the audience matches the evidence you have. Rough edges are normal. Uncontrolled harm is not.
