Choosing the right technology for your mobile app is a key decision that will determine the success of your endeavour. When planning a cross-platform mobile app, you need to make sure that the underlying tech ensures stable performance and adequate user-friendliness. On top of that, it must enable you to create a beautiful, memorable UI.
Naturally, you have to choose a technology before you start building anything – your selection will influence the entire mobile app development process, and making the wrong choice carries the risk of a very expensive rework. We have years of experience in building cross-platform mobile apps, and we’d like to share our knowledge with you to help you make the right decision.
We also came up with a list of 9 key questions you should ask yourself before starting a project – you can find them at the end of this article.
Before we get to our tips, let’s go over the methodology we used to create this article first. At the outset, we spoke to our internal experts – people with years of experience in managing and building cross-platform mobile projects. Then, we researched the market penetration of each cross-platform framework. This parameter is a good indicator of how easy it is to find developers familiar with a framework. Next, we tallied up the strengths and weaknesses of each framework to provide you with clear input for your decision. Finally, we came up with our recommendation on when to use which technology.
We have selected seven cross-platform mobile app frameworks for our comparison:
We’ll go over each one of them in the following sections, finishing the article with a summary and our recommendations.
Pros and cons of React Native. Source: Netguru.
React Native is a good choice if:
You’re building a complicated application or a CRUD (create, read, update, delete) app.
Have a medium budget/medium deadline.
Have a lot of business logic to implement.
Need integrations with native functions.
Your mobile app will have a complicated layout but doesn’t have to be pixel-perfect.
Examples of successful RN apps include Facebook, Shine, and Uber Eats. We looked into these in more detail in this article. React Native is not a good choice if you’re planning a low-level, computation-heavy app (for instance, an application that does a lot of visual processing). For more about the pros and cons of React Native, check out this piece.
Flutter is a mobile cross-platform development framework released by Google in 2018. It’s based on the purpose-built Dart programming language (thankfully, it’s very easy to learn), which is then compiled to platform-native code. It’s faster and more efficient than React Native because it communicates with the platform directly (RN requires a JS bridge). Flutter apps are built from so-called widgets, which results in improved compatibility with older system versions. Another beneficial feature is that you can integrate native code with your cross-platform mobile app. However, Flutter has one major disadvantage – its age. It’s very new, so the community is quite small and there are few libraries available.
For simple CRUD apps with uncomplicated logic.
When you have a medium timeline and an average budget.
When integration with native functions may be required.
When you need more advanced layouts.
When you care about your app having a “native feel”.
When performance is important.
Flutter is a quite new mobile app development technology but many companies already invested in it creating some amazing apps. The list includes e-commerce giant Alibaba with their mobile app for second-hand sales: Xianyu; app for one of the most famous Broadway musicals Hamilton or legendary recording studio where the Beatles recorded almost all of their albums: Abbey Road Studios.
UPDATE: check out our brand new R&D case study of Lunching - a food delivery app built with Flutter. Click here for more.
The latest take on #Flutter by our R&D team is rather tasty!— Netguru (@netguru) June 28, 2019
We took some inspiration from top food delivery apps like @UberEats, @DoorDash, @deliveryherocom and https://t.co/far83einNz to build a simple MVP with Flutter. See our #Lunching #casestudy: https://t.co/PfvcRv8ATo pic.twitter.com/GQLPIMnMul
You can pick Xamarin for any project where you would use React Native – just keep in mind that it uses C# rather than JS.
It’s less popular than React Native and is about as popular as Ionic.
Projects are easier to maintain thanks to C# conventions.
Platform-bound features come to Xamarin more quickly than to React Native.
PWAs, or Progressive Web Apps, are not a framework per se, but they are still a valid approach to building cross-platform mobile experiences. PWAs are, in a nutshell, websites adapted to mobile devices. They feel more native than simple websites – for instance, you can add them to the device’s home screen, including a custom icon, or implement push notifications. PWAs can also work offline. However, these are best suited to very simple (basically read-only) apps. Remember that PWA apps can’t be deployed to the Apple App Store.
For very simple applications that download some data and display it to the user.
When you’re on a tight budget or have a very short deadline.
When there’s very little logic planned.
When the app can, but doesn’t have to, work offline.
When there is no need to integrate with native features.
PWA is a very promising technology that slowly gets traction on the market. Quite recently Google allowed PWA apps to be deployed in Play Store and finally can be downloaded by users. Some big brands like Starbucks are using them and we’ve also done some R&D using Vue.js and PWA.
Ionic’s open source SDK was first released in 2013; the original version was based on AngularJS and Apache Cordova. This is by far the slowest solution on this list – apps built in Ionic work inside WebView, introducing a significant performance overhead. Other downsides include significant difficulties with integrating native modules and difficult debugging. On the other hand, there are a lot of UI components and plugins available for Ionic.
For simple CRUD apps with uncomplicated logic.
When you have a small budget and/or a short deadline.
When you don’t really need native integrations.
When the planned layout is very simple.
When you don’t need a “native feel”.
When performance is not key.
Although Ionic doesn’t have a big market share there are some cool apps leveraging this technology. One of the biggest is MarketWatch done by Dow Jones & Company, Inc and one of my favorites is Joule: Sous Vide by ChefSteps.
We recommend that you don’t.
PhoneGap was initially released in 2009; after being acquired by Adobe in 2011, its name was changed to Apache Cordova. Like Ionic, it doesn’t use native UI components, so everything is mediated through WebView. There are no native-feeling UI widgets for PhoneGap and plugins are required to access native APIs. In addition, PhoneGap’s performance is very poor, leading to sluggish apps.
Never, unless you really have to.
First, you can eliminate NativeScript and PhoneGap from your list of options. We don’t recommend building any new projects using these technologies. This leaves you with five cross-platform mobile app development frameworks to choose from: React Native, Xamarin, Flutter, Ionic, and PWA. What should you consider when picking one from this list? It’s a good idea to ask yourself the following questions before making a decision:
Is the idea ready and you can develop it, or do you need to validate it (prototype, MVP) first?
Are you going to use platform-specific features (for example, Apple’s FaceID)? Are you going to integrate with the hardware (camera, GPS, and so on)?
Deadline: how much time do you have?
What’s your budget? How many developers do you have?
UI: does it need to be pixel perfect? Do you need to implement things like complicated animations or fancy transitions?
Is there any complicated logic to implement? Is it a simple CRUD app? Does the app just download and display data?
Do you care for very high efficiency and performance?
Should the application work offline?
Is the ease of maintaining and developing the app important?
Think carefully about your answers and cross-reference them with each framework’s strengths and weaknesses to make the correct decision. If you’re still in doubt, feel free to reach out – our in-house experts are always happy to advise you about cross-platform mobile app development.