This post is a work-in-progress..so some of it is very rough, some without complete sentences or thoughts. Feel free to comment and critique as it progresses, though.
There are effectively only two platforms left on the market for the average consumer:
Android (Google) and iOS (Apple)
Developers go where the market is, generally meaning native Android (Java, Kotlin, etc.) or native iOS (Objective-C, Swift)–right?
Well, these are certainly still valid options (‘old way’), but other, attractive options (‘new way’) are available, which I’ll cover below.
Old Way: Native Apps
- Android
- Google is basically ‘dropping’ Java
- For background, see Oracle v. Google, or Java is Dying (Medium)
- Google is basically ‘dropping’ Java
- iOS
- User base is at best holding steady, but not growing
- Apple makes it ‘difficult’ to develop apps
- macOS-based — XCode only runs on macOS
- Generally requires Apple dev account (at least $100/yr/dev)
- App store deployment effectively required, even if app targeted to small business or group
- Administrative/’paperwork’ overhead
- If charging customers for app, Apple takes large percentage cut from every sale, meaning it must be passed on to end customer
New Way: HTML5, Hybrid and Transpiled-to-Native Apps
At their core, both iOS and Android apps share almost ALL of the same concepts–UI elements, structural application components, etc. This similarity made them ripe targets for third-party frameworks to convert a common ‘mobile app’ source code base into two, distinct, native apps for each of the dominant mobile platforms. Enter hybrid and transpiled apps.
- Javascript/Typescript ‘transpiled’ and hybrid frameworks
- NativeScript (transpiled into native Android and iOS)
- React Native (native apps)
- Flutter (google-sponsored, iOS and Android native apps)
- Ionic (HTML5 mobile apps, hybrid, non-native)
- Xamarin (MS-sponsored, .NET cross-platform)
- PhoneGap (hybrid compiled, non-native, very old, was Cordova)
- There’s also just the simple HTML5 web app that can be run as a ‘progressive mobile web app’
- The beauty of all three types is that, to varying extents, they all leverage HTML/CSS/JS skills learned in web development to make functioning mobile apps