Petr Homoky

Petr Homoky

I build things and share lessons nobody told me straight.

Blog post
5 min read

Twenty Years of Programming and I Couldn't Build an iOS App Until Now

I woke up this morning with a headache. My son kept waking up through the night, so my wife and I were up about twenty times. But when I checked my phone, I saw that Apple had approved my Edicek app for the App Store.

I'm thirty four. I've been programming since I was fourteen. Professionally since eighteen. This is the first time I've ever shipped an iOS app completely on my own.

TL;DRI tried for ten years to build iOS apps and always failed. This time I used Claude as a tutor while building Edicek. For the first two weeks I couldn't even understand the code it wrote, but eventually I started seeing patterns. My software engineering expertise shaped the architecture, AI helped translate it to Swift. Apple approved it this morning.

I Tried Before and Failed

I tried to build iOS apps ten years ago with Objective-C. It didn't work for me. I tried again when Swift came out. Still couldn't grasp it. The language, the architecture, the Apple frameworks. Something about iOS development was mentally impenetrable to me. I always ended up depending on other people to do the iOS development while I handled everything else.

What made it worse was watching Apple's promotional videos. They'd show a seventy five year old Asian woman who successfully built her first native app. Here I was, a senior JavaScript developer with years of professional experience, and I felt pathetic. These seniors were doing something I couldn't figure out.

What Changed This Time

I started building the iOS app at the end of November. This time I had Claude as my tutor. For the first two weeks, Claude wrote all the code. I didn't write or fix a single line myself. I couldn't even understand it at first. But I was reading everything it wrote, and after a while I started seeing patterns. Connections to how I'm used to programming. I began understanding the architecture, the structure, the way Swift works.

That's different from following step by step tutorials where you copy code without understanding why it works. I was building something I actually needed. Learning along the way. Claude wasn't just generating code, it was teaching me as we built real features.

The Technical Decisions

I initially tried building the app with React Native using Expo Framework. I thought I'd be able to share code and move faster. But I hit a wall with share extensions. That's what the entire app is built around. You're on a website, you tap share, you see my Edicek icon to save the URL. Share extensions aren't easily done in cross platform frameworks. You still have to write native Swift code in Xcode anyway.

I realized I wasn't actually sharing any code between platforms. So I made the call to cut Android support and go fully native for iOS. Better to access the features Apple adds and updates every year than to fight against framework limitations. It was also a business decision. The purchasing power in the Apple ecosystem is higher. People are used to paying for apps. My entire model is credit based, you pay for what you use.

The In-App Purchase Hell

Apple found one bug during review. It was on the backend serving the web application, not in the iOS app itself. But then came in-app purchases. I had to implement them for the first time, and I really burned out on it.

Apple rejected me four times. First, I missed some compatibility settings in my App Store Connect configuration. Then I discovered by accident that I hadn't signed certain agreements in App Store Connect. The reviewers never told me about the missing agreements. I stopped making changes to the app and just replied that I'd signed the contracts.

The frustrating part is that Apple doesn't let you test in-app purchase items until they approve them with your app. I saw them in the sandbox with test data, but the actual products kept returning empty. I couldn't verify anything until after approval.

The Role of AI and Expertise

Yes, I wrote this app with Claude's help. But my expertise as a software engineer was essential. Claude alone wouldn't write it the way we wrote it together.

Even though the AI wrote good code, it would mix old ways of building iOS apps with modern approaches. It would repeat the same patterns over and over for things like data storage and showing dialogs. It didn't mind the repetition.

I knew from decades of building software that those things should probably work differently. That's when I'd step in, ask questions, and Claude would say "yes, we can do this better" and suggest alternatives. Without my technical background, the app would be unnecessarily bloated. I understand what good software architecture looks like, I know the tradeoffs, I make the key decisions. The AI helped me translate that expertise into Swift and iOS patterns I couldn't grasp before.

What's Next

I've already shared the app with a few friends and gathered some feedback that I'll be working into it. Now I want to finish adding the features from the web version so there's feature parity between platforms. Then I want to publish at least a minimal version for Mac and iPad.

This morning, even with the headache, I felt great. After ten years of trying and failing, I finally shipped my first iOS app.

Download Edicek on the App Store

Get new posts in your inbox

I'll send you an email when I publish something new. No spam, just real stuff.