How I Built a Mobile App Without Coding
What I learned by taking an AI development experiment all the way to the Apple App Store
I gave myself a challenge: build a full-featured mobile game without writing a single line of code.
Not a prototype. Not a proof-of-concept. A real app, ready for the App Store, with daily puzzles, AI-generated content, friend groups, leaderboards, push notifications, actual authentication, admin controls, profile management, etc.
The result is Puzoozle, a puzzle game where players scramble images, compete with friends, and solve AI-generated daily challenges. It’s not perfect, there are a dozen more features and enhancements I could add. But that’s not the point.
The point is I didn’t write any of the code to make it. I just talked to Claude Code.
What tools I used to build an app without coding
With Puzoozle, I wasn’t trying to reinvent gaming. It’s built on a familiar concept (picture puzzles) because my goal wasn’t innovation. It was exploration. How far could I build an app just through a conversation with Claude Code?
Turns out, it’s a lot, and the game I built includes everything you’d expect from a mobile app, from push notifications to private friend groups and full user management.
All of it was built using Claude Code, Anthropic’s tool for agentic coding (aka vibe coding). But I wasn’t asking for isolated functions or copy-paste code snippets. I was having full architectural conversations.
The process was simple. I would describe what I wanted. Claude Code would propose a plan, and then I would review it. We’d bat it back and forth, then I’d have Claude Code implement it.
Sometimes it nailed it on the first try. Sometimes it didn’t. But when it didn’t work correctly – that’s where the real breakthrough happened.
Letting Claude Code debug itself
It didn’t take long for me to hit a frustrating loop.
I’d request a feature, giving Claude Code broad instructions and the freedom to interpret how to implement my request with a UI that fits the theme I had described.
However, when I ran the app, something would sometimes be off. A notification would appear under a window. A button wouldn’t respond correctly. A new UI element would run off the screen.
Each time this happened, I’d have to give Claude Code more context about the problem it had just created, restart the application in my mobile simulator, navigate to the page, take a screenshot, send it to Claude Code, and point out what was wrong. It was painful and time-consuming, and Heaven forbid it got it wrong a second time.
I worked with Claude Code this way for a while, and I kept thinking that I needed to address it, and surely there is a better way.
So, I took steps to remove myself from this inefficient loop as much as possible. Using MCP (model context protocol), I wired Claude Code into additional tools so it could interact autonomously with the development environment. With these new tools, Claude Code could:
- Deploy the app to the simulator.
- Launch it and interact with it.
- Take screenshots of what it was seeing.
- Evaluate the visual output against what it was supposed to do.
- Identify problems on its own.
- Fix issues and try again.
Once that was connected, everything changed.
Claude Code would implement a feature, deploy it, run the simulator, click around, take a screenshot, realize something wasn’t right (oh, I don’t see the pop-up where it should be), figure out what went wrong in the code, adjust it, and try again. All without me stepping in.
I’d watch it work through the problem. It was like watching someone else debug code, except that someone was the AI that wrote the code in the first place.
Watching that happen feels like a fundamentally different development model. The validation loop is tightened, and problems are caught and fixed within minutes rather than requiring my intervention each time.
The taco lunch moment
The most surreal moment happened at a taco lunch with my family.
I showed the game to my kids, and they started playing with it, solving puzzles, and drawing things. And, of course, their suggestions for improvement were immediate.
My son: “I’d really like to play my own puzzles I just made.”
My daughter: “Dad, can you add shapes, text, and more colors?”
My son: “I think I crashed it when I went to publish my puzzle.”
In the old world, I’d say, “Yeah, that’s a good idea, I’ll add it to the backlog,” or “I’d better try to recreate that issue,” and maybe get to it in a few weeks. Or I’d forget entirely because, you know, life. It’s a side puzzle game, after all.
But in this new world, things are different. I opened GitHub on my phone right there at the table (and for sure caught some stray eyes from my wife while doing so) and created a few new issues in my project. I typed quick descriptions of what they wanted, asked Claude Code to come up with a plan, and if everything was clear enough, implement it.
We finished our tacos. Drove home, and when I walked in the door a couple of hours later, all their features had a plan written out and had been coded up on a new branch.
I pulled down the branch on my laptop. Validated Claude Code’s implementation on my iPhone simulator, then had it deploy the updated app to my phone.
“Hey, kids, come look. Here are your features from lunch.”
They thought it was super cool to see their ideas already implemented. So did I, honestly.
It took just a couple of hours from idea to implementation, and largely because we kept eating tacos. Features that would have taken me an evening or two to code manually, test, and integrate properly – took hours.
The conversation between “we should build that” and “it exists and works” has essentially collapsed. The friction is gone. It’s just conversation and validation now.

What I learned along the way
As I said earlier, I didn’t start this project to reinvent puzzle games. I started it to really understand where we are with agentic coding and what lessons I could take away from driving something all the way to production.
That experiment taught me a few lessons along the way. If you’re thinking about developing something similar, these are the takeaways I wish I had going in.
Start with a full vision
I built Puzoozle iteratively, adding features as ideas came up. One feature led to another. I started by letting users create puzzles and share them. Then I added leaderboards. Then I decided to add friend groups. Then someone asked me to add daily puzzles of the day. Then the drawing tools needed more features.
It worked. The app got built. But it wasn’t efficient. I spent a lot of time restructuring because I hadn’t planned the architecture up front. Friend groups were over here in the code, but leaderboards were structured differently over there. When I added a new feature, I’d realize it should integrate with something I’d built three features ago, so I’d have to go back and refactor.
If I had written a complete PRD (product requirements document) upfront and mapped the full architecture before building, I would have gotten to the finish line much faster. I would have seen how all the pieces fit together. I would have built the database schema right the first time. I would have structured the user flows correctly from day one.
AI executes incredibly quickly, and Claude Code can write in an hour what might have taken me a day or two. That speed is amazing, but it also means bad architectural decisions compound faster.
You can iterate your way to a finished product (like I did), but you’ll waste a lot of time. Planning still matters. It may matter more now because it’s so easy to build extra features; you will tend to build a lot of extra coolness and go down fun paths without a good plan.
Go all the way to production
I deliberately pushed this project through the App Store submission process. I wanted to find out where the process breaks down, where AI capabilities end, and what still needs development.
Many people are experimenting with agentic coding right now. I see it in the developer community online and amongst many of my friends. People are building impressive demos, cool prototypes, and neat features.
But the number of them that are finishing and shipping is much smaller. Like never before, you have this sense that anything is possible to build. You start a project, and before it’s complete, your mind is quickly on the idea for the next project.
It’s addictive.
As someone who just finished a product, I’m here to tell you there’s a lot more to learn by taking it all the way. The deployment requirements. Seeing users use your products. Reporting issues. Fixing bugs. All of these taught me additional lessons about using AI to develop.
Claude Code handled mobile deployment surprisingly well. But you don’t see the friction until you push all the way through it. You don’t find the limitations until you hit them.
Starting five projects is easy. Finishing one project teaches you the rest of the story.
So my advice is this: pick one thing and run with it. Don’t get distracted by the next shiny idea. Push through deployment. Submit it to the store. Deal with deployment, the user feedback, and the support of code while developing new features, all from an agentic coding world.
There’s a lot of education when you take it all the way.
Fundamentals still matter
I’ve watched teammates at Rōnin build genuinely impressive things with Claude Code despite having little to no coding background. Chuck Harris, our VP of Client Relations, has built multiple functional apps. Chris Bybee, our Director of Operations, who hasn’t coded seriously in years, jumped back in and has been building complex features. One of our Business Analysts, Marcia Clark, went from zero coding experience to building working applications.
That alone is remarkable. The fact that you can have a conversation with AI and produce functional software without typing syntax is amazing when you step back and think about it.
But there’s still a ceiling if you don’t understand the fundamentals.
I have had multiple sessions with Claude Code now, where we talked through big architectural decisions. I’ve noticed that, when talking with non-traditional agentic coders, the mentality is to simply ask Claude Code for a recommendation and run with it.
This can take you very far without really understanding how it’s solving the problem or the potential trade-offs. For complex enterprise solutions with security, governance, and integration concerns, there remains a need for an experienced development mind to conduct these interviews. Not to write the code, but to provide the right context to the agentic coding tool.
The roles are shifting. Development is becoming more about being the technical brain that guides the AI toward the right solution. The job is moving from “write code” to “ensure the right code gets written.”
Is It possible to build a mobile App without coding? You bet.
Puzoozle is live in the App Store right now. You can download it here and try it yourself.
Every feature inside it, every engagement, every line of code running on the backend, was generated through conversation. I described what I wanted. Claude Code built it.
Ten years ago, building Puzoozle would have required months of development time. Five years ago, maybe a month with modern frameworks and tools. Today, I built it in scattered evenings over a few weeks without writing any code myself.
The barrier between “I have an idea” and “I built it and shipped it” is thinner than it’s ever been in the history of software development. The gap between idea and execution isn’t just shrinking; it’s closing. It’s disappearing. So, the question isn’t whether you can build something anymore. The question isn’t even what you’re going to build.
The question is: how much longer are you going to wait?
Ready to try Puzoozle? Download it now from the App Store and solve some AI-generated puzzles. See for yourself what’s possible when AI does the coding.
