Building a Simple List App for iOS
Using SwiftUI, Xcode and Supabase
I use list apps obsessively.
I love laying everything out and going through tasks one by one. Reminders, appointments, projects, work, school – I think seeing it all on one page helps manage the stress that comes with staying on top of it all.
And yet, after many, many years, I never quite found the perfect app. Something quick, clean and simple, just the way I like it.
With no alternative, this is how I created my own perfect list app.
Objectives
I had four key objectives for this project:
- Create a simple app for creating lists and adding items.
- Build it using SwiftUI and Xcode.
- Support user registration and cloud storage.
- Implement in-app subscriptions.
Overview
The vision is simple – I want to create lists, and I want to add items to those lists. For added bonus:
- I want to see all my lists on one page for a high-level view.
- I want the option to scroll from one list to the next, so I can filter through each in a single flow.
Everything else ultimately comes down to improving that experience. A few final considerations, such as:
- A settings page for managing user preferences.
- Clean and simple UI to ensure interactions are as quick and seamless as possible, and content is easily digestible.
- Options to add, edit, reorder and delete.
- Links for user support and a privacy policy.
Since this is a saturated market, I wanted to use something other than Lists and Items — to offer at least some distinction from the crowd.
I landed on ‘Branches’ and ‘Priorities’ instead. For the Branches in your life (i.e. work, school, projects, etc.), and your priorities for each. A priority tracker of sorts.
Monetisation
I want the app to be free, but to cover the cost of Objective 3 (user registration) I also need to monetise. Enter Objective 4, in-app subscriptions.
Making the core features free forever is a great way to bring in new users and deliver an experience without limits for those who don’t wish to pay.
Likewise, providing a paid subscription that offers extra features is a good way to cover the cost of hosting while delivering a suite of features such as:
- Cloud storage and backup, which allows cross-platform syncing
- Greater customisation and color options
- Design preferences and themes
- Future features and options as they’re added
Tech Stack
I went with Supabase for the back-end. While I was torn between iCloud and Supabase, I landed on Supabase for the following reasons:
- Open source
- Greater flexibility and far more future-proof
- Seamless authentication and out of the box integration
For the front-end I used Swift UI, in line with Goal 2. This also has the following benefits:
- Native performance and optimization
- Can deploy to iPad, Vision Pro and Apple Silicone Mac’s out of the box
- Seamlessly integrates with Apple Developer and App Store Connect
- In-built support for StoreKit 2 and in-app subscriptions
Result
After a little tinkering, I’m happy with where I’ve landed. While it’s basic in its current form, it covers all of the core features I set out to achieve:
- Create new Branches and add Priorities
- Landing page displays all Branches (and an item counter for each)
- Simple, minimalist UI (with colour customisation available through Pro)
- Scroll between lists without returning home
- Settings page complete with passwordless user login and sign up, pro subscription, user preferences and support links
- Edit, delete and reorder branches and priorities
Plus a few bonus features uncovered along the way:
- Complete priorities to cross them off
- Filter priorities by their completion status
- Restore most recent cloud backup
- Account support including change email and account deletion
All in all, not a bad start. Not only have I learnt a ton about iOS and mobile back-end development, I have finally found my dream list app with full creative control over its future development.
What’s Next
I hadn’t intended on continuing this project, but after using it for a few months and seeing how valuable it’s been in my life, and the potential it has for future improvements, I can’t wait to work on the next update.
I have a backlog of features including:
- Improved design and animations
- Checklists, notes and dates
- Reminders and notifications
- Home screen widgets
- Shared branches
- And more!
Thanks for reading, If you’d like to help me test Branches it’s now available on the App Store.
If you enjoyed this post and would like to support my work, leave a comment or follow me for more.