Choosing the best mobile app framework
When making your first app it can be difficult to decide from all the different options that are available for use for our mobile app framework and that makes choosing a mobile app framework really hard.
First party native apps
These are the tools created by the creators of iOS and Android or Apple and Google. Apple makes iOS and the Xcode development toolkit that allows us to create native iOS apps in Objective C and Swift. Google who makes Android, has Android studio that allows us to make native Android apps in Java and Kotlin. The benefits of using first-party native apps are that we get a native UI/UX, buttons look like iOS buttons on iOS and Android buttons on Android and we can swipe the gestures.
But since Apple and Google use different programming languages, we have to create the same app twice. So even though our apps look similar and have the same features, we will have to rewrite those apps twice in two different code bases. But the benefit is that whenever Apple or Google releases a new feature or a new API it’ll be there in Xcode or Android Studio immediately as they’re made by the creators of the operating system.
Progressive web apps
A progressive web app is a website that is running locally on your device, for example, Twitter Lite, Uber, and xHamster (or xHamsterLive). Popular technologies include Microsoft’s Blazor, NativeScript, AngularJS, React, and Iconic. One downside is the UI or the user experience. If we were using the native first-party toolkits like Xcode and Android studio they come with buttons and navigation tools. With PWAs, we are recreating those UI elements in our web frameworks for the same look and feel.
One advantage is the development speed: the code we write for our PWA will run on both iOS and Android, hence we don’t need to rewrite that code multiple times for different platforms. Performance is a little bit slower than with a native app: a button click takes about a 10 ms response time on a native app and about a hundred millisecond response time on a PWA, which is not that significant to be noticed by users. But if we’re creating something that’s fast-moving and needs quick response times like a game then PWAs should not be an option. PWAs cannot access every feature or API available to us in a mobile app like vibration, geofencing, and augmented reality.
You can install a PWA from the website by tapping Add to Home screen and this app will appear and run like a native mobile app. They can easily be shared via a URL and does not require complex installation. This allows us to get new features to our users more quickly and ensuring that all of our users stay up-to-date.
Cross-platform native apps
These are frameworks that allow us to create a native application in the same codebase so that we can share code between our iOS and Android apps. They give us access to every iOS and Android APIs. Cross-platform native solutions include Microsoft’s Xamarin (that we build in Visual Studio using the programming languages of .NET which are C#and F#) and Facebook’s React Native (using JavaScript).
Our UI and UX are totally native, we have fast development speeds because we are writing the app in one language. Also, they are as fast as if we did create it in Xcode or Android Studio. Xamarin and ReactNative are also mature open-source technologies. Every time Apple and Google release updates, Microsoft and Facebook will release up those same updates through Visual Studio and NPM respectively.
Flutter is Google’s cross-platform native solution (that we build in Dart, a new programming language created by Google). It is just 2 years old and different from Xamarin and React Native; Flutter draws its own UI on the screen rather than using iOS or Android UI/UX APIs. Apps built in Flutter are fast and high-performant but one downside is that whenever iOS and Android come out with new UI updates, Flutter will also have to come out with their new libraries to mimic those updates via NPM. It is also open source.
Conclusion
Suppose we have an existing website created in AngularJS and want to build a simple mobile app for it with lots of features, then a PWA would be a great choice. If you want to create an augmented reality app, your team prefers to work on both iOS and Android separately as not wanting to take risks of using third-party frameworks, so in this scenario, it makes a lot of sense to use the native toolkits. Although my take is that since you are reading this blog, you have started learning or want to build personal projects. So in that case, I will suggest you learn to build PWAs using React.