3 different ways to build a mobile app
Thinking about entering mobile app development?
It’s important to select the correct type of mobile app development based on the app’s needs and the developer skill/resources available.
Here are the different types of mobile app development to consider:
1. Pure/native
This is ‘pure’ mobile development using the tools provided directly from Google and Apple.
iOS: code in Swift or Objective C using the Apple Xcode IDE
Android: code in Java or Kotlin using Android Studio (or other Java-based IDE)
Advantage: completely native and performant for each platform; easier to update to latest platform features
Disadvantage: double development (per platform); need to know both platform languages
2. Cross-platform frameworks/libraries⠀
Apps can be written in a single language/framework and be ‘cross’-built to both iOS and Android from a single codebase
Great options are React Native (JavaScript/React), Native Script (JavaScript/Vue.js/Angular), and Flutter (Dart), and .Net MAUI (C#/.Net)
Advantage: share code between iOS and Android (write once, deploy on both); use the language you know well (like JavaScript or C#)
Disadvantage: can be less performant than pure native; can be more difficult to support native platform features/UI at times
3. “No-code” app builders, or Hybrid⠀
Alternative solutions are using “No-code” app builders, and Hybrid solutions like Cordova
“No-code” app builders: various services that enable you to build apps without coding - Advantage: can built quickly without knowing how to code
Disadvantage: there could be notable limitations in deeper app capabilities
Hybrid: most logic/UI is proxied through a web view embedded into the app; more like a web app embedded into a native app frame. I don’t recommend this today since it typically had very poor performance and/or quality
More thoughts
I also want to mention that any of these options still require you to work with Apple and Google for:
- Publishing to their app stores
- Using their services (push notifications, payments, etc.)
I’ve used all three options but my favorite is native as it’s the the most powerful/flexible.
The one I use the most however is cross-platform as it’s the most time-saving/optimal.
Which option(s) interest you? If you have some experience, feel free to share.