Reflections on vibe coding an iOS app
I am not an iOS developer, but a few days ago I published an iOS app called Pylo. Sure, I have been writing software professionally for nearly 20 years. I even wrote an iOS app before, but the latest commit to that was more than 15 years ago. As you might guess, I used artificial intelligence to create this app. Specifically I used Claude Code on Anthropic’s Max (5x) plan.
The whole process from coming up with the idea to publishing on the App Store took about a week. The basic idea of the app is to turn an old iPhone into a HomeKit compatible accessory so you can use it as a security camera. I came up with the idea because I (like many people, I assume) have a few old devices sitting in my closet. Rather than buying another baby monitor, why not repurpose one of those old devices?
I started out by having Claude build a proof of concept. The goal was to show that an iPhone can be used as a HomeKit accessory at all. So Claude implemented all the pairing stuff and exposed the device’s flashlight as a smart light bulb. Much to my delight, this worked!
Armed with a successful proof of concept, I directed Claude to build out some more accessories, including a motion sensor using the device’s accelerometer. The flagship accessory is of course the camera though. This started as a simple light sensor. Then it was a camera with video only. Then it added audio to the stream. Then it added audio output too, so you could use the device as an intercom. And finally it added support for detecting motion and recording clips, which is known as HomeKit Secure Video (HKSV).
My input to Claude mostly consisted of suggesting features to implement and gently nudging for some architectural decisions, like splitting out some local packages. I have read essentially none of the code. I did sometimes review snippets of code, but by and large I let Claude do whatever it thought was best. This process felt more like being a product manager than a software engineer.
I was aware of Claude’s usage limits during this, but I don’t think I ever hit them. That means I used about one week’s worth of my $100 monthly subscription to develop this app. I have contracted out iOS work in the past (professionally, not personally). I estimate that having this app developed via contract would’ve cost about $5,000 and taken a couple months.
The app itself seems reasonably well received so far. I’m certainly happy with it, at least! I posted it to the HomeKit subreddit and it’s one of the top three posts of the month. It also briefly peaked as number 28 in the paid utilities category on the App Store. So this app isn’t “slop”, at least as far as I understand the term.
Normally at the end of a software project I feel accomplished or proud, but I don’t feel that way now. I was involved with the development of this app, but I can’t really say that I created it in any meaningful sense. However I am happy that this app exists now.
I can’t help but think about what this means for the future of software development. Is there even any value in this thing that I’ve “built”? Someone else could point Claude at the App Store listing, say “build that”, and probably have something working in under a week. And did I even bring anything valuable to the table here? If you’re generous you could say that I had the initial idea, and that my engineering experience helped me guide Claude in a good direction. But maybe my direction was ultimately unnecessary, and it’s not hard to imagine that Claude could’ve come up with this app idea on its own.
There are still things I’ve done manually though. Like write this post. And the actual App Store submission process, and posting to Reddit, and responding to feedback. But an AI agent could do all of those things! And it almost feels inevitable that an agent will be doing those things in the not too distant future.
I’m not sure where that leaves me, as a professional developer. Do I lean into the human aspect by pitching my code as artisanal and hand crafted? Surely there will be room for that, in the same way that there’s room for hand made furniture even though Ikea exists. Or do I try to learn how to use AI, hoping that it will be a marketable skill? Being able to herd agents feels useful now, but maybe they’ll improve so much that I won’t be necessary anymore. I don’t know. It’s exciting, though a little bit terrifying.