How to build a native app in 2019

Since Apple launched AppStore, 10 years have passed. More and more people use native apps, and the innovation on app platform will not stop in 2019.

I have developed apps on various platforms with various frameworks. Currently I’m developing iOS app with Swift, but I have experiences on windows app development, web app development with modern frameworks like React or Vue, and multi platform native app development with ReactNative and Flutter. In the past few years, many tools to build apps appeared and disappeared. In my opinion, we have 3 ways in 2019.

1. Native language, native platform

For iOS, Swift (or Objective-C), Xcode, UIKit

For Android, Kotlin (or Java), AndroidStudio (or other IDE), Android SDK

This is still the simplest way to build native apps in 2019.

The tools, SDKs, languages are officially managed and integrated. We can use the latest APIs easily. There is no worry to manage framework versions and unknown errors as using third party frameworks. We can focus on developing the best UX with device optimized software.

As it has been told, we need to develop for each platform, iOS and Android.

2. React Native

React Native is a framework developed by Facebook to build a native app for multiple platform, iOS and Android.

React Native is the same coding style as React, so it may be easy to begin for web developers who know JavaScript and React well. But if you don't know React, you need to lean React first.

The famous architecture for React is Flux architecture like Redux. If you want to build an app with a scalable architecture, you also need to learn about the architecture and libraries. It may take much time.

3. Flutter

Flutter is a framework developed by Google to build a native app for multiple platform, iOS and Android, and it can even build a web app.

I think Flutter reached many developers in 2018. I also developed an app with Flutter last year.

The coding style of Flutter is similar with React. It has components based UI development (they are called "widget" in Flutter), hot reloading, multi-platform.

But the biggest feature of Flutter is adopting Dart as a development language.

I haven't written Dart until I start to develop an app with Flutter. In my opinion, Dart is easy to write if you have some experiences on other languages like C#, Java, JavaScript.

Flutter is easy to build material design style apps by scaffolding. If you are planning to start a new app in 2019, Flutter is worth considering.

I introduced 3 ways of my recommendation to build a native app in 2019.

In my opinion, I still recommend to choose 1. native language, native platform for long term projects. But React Native and Flutter are very useful for prototyping projects. It's easy to build a beautiful app quickly, but hard to architect scalable app and catch up to latest APIs.

But the most important thing as a developer is choosing the tools you can enjoy :)

If you like this post, please follow me @masamichiueta Thanks!