Developing an IOS app; Zero to hero?

My experience developing a swift based IOS app that is fully offline while allowing Maps, and LLM functionality.

App Exploded viewApp Exploded view

This November, I decided to dive into Swift development for the first time. I didn’t know Swift. I didn’t know SwiftUI. I had zero experience with iOS development.

My goal was to turn my existing WebApp, "Something To Do," into an iOS app designed to run entirely on the user's phone, fully offline. I didn't want the hassle of maintaining a server or hosting user data; I wanted the phone itself to do the heavy lifting.

While the coding part started well, with a lot of handholding from Cursor and Gemini, the administrative side of the Apple ecosystem turned into a major headache. Here is what I learned navigating the hurdles of releasing my first iOS app.

The Prototyping Phase

I started by watching videos and reading Swift documentation, but I quickly got overwhelmed. To break the paralysis, I used a combination of Cursor and Gemini to go from zero to one. When they messed up (which they did), I used other tools to verify their work and the Swift documentation to help with the hallucinations. Surprisingly, Apple’s documentation and design resources were the real MVP. They helped me understand why things work, not just how.

Here are some resources that helped me a ton:

Things were going great until I wanted to have my girlfriend and friends test the app on their devices. That is when I hit the Apple roadblocks.

The "Shenanigans" of Distribution

To use TestFlight and let others try the app, I had to jump through several hoops that were not mentioned in the tutorials I watched—or even in Apple's error messages.

  • The $100 "App Tax": You cannot really test properly without paying. I had to shell out $100 for an Apple Developer Account just to get started. Not fun.
  • Login Bugs: For the first three days, the system kept telling me my account didn't exist, only to let me log in on the second try. It was incredibly glitchy for a company that charges a premium on every transaction.
  • The Invisible Email: I spent an entire day debugging an issue connecting Xcode to Xcode Cloud. The system gave me no detailed error messages. It turned out the entire problem was a single confirmation email I needed to accept. Apple never notified me to expect this.
  • Compliance Forms: You can’t just invite testers. You first have to declare encryption compliance and fill out forms for every build before TestFlight lets you send invites. This can be automated, but as a newbie, I didn't know that yet.
  • The App Store Connect Confusion: Creating a developer account wasn't enough. I had to separately configure an App Store Connect account to handle the actual store presence. Thank god it is a one-time deal because it was deeply confusing.

Why is this so hard? If you use Vercel or Render, you just connect your GitHub repo, and they handle everything. With Apple, it feels like they intentionally make it complicated.

The Takeaway

Forty-five days later, the stats are kind of amazing:

  • 50,000 lines of code for the iOS app itself.
  • 450,000 lines of code in local packages and dependencies.
  • Total scale: Half a million lines of code in a month and a half.

Despite the administrative headaches, once you do it once, you know the drill. This last month has proved something important to me. I used to overthink projects, wondering if I had the skills to pull them off.

Now? I know I can just do it.

Knowing exactly what I wanted to build - the UI, the workflow, the UX - was half the battle. The rest was just translation. I might not be a "Swift Expert" yet, but I’m comfortable enough to be bold, take leaps of faith, and build things that I wouldn't have trusted myself to build a year ago.

The app is huge. The code is massive. And I’m just getting started.

Now that the hurdles are cleared, you can look for Something To Do on the App Store :D