How do I know whether my vibe-coded app is actually safe to keep building on?
September 22, 2026
Not by clicking through it. An app that works today only proves today’s version works. Safety is about what happens to the next change. That depends on three things: (1) whether anything checks a change before your users see it, (2) whether tests prove the old features still work, and (3) whether you understand what your security checks actually looked at. You can answer all of them without reading a line of code.
Why this question matters now
Early on, safety barely matters. If a change breaks something, you are the only user, and you fix it.
That changes once people rely on the product. A broken signup page now costs you customers. Leaked customer data now costs you trust. And every new feature touches more of what already exists.
Founders tend to ask this question at the same moment. The app works, customers are paying, and they have no way to judge what is underneath.
The good news is that most of the answer isn’t hidden in the code. It is in how your product changes.
Six questions you can answer today
We tested Emergent, Replit, and Lovable on our own accounts between July and September 2026.
1. Does anything check a change before your users see it?
Ask the platform for a small change, then watch where it goes.
If it goes straight to your live app, nothing stands between the AI and your customers. If it arrives as a proposal you can read and approve, you have a review step. In a normal engineering workflow, that proposal is called a pull request.
The three platforms handled this differently in our tests. Replit opened a pull request in one round, and opened none in a later one. Emergent pushed the work to a separate copy of the code, called a branch, and left the pull request for us to create. On a Lovable project that wasn’t connected to a repository, the place where your code and its history live, it wrote a file describing a pull request rather than opening one. Our guide to moving to a normal GitHub workflow covers the details.
What a good answer looks like: every change waits for approval.
2. Is there a set of tests saved with your product?
Tests are small programs that check your app still does what it should. The important word is saved. A test that runs once and disappears protects that one change. A test saved with your product runs again after every change.
Ask the platform where its tests are and how many there are. Then ask whether they ran on the last change.
Our results varied by platform and by round. In our first test, in July, Emergent wrote 22 tests covering the difficult cases, such as missing or expired signatures, and all of them passed in one run. Replit’s review step grew one test suite from 16 tests to 40 in August. In a later round, that same review step didn’t run at all, and the change shipped with a bug we could reproduce. On Lovable’s free plan, which is the only plan we tested, it checked that the code was well-formed but did not save a test suite.
What a good answer looks like: tests live with your product, and they run every time something changes.
3. What did your security check actually look at?
In our tests, all three platforms offered some kind of security or code check. A score or a green message feels reassuring. It’s worth asking what was checked before you trust it.
Emergent’s built-in code review gave our project 95 out of 100. Every file it named came from Emergent’s own starter template, not the files we had asked it to write. We ran it again in September on a small project with no Python and no React in it. It returned the same scores for Python and React.
On Lovable’s free plan, the security section read “No issues found.” Below it, on the same screen, a separate card listed two known issues, both rated High. They were in a package that Lovable’s own starter template had installed. A package is a ready-made piece of code your app relies on. Both statements were accurate. One checked the code, and the other checked the packages it depends on. Nothing on the screen said so.
Replit was clearer here. Its security page states that its package check does not include the results of its deeper scan, so you know they are two different checks.
What a good answer looks like: you know what each check covers, and a clean result is about your code, not a template.
4. Does a new change break something that used to work?
Engineers call this a regression. It is also a clear sign that changes are not being checked against what already exists.
Keep a simple list of the five things your product must never stop doing. Signing up, paying, and whatever your customers use most. After each change, check them. If they break more than once, questions 1 and 2 are where the fix starts.
We cover the other warning signs in do I need a developer now that my app has users.
What a good answer looks like: your five critical flows survive every change.
5. Would your app keep running if you left the platform?
Safe to keep building on also means safe to keep building somewhere else if you need to.
In our tests, some platforms added their own code libraries to your project, and some routed integrations through their own services. Some also held accounts for your users, payments, or data on your behalf. None of that is wrong, but you should know it before you depend on it.
Two earlier guides cover this in full: which parts of my AI-built app do I actually own, and what to check before moving to GitHub.
What a good answer looks like: you can name every service your app needs, and whose account each one runs on.
6. Can anyone explain why the product works the way it does?
Ask yourself why checkout works the way it does, or why a shortcut was taken. If the only record is a long chat with an AI, the next change will be made without it.
That is how products drift. Each change solves today’s problem and quietly works against an earlier decision.
What a good answer looks like: important decisions are written down where the next change can respect them.
What to do with your answers
If you answered no to question 1 or 2, start there. A review step and saved tests protect every change after them. Everything else on the list gets easier once they exist.
If question 3 surprised you, ask for a second opinion. An experienced developer can go through the results with you in an afternoon.
If questions 5 and 6 worry you, write things down first. A list of your services and a short record of key decisions costs very little and makes any later move far easier.
A product that answers yes to all six is not guaranteed to be safe. It is a product where problems get caught before your customers find them.
How Forged handles this
Forged starts from the product you already have. It works in the repository you own, and it treats each change as something to be agreed, built, proven, and reviewed.
| Dimension | The Forged approach |
|---|---|
| Before any code is written | You approve what will change and how success is measured |
| Where the change goes | A pull request in your own repository, never straight to users |
| How it is checked | Against the acceptance criteria it was approved on |
| What you receive | A record of what was tested and the result, for every criterion |
| What the review looks at | The code Forged actually changed |
| What is carried forward | Confirmed decisions and assumptions, used to plan the next change |
Every change waits for your approval. Before it builds anything, Forged sets out what will change and how you will know it worked. Those are the acceptance criteria. The finished work arrives as a pull request, so nothing reaches your users until you approve it.
The check is about the change, not the template. Forged reviews the code it wrote against the criteria you agreed. The evidence shows what was tested and what happened, so a result means something.
Decisions are kept. Forged records the decisions behind each change and plans the next one around them. Question 6 gets answered as you go.
Your questions, answered
Is a vibe-coded app less safe than one written by a developer?
Not automatically.
Code from any source can be safe or unsafe. What makes an app risky is changing it without review, tests, or a record of decisions. A developer working without those would create the same risk.
Can I trust the security score my platform gives me?
Trust it as a starting point.
Find out what the check covered. In our tests, one review scored files from a starter template, and one security screen reported no issues next to two High-rated package issues. Both results were accurate about something. Neither was the whole picture.
How often should I run through these questions?
Once now, and again whenever something changes.
A new developer, a new platform, a major feature, or a first serious customer are all good moments. The answers can change quickly.
Do I need to read code to do this?
No.
Every question above can be answered by asking the platform, watching what happens to a change, and checking your own list of critical flows. If an answer needs code to settle, that is the moment to bring in a developer for a few hours.
See how your next change would arrive
Connect Forged to your repository and ask for the change you have been putting off.
You get a plan to approve first, and a pull request with test results after. Nothing reaches your users until you say so.