Choosing the Best Framework for Your Next Mobile App

There are many frameworks out there. But, you have to choose only one.

Shalitha Suranga
Mar 10 · 5 min read
Photo by Jaelynn Castillo on Unsplash

Earlier, every developer did mobile application development directly using the Software Development Kit (SDK) given by the specific mobile platform. For example, Android SDK has all the required Java API for Android application development. On the other hand, iOS SDK has all the required Swift/Objective C APIs for iOS application development. Therefore, both popular mobile platforms have two totally different SDKs. This situation created a critical problem from the business perspective of mobile application development. Businesses had to maintain two codebases for each mobile platform. In most of the scenarios, they had to look after two development teams.

Cross-platform mobile application development frameworks came as a solution for this business problem. All of them tried to introduce an abstraction level over platform-specific APIs. Some frameworks used webview for abstraction. Some frameworks came with their own graphics libraries. If you are planning to make a cross-platform mobile application, there are several choices out there. We need to carefully select a framework because your mobile application’s success depends on your current decision.

I took a closer look at each framework and summarized the points below.


Ionic was initially built on top of the Cordova project. Ionic lets developers build hybrid cross-platform applications using web technologies. Ionic’s internal architecture is somewhat similar to the Electron project. In other words, the entire GUI structure of the application will render inside a webview. It offers a set of plugins to handle native operations such as taking a photo and writing a file.

Ionic is great for small-scale mobile apps that need a quick delivery. If your company already has frontend engineers, there is no need to hire an additional team for your Ionic mobile app. In other words, Ionic is a wise choice for somewhat low-budget fixed-bid mobile applications. However, it is not working well for large-scale applications because it is based on a webview.

React Native

React Native lets developers make cross-platform applications with the mobile operating system’s native GUI elements. It handles native features very similar to Ionic, but it doesn’t use a webview. All native operations are going through a JavaScript engine that will communicate with native plugins. The great thing is that we can develop a React-style interface with the help of React Native FlexBox.

React Native is great if your conceptual application has a lot of dynamic content. For example, think about an application that has a news feed where users can like and comment. It is obviously great for medium-scale mobile applications with above-average development budgets. React Native could be a smart choice for apps that have a complex user interface. But, it is indeed not a wise choice if your application performs a lot of native features because native operations are handled through a JavaScript bridge.


Flutter is Google’s answer for the React Native project. It has its own graphic library for rending its own native GUI elements. It comes with its own widgets toolkit. Therefore, everything you build using the widgets toolkit will look the same on any operating system. But, Flutter gives us the freedom to use Android/iOs-style widgets as well. There are Dart library APIs for native operations.

Flutter is a good option if you are planning to have the same look-and-feel on different operating systems. The budget of the mobile application should be on a higher-margin because Flutter has a fresh ecosystem. In other words, companies may need to hire Dart developers for the Flutter application development projects. Flutter is a good selection for large-scale mobile applications. It is also great for mobile applications that have above-average native features because Flutter’s native operations never communicate via a JavaScript bridge. For example, Flutter communicates with Android API with the help of Java’s ByteBuffer class.


Xamarin is a native cross-platform mobile application development framework that lets you build apps with C#. Xamarin includes the Mono runtime into the native applications built with it. Therefore, we have a chance to use .NET libraries with Xamarin. It has C# bindings for native operating system SDKs. Besides, it offers some generic APIs for platform-specific native APIs. The Xamarin.Forms add-on offers a platform-independent approach to build native interfaces.

Xamarin is a good selection if your company has a C#-based environment. Importantly, you cannot do so many things with Xamarin.Forms because it is limited. Therefore, if your company has a C#-based large project and if you would like to try a mobile application with minimum effort, Xamarin is a smart choice. If your business is entirely based on your future mobile app, it’s better to say no to Xamarin.

No framework

No framework is obviously great as an optimal framework. When there is no broker, everything is beautiful. Similarly, if you are using the operating system SDK, you have more freedom to do whatever you like to do. If there is a new native API, and you are using a framework, you have to wait until someone makes a generic plugin. But, if there is no framework, you can directly use the latest SDK to use the newly released feature. Further, plugins may contain hidden bugs and performance issues. Therefore, if we find such a problem, you usually have to wait until the maintainers fix the specific bug.

If you have a higher budget and your conceptual application has a lot of native features, native system SDK could be the best selection. If the mobile application is a simple one, Xamarin is a possible alternative for this no-framework approach. Therefore, we can use one programming language to access both Android and iOS APIs. Moreover, we can improve the manageability of the source code with a shared platform-independent code.


As mentioned above, there are a couple of factors to be considered before selecting a framework. The generic decision factors are project-scale, the number of native features, UI complexity, allocated budget, and delivery time. Additionally, we should think about community support. For example, Flutter and Dart have better community support than Xamarin. In fact, the no-framework approach is so underrated nowadays. Developers often blame for the performance issues of the selected framework because they initially made a wrong decision. Therefore, choose a framework carefully.

Geek Culture

Proud to geek out.

Sign up for Geek Culture Hits

By Geek Culture

Subscribe to receive top 10 most read stories of Geek Culture — delivered straight into your inbox, once a week. Take a look.

By signing up, you will create a Medium account if you don’t already have one. Review our Privacy Policy for more information about our privacy practices.

Check your inbox
Medium sent you an email at to complete your subscription.

Shalitha Suranga

Written by

Programmer | Author of Neutralinojs and Jerverless | Technical Writer

Geek Culture

A new tech publication by Start it up (

Shalitha Suranga

Written by

Programmer | Author of Neutralinojs and Jerverless | Technical Writer

Geek Culture

A new tech publication by Start it up (

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store