Last Updated: December 14, 2020
So, you want to build a mobile app? Sweet. You're in the right place. Let's jump in.
In this super brief article I'll show you all the steps you need to hit to go from "I want to build and app" to "holy shit, I've got an app in the app store".
First, what platforms are you building for? At the time of writing we've got two primary platforms:
- iOS by Apple - 28.9% of global market (61.23% of US market)
- Android by Google - 71.18% of global market (38.59% of US market)
Stats for November 2020. Source.
Decision: Will you be building for one platform or both?
How to Build the App(s)
Next you need to decide how you're going to build the app - meaning which technology are you going to use to actually get your idea into something useable.
There are a ton of options and I'll miss some for sure. Top choices:
- Swift - Build a native app using the Apple's language. Limited to iOS only.
- Kotlin - Build a native app using Google's language. Limited to Android only.
- Flutter - Build a native app using Dart. Somewhat new but growing in popularity. iOS and Android with the same codebase.
- Draftbit - A visual app builder that outputs a React Native app. iOS and Android with the same codebase. Good option for less technical folks.
Like I said, there are a ton of options. Choose what feels best to you/you're familiar with/what you want to learn. I'm partial to React Native - YMMV.
Before You Start Writing Code - Create a Roadmap
I know you're excited.
I know you want to start writing code.
But trust me, you want a roadmap.
Because no matter how you choose to do it, you're going to get frustrated and confused so it's nice to have a roadmap to look back on.
We've got a few sub-sections here:
Write it all out. What's your big vision? If you could snap your fingers and immediately have your app what would it do?
Group and Order It
So you've got a big list of stuff, right?
Next step is to group it together. What stuff goes together?
For example: You want a user to sign into their account and create an account. That stuff could be grouped into user accounts.
Once you've got your groups lets order things. Order things by their necessity and their requirements.
You may want some fancy peer to peer challenge for your quiz app, but if you don't have the quiz architecture for a single player mode you're kind of stuck.
So go ahead and figure out what depends on what - what tasks within a group depend on other tasks in that group? What groups depend on other groups before you can complete them?
Order the tasks and groups in that manner.
Thin It Out
Now that you've got it organized lets thin things out.
We want to establish our minimum viable product (MVP).
This is going to mean different things to different people but I want to encourage you to make it painfully minimal.
Like, no features.
Why is that? Because I want you to walk through the entire process of building, testing, uploading, and releasing your app as fast as possible.
It's a different process from releasing a website and it can be intimidating. So start while your project is simple and it's quick to compile. Get rid of the wrinkles in the process while you can iterate fast like sonic.
Honestly, if you're serious about building this app I'd suggest you get all the way to submitting an app for review with nothing more than a "Hello, World" on the screen.
I've done it a dozen times before and I'll do it again, dammit!
Starting the Project
Alright, it's time to actually start writing some code.
You know where you're going so it's time to make some tech choices.
First, how are you building your app(s)? Let's assume React Native for the remainder of this article.
Next we should initialize a new project.
This means we need to get our development environment in order. This will depend on what technology you chose. I typically look at the getting started guide to do this.
A personal suggestion: take a moment to setup some tools (if they're not included by default) to enforce nice coding conventions. They may seem unnecessary now but they make debugging your inevitable bugs so much easier.
MVP Feature Build
Project is initialized. You've got "Hello, World!" rendered on your screen.
Let's build out the first features, shall we?
Go back to your list and choose the first group. Then the first task.
Despite being the most succinct section of this article it's the one that will take the most work. Therefore I can't provide much guidance because I have no idea what your MVP is.
But remember: KEEP IT SIMPLE and move on to the next step.
Uploading to the App Store/Play Store
First feature is done. Time to get it on the app store.
Before you do that though you need to create somewhere for you app to go - meaning you need to create an app store listing.
The process depends on the platform you're targeting but, typically, it starts with creating a developer account, answering some questions, jumping on one leg three times, and sleeping with a spoon under your pillow for a fortnight.
But once that's done, you've got your storefront which you can start shipping goods to.
You'll then want to bundle your app (the goods) for the specific platform (iOS, Android) and upload it (ship it) to the store front (the listing you created).
Releasing the App(s)
With your app uploaded you'll now have to get approval from the mall owner (Apple, Google) to open your shop (release your app onto the app store).
This process can be intimidating but plenty of people have done it before so no matter what your question is you can find an answer.
Answer the questions honestly and fully.
And then hit that submit button.
This puts it into a review queue. For Apple this means someone downloads and tries your app. For Google it means some automated checks are run.
Then, depending on what options you chose when submitting your app, once it's approved your app will be live on the app store for all to see!
If it's rejected I would say just throw in the towel and don't try again...
...Obviously, I'm kidding. If your app is rejected review the reason and fix it. Then go through the process again.
Further Feature Development
Okay, you've your basic app out there in the app store.
But it's feature poor and doesn't provide much real value.
BUT you've gone through the process and know what to expect.
Now it's time to start building it out.
There's a lot here as well - such as getting users, making money, etc, etc, etc.
I'll just focus on the code part.
My suggestion is to ship early, ship often. Ship each group of features when they're ready.
Or better yet, ship each feature as it's ready.
Get feedback early and often.
But that's a whole product philosophy we won't get into here.
Keep building, keep iterating, and keep providing value.
Updating the App(s)
Now you've got a new feature done.
Or maybe it's a bug fix.
You need to get it into the app store.
Unlike deploying something on the web, we still need to go through a review process like we did for the initial upload. We just have to fill out less forms and create less things.
When releasing to the app store(s) you'll need to define a new version, assign a build to it, put it into review, and then release it to your users.
Yes, each time.
If you're using something like React Native you can skirt by some of this (though I'd only suggest that for bug fixes) using over-the-air updates. I've got a whole class on that subject. It's quite interesting!
Maintaining the App
The year is 2043. You've been maintaining your app for decades and have 1.2 billion users.
But how the hell did you do that?
The biggest factors are this:
- Keep your codebase up to date. Do the upgrades as you need them. Upgrade your third party dependencies.
- Keep up to date with the changes of the platforms you're publishing your app on (Apple's iOS App Store, Google's Play Store). They own the mall - you've just got a space in it. It may not be fun but we've got to play by their rules in this environment.
I hope that helped give you a high level overview of what the hoops are you're going to have to jump through in building a mobile app. There's a lot to it but it's worth it to reach the 3.5 billion mobile users in the world.
If you're interested in learning more of the how behind building your app with React Native then feel free to browse React Native School. We've got content to help jump through all these hoops the right way each and every time.