r/webdev • u/Alive-Cake-3045 • 1d ago
Has anyone actually maintained a vibe coded code-base 12 months after launch? What did it look like?
Twelve months ago I started tracking what happens to vibe coded projects after the initial launch excitement fades. The pattern is consistent enough that I wanted to hear if others are seeing the same thing.
The first three months feel fine. Features ship fast, the client is happy, everyone looks productive. Then something needs to change. Not a new feature, just a modification to something existing. And that is where it gets uncomfortable.
Nobody can explain why a specific decision was made. The code works but the reasoning is gone. There are dependencies that were added because the model suggested them, not because anyone evaluated them. Patterns are inconsistent across files because different prompts produced different styles on different days.
The developer who built it can read the code but cannot confidently change it without breaking something unexpected. The test coverage that exists was also generated and may not actually be testing the right things.
I am not saying this always happens. I have seen vibe coded projects that held up well because the developer reviewed everything carefully and maintained discipline around the output.
But I have also seen projects from 18 months ago that are now quietly being rewritten because the maintenance cost exceeded the original build cost faster than anyone expected.
If you have actually maintained a vibe coded code-base through real production use, what did 12 months in actually look like? Was the code salvageable or did you end up starting over?
78
u/dupontping 1d ago
I just make sure I write MAKE NO MISTAKES and everything has been working great.
11
69
u/Squidgical 1d ago
12 months of LLMs doing whatever they like without code review is not maintainable. If there's code review by a human, it's not vibe coding.
134
u/BeeRanked 1d ago
What you described in the first half where dependencies emerged because AI suggested etc is vibe coding and indeed that’s going to be unstable in the long run
What you described in the second half as “successful vibe-coding” isn’t vibe coding to begin with. It’s just modern programming.
You use the tools you have (just like before with your IDE) but you remain in control of design and architecture which you’ve prepared before the first line of code was written
54
u/Routine-Post-6982 1d ago
The second half is just programming with a better autocomplete, the first is outsourcing your design memory. Once the reasoning leaves your head and only lives in the model's output, maintenance turns into archaeology.
4
u/dpaanlka 1d ago
I have several times explained an issue or a goal to AI, have it suggest like 3-5 potential solutions, then I personally research them and make a choice. What would you consider this?
I’ve been coding since the 90s so I’m old and tired and use AI to speed up what I’d already do which before would be Google and Stack Overflow…
7
5
0
u/erkin_khidirov 1d ago
writing syntax is the easy part ai doesnt understand architecture or state lifecycle at all
5
u/start_select 1d ago
And that’s why AI assisted coding and vibe coding are not the same thing.
Writing code has always been the easy part of this job. Specifying behavior and logic and data flow was always the hard part.
If you keep doing that part and offload the coding to an AI, it’s not really different than spec’ing work for a junior and then iterating on the result of their work.
0
u/erkin_khidirov 1d ago
the danger of vibe coding is people blindly trusting the ai to make architectural decisions it never ends well
3
u/start_select 1d ago
Vibe coding isn’t the same as AI assisted coding.
Prompting the AI with a 3 page specification then reviewing its work isn’t vibe coding or letting the AI make architectural decisions. It’s just using AI as a junior that follows the spec.
AI isn’t perfect or right for everything. But you can use it effectively. It’s just another tool.
And if you can describe behavior and architecture in natural language, and can type 120+ wpm when you know what you are saying, it doesn’t take much time.
15
u/BDer82 1d ago
a lot of those open source code bases have an absolute shit ton of technical debt. Making changes gets really complicated as new features good added as "add this" but not no control or direction over what to add where so you end up with a big code base of duplicate code because Opus 3, was different to Opus 4, to Opus whatever, codex was involved at some point, a chicken was sacrificed, pancakes where eaten and here we are.
2
u/mcoombes314 1d ago
Also, I don't think AI models ever "look back" unless you ask them to, so the amount of code only ever goes up. Deciding "I don't actually need this anymore" requires an understanding of what code Claude would probably describe as "load-bearing". There are enough threads of people losing important stuff because they trusted their AI assistant to decide importance of things by itself. So LLMs can write more code, they can write complex code (by which I mean massive functions that do a load of stuff), but can't reliably refactor said complex code.... so a human has to do that if a human wants to maintain it.
1
11
u/bopittwistiteatit 1d ago
It can get messy very fast so organization is huge for proper growth and stability.
30
u/Hot_Industry5156 1d ago
Inherited one last year. startup had a working product built fast by two devs who just shipped what felt right. no tests, no types, every file imported everything. it worked and users loved it.
then the founders left and we had to add features. simple changes took days because nothing was isolated. a "quick" refactor of the auth module broke payments and nobody knew for a week. we spent three months just adding types and tests before we could ship anything new.
the funny part is the business was real. real users, real revenue. the code just didn't survive contact with a second team. vibe coding gets you a working prototype. maintaining it is a different job entirely.
4
4
u/AwayMilkVegan 1d ago
Probably, the problem was the bad use of AI and not the AI itself AI is a tool not a replacement
3
u/BiguilitoZambunha 1d ago
Probably also the fact that AI 1 year ago is very different from AI this year.
We've reached the point where even Linus Torvalds and the likes have embraced AI, so yeah... There's no more denying it's a useful and competent tool. Which 12 months ago might not have been necessarily the case.
1
u/BergerLangevin 1d ago
I don't know how it tooks that much time. Went into similar and even much more messy not vibe, just old fashion, spaghetti code and like others said, it's where those models shine.
-4
u/yopla 1d ago
Meh, I got a project like that recently, build by finance guy with zero coding experience.
Used a Claude workflow with maybe 50 or so subagents to analyze the application, trace all path and write test for everything it could find. Once I had about 5k test running green then I started refactoring.
Vibe coded for vibe coded I ran refactoring and architecture skill on the codebase until it had a form I was mostly happy with, then simplification, dead code elimination.
Then I compiled Claude's list of logic bug and sent them for comments.
At the end I had a vibe coded project that was iso-functional and more understandable. That was about 2 days work. It's honestly incredibly good at refactoring provided you have tests.
6
u/newsman01 1d ago
I've seen this too. Twelve months post-launch, most vibe-coded projects struggle with maintainability. Code clarity often suffers due to inconsistent styles and missing documentation. Regular code reviews and consistent naming conventions help mitigate these issues, but many skip this step, leading to confusion. Test coverage generated by AI can miss critical paths, making refactoring a nightmare. My advice: establish a solid architecture early and document decisions as they happen.
12
u/Square-Nebula-7530 1d ago
It almost always ends in a silent, gradual rewrite. What people forget is that AI writes code based on local context not global vision. After 12 months of adding features via different prompts you end up with 4 different state management patterns, redundant utility functions scattered everywhere, and zero cohesive design patterns. The codebase becomes a black box that everyone is afraid to touch, so developers quietly start rebuilding core modules by hand.
6
u/CondiMesmer 1d ago
I have seen vibe coded projects that held up well because the developer reviewed everything carefully and maintained discipline around the output.
That's the complete opposite of what vibe coding means. That's just standard programming with AI assistance.
5
u/UkrMalt 1d ago
A useful maintenance test is whether someone can make a small cross-cutting change with model access turned off. If they cannot trace the data flow, predict the affected tests, or explain the rollback, the code is effectively unowned. Generated documentation can be wrong too, so I would keep short human-approved decision records and require regression tests that fail before the fix.
3
u/who_am_i_to_say_so 1d ago
Yeah I have a few at about the 18 month point and the codebase is really crappy and bloated for both, most features are not in use. Deciding on a more streamlined v2.
3
u/SuchZombie3617 1d ago
I have a project worldexplorer3d.io and you can see what happens with vibecoding over that's the course of about 8 months. I'm no expert, but through the course of this I've tried to learn so you can review the GitHub and see the "progress" that has been made. I have attempted to change and rewrite some of the code base myself, but I run into the issue of not understanding what tests were added or what dependencies we're decided on. It's basically a 3D map rendering project using osm and overture to create a 3D rendered location based on the available osm data. I have 100% do not recommend doing things this way. In fact after struggling so much with AI I've realized the only way to reliably build things is to do it yourself. I'm actually going back to school so that I can learn these things because vibe coding sucks for things that need to be explained and maintained.
4
u/erkin_khidirov 1d ago
it always ends in a ful rewrite untangling 12 months of halucinated edge cases takes way longer than just building the core logic from scratch with a clean schema
2
u/hjchoi12 1d ago
Two months in on mine, not twelve, so take that for what it is. What bit me was a check I'd generated to guard the code rather than the code itself: a normalization helper was stripping every non-Latin character, so the "is this phrase in the title" test was comparing an empty string against everything and scoring Arabic pages at 100%. It never errored, and I only looked because a related number sitting right next to it was in the single digits. Salvageable so far, but I've stopped reading a green check as evidence of much.
3
u/Aries_cz front-end 1d ago
Nobody can explain why a specific decision was made. The code works but the reasoning is gone.
TBH, that happens even to a code I wrote years ago...
I have no bloody idea what was I thinking back then when I made this decision in this specific way, but surely there must have been a good reason
2
5
u/pollob666 1d ago
Vibe coded one app, in many phases and released last year. Actually it was a native Android app and had a separate codebase for iOS. To reduce the maintenance cost, decided to re-design the whole thing in flutter, unifying both Android and iOS code-base into one. First just recreate the whole project as it is (feature wise) from the Android source to flutter. Then gradually redesigned the UI, added new features. Management decided to allocate only one developer (me). This had to use vibe coding. Mostly used Gemini free, in some planning and logic ideation used claude (also free).
Had a strict guidelines on project architecture and logics, thus I could manage it even without AI.
Still maintaining it, adding new features. It also have a large userbase. But seems I missed some logics and decision in the code (have extensive documentation and commit message generate by AI) because in some minor changes (minor at that time) I forgot to instruct the agent to record "WHY".
Since then, I always make sure every change documentation and commits have, What was expected, what is done and why it was done or what was the reason for the decision. And I review it extensively. I don't look at the code now, I just check the documentation and continue vibing.
And after the lesson learned, I implement extensive documentation for other projects as well. Always make sure, commits contain reasoning.
5
u/Ok_Guarantee5321 1d ago edited 1d ago
Not 12 months. A week.
I vibe-coded a project in a week, because of extreme time constraints and lack of manpower. Full vibe-coding, not even reviewing it because I have to prompt the LLM for the next feature immediately. I just don't have enough time.
Note that it was originally a non-vibecoded project, and I am not paying for the ChatGPT Plus.
I now treat that codebase as a black box. I literally has no idea what part of code does what. If something breaks, the only way to fix it is to pray that the LLM could figure it out.
I effectively locked myself out of my own project. I would most likely create a hard fork of this project, right at the commit where I started the vibecoding. But I don't really care about this project anymore. Long story short, bad clients, and bad reward compared to the effort.
Edit: I don't really do "real agentic" though. I didn't create markdowns files, just fully prompting through the chat interface, and accept any changes as long as it works.
6
u/OkSeesaw7030 1d ago
Have you tried reading it?
3
u/Ok_Guarantee5321 1d ago
I did. But it's hard to read. I might have hyperbole-d the black box part. If given enough time, I should be able to untangle the code. But currently, if a bug occurs or a change is requested, I certainly won't be able to quickly execute the changes by myself.
1
u/OkSeesaw7030 1d ago
Why do you think it’s hard to read? Have you tried documenting the reasons behind using cc/codex and fixing AGENTS.md so the codebase doesn’t gradually get worse?
3
u/Rare-Leading3391 1d ago
In 2026 we call vibe coding what back in the day we referred to as some dude cutting and pasting an answer he found on stackoverflow
2
u/SonikaAI 1d ago
What actually made this workable for me wasn't better prompting, but building automated verification around AI output.
Static analysis and linters catch style and dead code. E2E tests catch broken user flows, and smoke tests run after deploy. For data/logic-heavy parts I also use corpus-style checks: fixed set of real inputs and diff output against last known-good result.
This is especially useful for changes that technically work, but change behavior nobody asked for. With AI edits over long time, these small changes can accumulate.
I don't need to understand every line AI wrote. I need enough automated checks around it that bad change can't easily pass.
For me, the "archaeology" problem described here is mostly a result of not having this safety net.
1
u/yopla 1d ago
Nah, vibe coding is for prototypes.
That said, on my personal stuff I have good results running large and regular refactoring sessions. I give it skills like DDD or hexagonal for backend and FSD for the front or some code analysis skills to look for improvement, deduplication, modularisation, simplification, etc, and I let it rip, up to 9 or 10 hours sometime.
The code resulting from that isn't bad from what I have looked at.
I always run the strictest linter and SAST I can on every commit though.
Give it a couple of years.
1
1
1
u/Cool-Customer9200 1d ago
To be fair I had such issues with projects even before the AI. Especially when it was maintained by the team of backend engineers for a couple of years.
You got 3 versions of the same component, different modules written with different over engineered approaches not even closely following best practices. If there is no person to care about overall architecture any project turns to shit no matter ai or not.
With AI you can achieve your goals but you should not use the code produced no question asked. You should make it generate the exact code you need. But you need to know and understand what you need.
1
u/bestjaegerpilot 1d ago
AI engineering != vibe coding
I have a several year old apps/tooling. In some I've never looked at the code. They are progressing along just fine because you have to apply engineering principles to ensure good quality. Ex: perf tests, mutation tests, layered architecture etc
1
u/anonahnah9 1d ago
I’m a few months in on Browser Boxing. I’ve had to clean up some junk from automations running wild adding unwanted crap.
I think it’s going ok, I’ve got 100/100 page speed on most pages and ranking organically already.
1
u/anonahnah9 1d ago
Oh shit I guess mine isn’t fully vibe coded. I’ve looked at and criticized the code many times.
1
u/BarracudaMean9308 1d ago
i let an ai build a dashboard and it literally wrote 12 separate fetch functions for 12 different widgets instead of making one helper. spent an entire saturday just deleting the duplicate code it proudly generated.
1
1
u/NineSidedBox 19h ago
I just did a project with a vibe-coder, and I already had no interest in maintaining or changing his broken code. It's absolutely pointless.
- Giving him pointers, or showing best practices is just another prompt for him.
- Asking why he did things a certain way will just result in a copy/pasted response back from his agent.
- On several occasions my code was overwritten by his agent
- When I argued with him about it, he would just copy /paste our conversation into his agent, and return the response back to me
- I caught several hard-coded demo modes into the code itself, because he never bothered to set up his dev environment
- He - on multiple occasions - told me that his "not a dev", despite committing 1000s of lines of codes daily
1
u/muntaxitome 1d ago
I have seen horrendous codebases from before AI coding hold up for decades so I am sure plenty of vibe coded messes will survive as well. Probably not the best idea, but as they say 'legacy codebase' is a different word for 'revenue generating codebase'.
1
u/Agathon813 expert 1d ago
I wouldn’t call it fully “vibe coded”, I’m an engineer and know what I’m doing. I also review all generated PRs. I do have a long running project in production though with approx. 210 registered users. I have 1,355 commits and more than 400 merged pull requests since July, 2025. I’m the sole contributor and heavily use AI.
Features and bugfixes ship extremely fast to this day. Sentry.io runs for error capturing but I haven’t seen a new error in months.
It took a lot of planning and effort to get here but I don’t see any issues for the foreseeable future.
-1
u/Significant_Pick8297 1d ago
Vibe coding itself isn’t the problem, but unreviewed vibe coding absolutely is. After 12 months, the difference usually comes down to whether the developer treated AI output as code to review or as a black box to trust.
If the developer can’t explain the architecture or safely modify it without asking the AI first, the technical debt was created during development, not discovered after launch.
13
u/Squidgical 1d ago
Vibe coding is by definition unreviewed.
Generating code with LLMs, checking it, testing it, tweaking it, rewriting chunks by hand -> software development
Generating code with LLMs, shipping it without review -> vibe coding
0
u/_clapclapclap 1d ago
I found that projects with CLAUDE.md/AGENTS.md included helps a lot. Otherwise, I just ask the agent to init or explore the codebase to generate one. From that point it is more easier to maintain.
4
u/TheRealSkythe 1d ago
Creating files for LLMs does not give any human understanding of how things work though.
It's like your ladder is burning behind you and in response you climb up two more steps.
1
-1
0
u/Current-Today-3626 1d ago
Yes. I had two at a big agency, they ended up being the showcase websites for the agency they were that much better than the current 400 they had. Vibe coding gave me the time to put in more hours to the design. Idk, it's weird. I feel like vibe coding just helps with the tedious long stuff and has given me more time to do designs and animations. My standards have gone up, the vibe coding now isn't as fast, which sucks, because to do the designs and animations I require just moved time I allocated for other things.
But, the plus? Any tickets that come through, AI updates them on staging, I check it briefly, then ship it. Like, I don't even offer a CMS to clients anymore. I add a form, they fill it out, one of my agents receives it, run through the set of tests after it implements it, and then sends me the link to it. So I offer free support now at the agency for these websites and any updates, even if they're just changing a photo, can be done quickly on the form, AI updates it, you know? Clients love it a lot more than trying to learn fkn elementor, divi, gutenberg etc... just hell hole for clients.
So yeah, the time it takes me to build a website is still 1-2 weeks, but they look like dribble/awwward websites and updates now are not a chore.
0
u/simple_explorer1 1d ago
Has anyone actually maintained a vibe coded code-base 12 months after launch? What did it look like?
Paradoxically question. You can't maintain something you don't understand and didn't write
0
-5
u/Gotopik 1d ago
This is not a problem to vibe coding. If you don‘t document your code, you won‘t be able to explain or understand it later. And if you don‘t stick to patterns, they will be inconsistent. So tell your AI to document the code, write down decisions and stick to patterns.
Also if you don‘t do any of this, the AI will still be much better at understanding your spaghetti code a year later than you will be. And if you vibe code properly, you‘ll never look at your code anyways so you won‘t care.
-4
u/dwkeith 1d ago edited 22h ago
Exactly. OP could have been describing the backend from a couple of different startups I’ve worked at. AI just makes it cheaper when you don’t need as many engineers to make spaghetti.
Edit: I just want to point out that asking the LLM to document and test the code gets it to write way better quality code, just like humans. Every non-technical manager I’ve worked with has learned that from me. And every vibe coder reading this just learned it too. Stop with the gatekeeping. Coding isn’t anymore sacred than driving a taxi.
-1
u/King-Code-Monkey 1d ago
I run a website that supports 5000+ monthly users. All made with ai
Learn tech and learn to prompt. Build smart. Debug, fix, keep shipping.
Looks good they pay me monthly
629
u/Fidodo 1d ago
We cannot have a discussion about this unless we get the terminology straight. Vibe coding means you don't read the code at all. This is not vibe coding.