When the Apple App Store and Google Play Store was first opened to developers, there was only one obvious way to develop apps. For iOS we would use Objective-C and Xcode to develop apps for the operating system, and for Android we would use Java and Android Studio. This meant that if a company wanted to create a mobile app they would need to create an app for both platforms. Today this continues to be the way to develop apps, and is the best way to do it in some cases that we will discuss below. However, developers have used smart engineering to create news ways to develop apps for both platforms using just a single codebase. There are several benefits to doing things like this, but of course it depends on the feature set of the app. So before developing the app, you need to decide on the best tech stack for your company and the options we need to consider are:
This is developing a mobile app for Android or iOS (iPhone and iPad) with the tools provided by the operating system. Native Android apps can only run on Android devices and similarly native iOS apps can only run on iPhone or iPad devices. If your applications features are centered around accessing hardware features or aimed at just one operating system you should consider going native.
iOS apps can be developed using Xcode on MacOS devices. They can be developed using Both Objective-C and Swift. Most new apps are built using Swift, whole Objective-C is only used to maintain older projects.
AI and Machine learning continue to help developers build advanced functionality into iOS apps and and Apple's Core ML can be used to run models on iPhones and iPads. These models run fully on the users' devices, keeping speeds optimal and their privacy ensured. We can use Core ML to build features that require image recognition, object detection, action, activity or sound classification, as well as text recognition.
For Android apps we use Kotlin or Java to build apps. Kotlin is a open source general purpure programming language for Android app development. It was designed to work with Java so when making the transition you could use both Java and Kotlin in the same project and the compiler would understand it. Kotlin was simply a better, more modern language, with an improvement of the faults in Java and it helps to ensure that the apps we build stay modern for longer periods and can keep up with the latest features.
Android apps can also include machine learning functions using Googles ML Kit API. This allows developers to add features such as barcode scanning, face detection, text recognition, image labelling, digital ink recognition, pose detection, selfie detection and more. Google is one of the leaders in AI research so you can expect Android technologies to be at the forefront of AI innovation.
Cross-platform applications use native elements to give users a great experience on any device. They have one codebase but can work on many devices so essentially you develop 1 app that works on many devices. Even though there is just 1 codebase, these apps can provide all devices with their own UI elements to provide the best user experience for that operating system. Cross-platform apps are probably the most popular way to develop a mobile app right now thanks to the popularity of Flutter and React Native. If you need to develop an app for both Android and iOS this is definitely the way to go.
Another solution is to combine a web app with a native app, and it is called a Hybrid or Web Native app. To build a hybrid app, you basically build a web app and put it in a container for Android and iOS so that it can be put on the Google Play Store, App Store, Huawei App Gallery as well as the Windows Store and Mac App Store. Tools such as React, Vue, Ionic, Electron, and Capacitor are used to develop these. Thanks to the ever increasing performance of web browsers and a strong web development community, for most cases the performance of these apps are just as good as Native and Cross-platform apps. Going hybrid is ideal if you have an audience on many platforms or want to build an MVP to test your idea.
A web app is basically an app, built like a website. This means it has the same features you would have in the app but you can access it with a link instead of downloading it from the app store. This is great for small apps that add additional functionality on the mainstream apps. This can also be used as a way for popular apps to make their service more accessible. Web apps can also be made into progressive web apps that can be saved on the home screen of devices just like an app. To build a web app, languages such as Javascript and Python are used along with frameworks such as React and Node.
So to sum it up, native app development is best for hardware heavy apps, while cross-platform, hybrid and web apps are best for most other apps that focus on online services. Cross-platform is going to be more performant than hybrid and web, but the latter 2 options will be quicker and cheaper to develop. Cross-platform and web technologies will continue to improve as companies like Google and Facebook are backing them and using it for their own apps. It's also possible to combine both native and cross-platform methodologies in the same app. The cross-platform tools can be used to build the parts of the app that could run as a web service while native development can be used to add native features that access the devices hardware.