In this article we will be talking about choosing the best mobile app framework when making your first app, it can be difficult and it can be awesome to decide from all the different options that are available for us for our mobile app framework and that makes choosing a mobile app framework hard, it’s not easy there’s a lot of information out there that can lead us down.
There is a lot of considerations outside of the framework that impacts our app such as how much time do we have to market, what is our current development costs and maintenance costs. Do we have a team of engineers, do we need to hire, what features do we need, how performances are apt to be, how performant is our app needs to be and what are the risks going with a third-party solution.
First party Native Apps
Let’s start with the first party native apps,
These are the tools created by the creators of iOS and Android or Apple and Google. Apple makes iOS and they also make the Xcode development toolkit, which allows you to create native iOS apps in Objective C and Swift.
Google makes Android an Android studio that allows us to make native Android apps in Java and Kotlin. The benefit of using first-party native apps is we get a native UI UX, so native user experience buttons look like iOS buttons on iOS and in Android, they look like Android buttons.
We can swipe the gestures they are all baked in we get that for free but one downside is that the development speed is a little slower and that’s because we have to create the same app twice for Apple and Android. Google uses different programming languages they use different toolsets and so we cannot reuse the same code iOS, even though our apps look similar to have the same features we will have to rewrite those apps twice in two different code bases with two different engineers. It will increase our development costs, it increases our maintenance costs and it slows down our time to market.
But the benefit is we are using the first-party tools whenever Apple releases a new feature or a new API it will be there in Xcode the same day, whenever Google releases a new feature a new API it’ll be available to us in Android studio the same day so we never have to worry about falling behind and we never have to worry about whether or not there will be support for these tools sets because they’re made by the creators of the operating system.
Progressive Web Apps
Another option is progressive web apps. A progressive web app is essentially a website that is running locally on our device with progressive web apps, we create the UI just like we would for a website, and there are many different technologies available from Microsoft’s blazer, native script, Angular JS, React to Iconic, that are tools that most web developers are already familiar with.
The benefit here is you might already have a team of web developers that created your website and we can repurpose those skills for our mobile app.
One downside is the UI or the user experience with progressive web apps the UI will have to be bespoke on iOS and Android. If we were using the native first-party toolkits like Xcode and Android studio. They come with buttons they come with navigation tools and we essentially get those for free with progressive web apps. We are recreating those tools those UI elements in our web frameworks and so we essentially have to recreate that same look and feel that we would get for free.
If we are using a native app one big improvement is the development speed of the code we write for our PWA(Progressive Web Apps) will run on both iOS and Android, so we don’t need to rewrite that code multiple times for different platforms and that also reduces our maintenance costs but we’ve mark maintenance costs here as the medium because if we ever need to refresh the UI because that UI is bespoke we will have to rewrite that all ourselves and so that is one risk just like with an apple on iOS 7 made everything flat everything was skeuomorphic and then everything because flat any app created with web technologies had to rewrite their UI whereas if we were using the first-party frameworks.
All we would have had to do is recompile our app to get that native look and feel performance is also a little bit slower than with a native app now it’s not that much slower with a native app we’re talking about a 10 millisecond response time for a button click and with a progressive web app we’re looking at about a hundred millisecond response time, now 100 milliseconds is still well below with a threshold that a user would even notice but if we are creating something that is fast-moving that needed quick response times like a game then maybe progressive web app wouldn’t be the best choice in that scenario this is also a fairly new technology.
One of the biggest downsides to PWA is the feature access PWA cannot access every feature or every API available to us in a mobile app, they do have the ability to access a lot of features like Bluetooth and geolocation, but they don’t have access to a lot of other features like vibration geofencing and augmented reality.
One big benefit is we can install PWA from the website and we can navigate to a website in browser and tap on Add to Home screen and this the app will appear and run like a native mobile app, typically apps have to be downloaded from the App Store but with PWA we can do it because they use web technologies, we can download it straight from the website, so 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
In this we will discuss the cross-platform native apps, these are frameworks that allow us to still create a native application, they give access to every single iOS and Android API but they allow us to write the app in the same codebase. We can share code between our iOS and our Android apps.
Xamarin is Microsoft’s cross-platform native solution that we build in Visual Studio using the programming languages of .Net which are C-Sharp and F-Sharp. UI and UX are native, we have fast development speeds because we are writing the app in one language, so we don’t have to rewrite it like we were using the first-party toolsets and performance is just as high and just as fast as if we did create it in Xcode or Android Studio.
Xamarin is also a mature technology it’s been around for over a decade and it is feature complete it means, every time APPle and Google release updates Microsoft will release those same updates through Visual Studio and it is also open source.
React Native is Facebook’s cross-platform native framework similar to Xamarin. Facebook also gives us access to every single iOS and Android API so our UI and UX are native. We have faster development speeds because we only have to write the code once and it’ll run on both iOS and Android.
Apple and Google come out with updates Facebook will also release updates via NPM.
The last tool is flutter. Flutter is Google’s cross-platform native solution that is pretty new. Flutter is different from Xamarin and React Native in one way and that is Flutter does not use the Native UI in the UX API is provided by Apple and Google Flutter uses a bespoke method to draw their UI on the screen now there is a benefit to that because it is faster.
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 as well it is feature complete they also release updates via NPM.
Very fast high-performance apps and they are all created in Dart. Dart is a new programming language created by Google, not that many developers are already familiar with it but it has many similarities to Java and C-Sharp and a lot of those developers will take to Dart very quickly and it is also open source.
Which mobile app framework is best is the one that’s best for your team every team is going to have different scenarios every team is going to have different capabilities and as long as we understand the trade-offs between a native fast party and PWA and cross-platform native. We can ensure that we choose the best mobile framework or team.