My Very First iOS App
It all started in 2021 when I was first introduced to iOS development after stumbling upon Mayuko, a YouTuber who makes iOS dev videos...

August 7, 2025
I loved Apple products, I loved programming, so why not put them together?
how it all started....
Once I found Mayuko’s YouTube channel and started watching her videos about iOS development—the how-tos, the pros and cons, and getting started—I realized my college didn’t offer any courses on the topic. So I began learning from scratch with tutorial videos by Sean Allen, Paul Hudson, and more.
I wanted to create a simple but practical app, nothing too difficult that could discourage me. I thought of a Shopping List app that could also be used as a to-do list. Of course this has been done a million times before, but I wanted to get experience, challenge myself and wanted to launch my first app on the App Store. So I purchased an Apple Developer Account and I started building.
The Engineering Process
I started building around February 2022 during this time I was studying abroad in Busan, South Korea. Every day I went to a cafe to build my app. Of course I got stuck in the tutorial trap like many developers do. But I eventually just stopped watching videos and went fully on my own. This was before AI like Chat GPT, Gemini, Grok, etc…, so I used StackOverflow and documentation to learn and solve problems.
I was learning as I went, many times I wanted to give up. I'd say the most difficult part was connecting the backend MongoDB Realm to the app. I had to look up documentation of Realm and figure out how to do that. Learning about UIKit and SwiftUI was also a learning curve for me. But I decided to go with SwiftUI because it was quicker and more intuitive. Around May 2022, my time in Busan was coming to an end so I asked my friend I met while in Busan to draw an app icon for my app, and uploaded it to the App Store. It was my first app live on the App Store so I was excited, even if it was a simple shopping list app.
-
What I Learned
- I learned Swift, SwiftUI, how to use Xcode, and connect my app to a backend to save data dynamically.
- I learned how to write debug statements in Swift.
- Properly separating the ViewModel from the Views using MVVM.
- Learned how to navigate App Store Connect, upload App Store screenshots, and publish to the App Store.
-
Challenges
- Solving problems with MongoDB Realm.
- How to share data between views.
- Uploading to the App Store.
Updating the app
A few months after launch, MongoDB changed some guidelines within their database, which resulted in my app crashing once an item was added. I recognized this from the crash logs in App Store Connect analytics. So I figured out the problem was how Realm was initialized. So I solved the problem and submitted a new version which also supported dark-mode, version 2.0.
A few years later, without any promotion, the app had about 150–200 downloads. I wanted to generate some income, so I updated it to cost $0.99. Downloads then dropped drastically. I decided to add a premium version and make the app free in the next update—but I also needed to brainstorm new features to add.
Version 4.0: the premium version
I came up with some ideas to add to the new premium model while restricting some of the core features from the free version. First, I was going to restrict users to only being able to add up to 7 items in the list. Dark-mode was not supported in the free version. In my premium model, there are two subscription tiers: monthly which is $1.99 per month, and yearly which is $14.99 per year
In the premium model, I added “Smart Suggestions” which took your most used items and suggested them—then you could just tap a suggestion to add it to the list. Exporting your list was also added, as well as recipe importing where users can paste a link from any recipe and the items automatically get added. Plus, the item limit was removed entirely and became unlimited.
-
What I Learned
- How to use StoreKit
- How to restrict features behind a paywall
- How to add subscriptions to App Store Connect
-
Challenges
- Coming up with new features for a shopping list
- Using StoreKit
- Restricting features behind my paywall