๐ŸŽ‰ Your first app is free โ€” build it and publish it to a live link. No card, no API key. The free build uses a lighter AI model. Start free โ†’
Maintenance

What Happens to an AI-Built App Six Months Later

Most people choose an AI app builder by watching how fast it produces the first version. That is the easiest thing to compare and close to the least useful, because the first version is the cheapest part of an app’s life. The question that decides whether you still have something in a year is a duller one: when this breaks, who understands it well enough to fix it?

Two paths from one first build: an app kept small and read stays changeable, while an app that grows unread becomes something you can only rebuild. Tap to enlarge
The fork happens early and quietly. It is decided mostly by how much of the code you ever actually read.

01The handover problem, with yourself

Inheriting a codebase from another developer is a known kind of difficult. You read it, you build a model of it, and eventually you can change things without fear. The work is real, but it ends.

An AI-built app hands you that same problem with one piece missing. Nobody ever held the model. The AI did not have one — it re-reads the code each turn and makes a locally sensible edit. You did not build one either, because you were describing outcomes rather than writing the thing that produced them.

So six months on you are not maintaining unfamiliar code. You are maintaining code that nobody, at any point, understood as a whole.

That is survivable. It just has to be planned for, and almost nobody does, because at the start everything works and the question feels theoretical.

02Why the debt accumulates differently

Ordinary technical debt is usually deliberate. Someone takes a shortcut, knows it is a shortcut, and often leaves a note about it. It is a loan with a record of having been taken.

AI-generated debt differs in three specific ways.

It is invisible when it is created. The code runs, the feature works, and nothing in the chat says “I duplicated this logic in three places because I could not see the other two.”

It compounds through repetition. Each turn re-reads the code fresh, so the same idea gets solved slightly differently in different places. After forty turns there are four ways of doing one thing and no way to tell which is canonical.

Nobody chose it. There is no decision to look back on, because there was never a decision — only an accumulation of locally reasonable edits that no one reviewed as a set.

This is the mechanism behind a complaint that turns up repeatedly in developer forums: that AI-assisted work produces volume fast and leaves a codebase people treat as a black box rather than something they read. The tone is often unkind, but the mechanism underneath it is real.

03What actually makes one survivable

The difference between an AI-built app you can still change next year and one you can only rebuild comes down to four things. None of them is which builder you used.

  • Size. An app you can read in one sitting is an app you can fix. This is the strongest single predictor, and it is decided by scope discipline rather than tooling — by not asking for a platform when what you needed was a tool.
  • Whether you ever read the diffs. Not every line, and not with full understanding. Reading what changed after each turn builds a rough map over time, and a rough map is the difference between fixing something and starting over.
  • A working version you can return to. Version history turns a bad afternoon into a click backwards. Without it the only route out of a broken state is to prompt forward through it, which is how small problems become rewrites.
  • Whether it runs without the platform. If it needs a particular runtime, a build pipeline or a vendor’s servers, then maintaining it means keeping that relationship alive too. A file that runs on its own has one fewer dependency, permanently.

Three of those four are habits, not features. A tool can make them cheaper or more expensive. No tool supplies them.

04Where this leaves the tools, including this one

This is the reasoning behind generating single-file apps here: one HTML document, no build step, no dependency tree. Not because single files are elegant — at any real size they are not — but because an app small enough to live in one readable file is an app that stays changeable, and a file with no build step has nothing underneath it that can rot. Every change is also a version with a diff you can read and roll back, which makes the second habit above cheap enough that people actually do it.

Where that stops working is worth saying plainly. Past a certain size the single file becomes the problem rather than the protection, which is why larger projects here export as multi-file React into a repository you own. And none of it replaces reading what changed. A tool can hand you the diff. It cannot build the map in your head.

05The takeaway

Before you start, ask what happens when this breaks in six months and you have forgotten all of it. If the answer is “I would read it and work it out”, you are building something that will last. If the answer is “I would ask the AI to fix it and hope”, you are building something disposable — which is a perfectly legitimate thing to build, as long as you know that is what you are doing.

Most of what gets made with these tools should be disposable. Prototypes, internal tools, one-off calculators, things that answer a question and then get deleted. The mistake is not building disposable software. It is building something disposable and then coming to depend on it.

06Related reading

The AI doom loop — why the same bug keeps coming back, and the architectural reason behind it.
The lock-in trap — the four separate questions “export your code” does not answer.
The pre-launch checklist — 25 checks before you publish, tool-neutral.

โ† Back to the blog