Lessons Learned from Developing and Releasing a Simple SwiftUI/SwiftData App

Yury Kaspiarovich
3 min readApr 19, 2024

--

I frequently utilize “sticky note” type apps on my phone due to their ability to display short notes in widgets. Each month I create a note containing my high-level to-do list for the month, including books to read and tasks to accomplish. Having these main items constantly visible on my home screen is convenient.

While I’ve experimented with various apps for this purpose, I never found one that suited my preferences, mainly due to their odd aesthetics. It seems that because these apps are relatively simple, many developers, often utilizing frameworks like React Native or Flutter, go into Apple development by creating such apps. Unfortunately, this often results in apps that resemble websites more than native applications. Additionally, they all doesn’t have a crucial feature I require: the ability to organize notes into folders.

Consequently, I decided to develop my own sticky notes app, which I named Sticky Notes + Widgets. It’s a universal app, compatible with iPhone, iPad, and Mac. You can find it on the App Store.

Sticky Notes + Widgets interface

It took me 1.5 months to develop the app. Today I released the first version to the App Store, and here are a couple of takeaways:

I must clarify that I am not an iOS developer. While I have developed some simple apps using Swift and storyboards in the past, I had never utilized SwiftUI/SwiftData before.

Swift
Swift is a robust language. While I admire dynamic languages such as Ruby and JavaScript, working with a strongly typed language like Swift has been a comfortable experience for me. Swift’s ability to infer types reduces verbosity.

SwiftUI
SwiftUI is somewhat mysterious. Having developed web apps throughout my entire career, I’m accustomed to everything being open, allowing you to read the source code of any technology you use to gain a deep understanding. However, this is not the case with Apple technologies. All of it is private and some are poorly documented. Essentially, there is limited information available on how SwiftUI operates under the hood.

It appears to be kinda buggy, with comments like “it’s probably an Apple bug” being quite common when investigating unusual behavior in your program. This tendency to blame the framework first undermines your trust, leading you to believe that your bug (which often does turn to be yours) is actually an Apple bug. This is not a favorable experience, and it’s something I’ve rarely encountered in web development.

Documentation/Community
Documentation and community support are both limited. In the world of web development, I’ve grown accustomed to the feeling that “all questions have already been answered, just Google it”. However, this is not the case with Apple development. While there are answers to simple questions, more complex issues often require extensive searching and piecing together fragmented information scattered across the web.

Platform
The Apple platform is complex. Perhaps after 15 years of experience with web technologies, I’ve become accustomed to them, and don’t perceive as much complexity. However, the Apple platform, while feature-rich, appears very complex due to the “lots of moving parts” and lack of comprehensive deep-dive documentation. While SwiftUI and SwiftData simplify things on the surface, delving into more complex features often requires extensive research and may result in situations where you simply cannot resolve your issue. I had to forego many features for the first version because I was unable to comprehend how to develop them.

App Store
Bringing an app to the store requires time and effort. From creating an app icon to capturing decent screenshots and crafting a privacy policy, there are numerous tasks involved. However, Apple does an excellent job with localization, making it a pleasure to localize the app as Xcode provides ample support throughout the process.

Overall, it’s a gratifying experience to have your own app in the App Store. Currently, it’s free, but I plan to add more features and make it a paid app. I’m curious to see how much revenue, if any, it can generate, and I’ll document my progress here.

In next article I’ve documented the findings upon releasing a first version update for the app.

--

--