I Released a Production iOS App Without Reading Code: The Reality of “Vibe Coding”

Published: (January 8, 2026 at 03:03 AM EST)
6 min read
Source: Dev.to

Source: Dev.to

The “AI Agent Era” Is Exhausting – My Journey Building dumppp, a Native iOS Notion Client

At the end of 2025 a discussion went viral in the Japanese dev community about how “the AI Agent era is actually exhausting.” I felt a profound sense of agreement. While the title of this article might seem to suggest the opposite, by the end you’ll understand why I find this new era so incredibly taxing.

This is the story of how I leveraged AI agents to release dumppp, a native iOS Notion client, without reading a single line of logic.

Note: For the sake of this article, I refer to the process of coding via AI without deep reading as “Vibe Coding.”

The “Pain” of Being an Orchestrator

“AI will build the app for you.”
A few years ago we would have dreamed of such a sci‑fi world and rejoiced. But now that world has arrived—how does it feel?

To be honest: it is exhausting.

When AI agents act as the “developers” cranking out code at lightning speed, the human is forced into the role of the Orchestrator with 100 % of the responsibility. “The AI wrote it, so I don’t know” doesn’t fly. Even if you don’t read the code, the responsibility for behavior, contradictions in specifications, and the quality of user experience all fall back on you. Maintaining the “purity of decision‑making” requires more mental stamina than I ever imagined.

The “Self‑Imposed Constraints”: Pushing the Experiment

I didn’t want to give up on the sci‑fi dream. I believed that by completing a high‑difficulty project—releasing an iOS app—I could grasp the true nature of this exhaustion and see what lies beyond. So, for dumppp I set a grand constraint:

“Do not read the code.”

I might glance at build errors, but I fundamentally abandoned any attempt to understand the implementation details. Why? Because I wanted to experiment with how far AI could be treated as an autonomous implementer rather than just a completion tool.

While “Vibe Coding,” I poured all my resources into:

  • Requirements DefinitionWhat problem are we solving?
  • MarketingHow do we spread the word?
  • Monetization StrategyHow do we make it sustainable?
  • UX ValidationDoes it actually feel good to use?

I also decided to build it as a native iOS app using Swift. While I could have chosen a cross‑platform framework, I insisted on native APIs to maximize UX. In this experiment, the increased difficulty of native development was part of the fun.

The Pros of Total Vibe Coding

The benefits I discovered are overwhelming:

  • A One‑Person “Team” – I acted as Product Owner/Orchestrator while the AI was the dev team. This clear division of labor allowed massive parallelisation.
  • Building with Unknown Tech – OAuth, Notion API, StoreKit 2 (Subscriptions), AppIntents, and SwiftUI. I implemented all of these through dialogue with AI without ever opening a reference manual.
  • Hyper‑Fast Globalisation – Support for six languages (JP, EN, CN, FR, DE). Letting the AI handle everything from translation to implementation took only minutes. Adding three new languages while I was taking a bath felt like magic.

The Cons: The Core of the Exhaustion

This is where the true “pain” lies:

  • The Hell Beyond “Good Enough” – AI can get you to ~60 % with incredible speed. Reaching the 80 %+ “production‑ready” quality—fixing micro‑UI glitches that only happen under specific conditions or resolving offline‑sync inconsistencies—is where the debt of not reading the code comes due.
  • The 4,000‑Line “Fat File” Problem – Without strict rules, letting the AI handle everything leads to poor file separation. I ended up with massive files of up to 4 000 lines. The AI itself began to lose track of the big picture, and every fix triggered a storm of regressions.
  • The Trap of Quality Assurance – You think “It works!”, but edge‑case bugs keep popping up. Retrying with the AI over and over, only to have it repeat the same mistake because my intent didn’t land, brings a unique kind of mental fatigue—different from the fatigue of writing code.

The Solution: SDD (Specification‑Driven Development)

To survive this chaos I arrived at SDD using SpecKit:

  • AI Generates Specs – Before writing code, I had the AI write detailed Markdown specifications.
  • Human Reviews / Approves – I scrutinised the specs, discussed them with another AI, and finally gave the “OK.”
  • Implementation via Claude Code – The approved spec became the single source of truth for the AI to implement.

This almost entirely solved the problem of the AI “hallucinating” its own logic. As long as the human holds the spec, the fluctuations of Vibe Coding are drastically reduced.

Mobile‑Optimised DX

  • GitHub Issues & Actions – Creating an issue from my iPhone triggers Claude Code on GitHub Actions to automatically create PRs for both specs and code. I can develop without ever touching a terminal.
  • Development Anywhere – This environment let me refine specs and implementation during bus rides, in the bath, or in bed.
  • The Backpack Deploy Machine – For physical‑device deployment I kept a MacBook in my backpack, connected via tethering, and used Tailscale for remote access. I solved the build process with brute force using Termius.

Leveraging AI Beyond Code

I used AI for everything, including marketing. The most interesting hack was using NotebookLM to turn my specs into a podcast. By listening to an AI‑generated discussion of my own strategies while doing dishes or laundry, I could spot logic holes or flawed monetisation plans from a “third‑party” perspective. Sometimes I’d even ask it to just “praise this project to the moon” to recover my motivation (lol).

Conclusion

Vibe Coding an iOS app taught me about the incredible potential of AI development—but it also revealed a hidden cost: the mental load of being the sole orchestrator of an otherwise autonomous system. By moving to Specification‑Driven Development, I reclaimed sanity, reduced hallucinations, and built a workflow that lets me harness AI’s speed without drowning in its side‑effects.

If you’re tempted to go full‑Vibe, remember: the AI may write the code, but you still own the product.

It doesn’t mean “life gets easy.”

The pain of reading and writing code has simply shifted to the pain of scrutinizing specifications and making constant decisions.

However, productivity has been elevated to a level beyond mere “efficiency.” I could spend more time on things outside of development. While I know the joy of being an engineer who writes code, I believe AI‑driven development is the joy of a new era. It’s natural to feel “allergic” to breaking one’s own role, and there are countless times I wanted to just write the code myself.

Through this experience, I’ve realized that the path forward is to treat AI not just as a tool, but as a “partner,” and for the human to maintain the discipline of a “Conductor.”

Start by writing your AI‑agent rules and specifications with care. Beyond that, a landscape you could never have reached alone is waiting for you.

Check out the result of this experiment here:

https://dumppp.com/

Back to Blog

Related posts

Read more »