How to build an iOS indie app fast
A guide on how to speed up app development when your time is limited
Building a native iOS app takes time. Writing it from scratch alone is super challenging. Even more when your time is limited.
In this post, I share ideas on how to speed up app development. It’s all from my experience. On a daily basis, I work full-time as an iOS developer. I don’t have a lot of time to spend on indie app development. I got mainly weekends and from time to time 1 hour during the day. Here I share what’s helped me when building a new app.
Assumptions
Let’s assume a few things:
You want to build a native iOS app.
The goal is to release the app as fast as possible, so you can get early user feedback.
You’re the only person working on this app.
You do everything: design, code, marketing.
Your time is limited. You have only a few hours per week to spend time on it.
Tips
Time tracking
Start tracking the time you spend on the app. I really highly recommend it. It’s eye-opening how much time it takes to build. I use Toggl.
Cut scope
Got an app idea? Define a feature set for MVP. Ideally, one key feature that solves users’ problems. You need to cut the scope as much as possible. But I mean really cut. Every not implemented feature saves you a ton of time. Things you don’t need in your app at the beginning:
Dark mode
iPad support
Old iOS versions support. Focus on the latest major release
Multilanguage support - just support one
Offline support
Analytics
Widgets
Push notifications
Design
A huge time saver is not using a custom design. Use out-of-the-box components from Apple.
If you need a custom design, spend some time to rough design in Figma main screens and components. It’s better to iterate on design in Figma than in code.
If you are not a design expert, I highly recommend the book “Refactoring UI” by Adam Wathan and Steve Schoger, creators of Tailwind CSS. It’s not mobile-focused, but it gives great basics on how to approach the whole design process.
Data model
If you need a data layer in your app, design it before starting to code. Define main objects, how they relate, and so on. Check if main user flows are covered.
For example: you build a gym workout app. Define how you represent units, what exercises look like, etc.
Why do I recommend it? Coding is fun. But refactoring your code once you find out you missed a key functionality is a bummer. And it saves time.
Tech stack
Code in Swift. Objective-C is out of the question 🦕.
Use SwiftUI. If you don’t know it, don’t worry and learn on the way. It will speed up development a ton. Live previews are a killer feature.
Depending on the app requirements, choose a proper library to save time. Do you need a local database? Use Firebase. Do you need in-app payments? Use RevenueCat.
AI tools
Using AI tools, like ChatGPT, to generate code can be a time saver if used properly.
One of my favorite use cases:
Give a protocol and ask to implement a class/struct.
Generate a code based on already existing code. It’s amazing if you don’t want to write boilerplate CRUD.
Spot a bug.
Planning work
When planning a work I like to keep it simple. Plain TODO.txt in the project is enough to keep track of things to implement and bugs. Other productivity tools or project management apps are simply distractions.
When ending work, I recommend also leaving a note where you stopped, so it’s easier to start work the next day without wondering “What I’ve been working on recently?”.
Bugs
Have you spotted a bug? What’s the priority of it? Does it block the main user flow? If it is a minor one, like a UI glitch, save it to TODO.txt and move on. You can fix it later.
Did you spend 1h trying to fix a given bug and you don’t know how to do it? Leave it for later. Save it to TODO.txt. Close your computer and have a break. It makes wonders. I bet the solution will come to your head quickly.
Summary
Building a new app as a solo developer is time-consuming. These are the tips I use when working on my app. I could have saved many hours if I had used them from day one.
What are your tips? How do you speed up iOS app development?