Frameworks for developing mobile applications are more and more mature. There are a lot of them on the market, but when you are going to invest in your mobile app, then you should consider their predictability. There are hybrid technologies, cross-platform frameworks, and many others that offer a rewarding experience to both — developers as well as end-users.
What mobile development trends will be top in 2020?
Before I answer this question, let’s understand how the mobile development market is divided. In general, we can divide frameworks into a few categories:
-
Native development
-
Cross-platform development
-
Hybrid development
1. Native Development
Native development means developing mobile applications in dedicated tools for iOS and Android developed by Apple and Google. It’s a standard approach that, in theory, gives the most significant control on mobile app development – you are using native development tools, so you are not limited by a hybrid or cross-platform approach.
On the other side, in this approach, you need to write code twice – once for iOS and secondly for Android. It is always time and money-consuming.
2. Cross-platform development
The first widely used framework in this approach on the market was Xamarin. The idea was simple – write as much percentage of shared code as possible. It means that you could reuse many parts of the mobile application for iOS and Android.
In a typical scenario, you could share around 80% of the code between platforms. On the other side, always for Xamarin was to achieve almost the same performance as native applications.
3. Hybrid development
The third approach is hybrid technologies. The main goal here was to allow developers to create mobile apps without more in-depth knowledge about mobile development. It is a pro because you could involve a web developer to mobile your mobile app.
From the cons, you should note that hybrid technologies have some limitations, which can have a very negative impact on your project. It emerges when your app is being bigger and bigger, and you start adding more advanced features. In my practice, I had many clients who came up with apps developed in hybrid technologies, with a request to rewrite them into cross-platform.
Before you start developing a mobile app, you always ask a question – what approach, or technology should I use?
Before I answer this question, let’s go through the most important technologies, which are top in 2020.
Xamarin
Xamarin is a very mature framework for building cross-platform mobile apps. It has excellent support for wearables and can help create native apps for Android Wear and Apple Watch. In Xamarin are two approaches to building cross-platform applications. The first is called Xamarin Native, where you can share code between platforms, but the user interface is developed separately for each platform. Thanks to this approach, it is easy to build applications where the user interface is fully customizable as in native development. The huge advantage is sharing around 70-80% of the code.
The second way is building a mobile application with Xamarin is by using Xamarin.Forms. It is a Xamarin answer to such frameworks as hybrid Cordova or React. Native. With Xamarin.Forms you can build user interfaces without knowledge of native UI development. You use standard components that are available for both platforms. It makes development more comfortable, but – as a downside in more complicated scenarios, it’s less efficient than Xamarin Native. Choosing the right approach depends mainly on how the app interface is advanced.
Key Features
-
With Xamarin you can build very big applications
-
Xamarin is owned by Microsoft and is very well integrated with the Microsoft ecosystem
-
It is one of the robust frameworks which focus on all leading mobile platforms keeping intact the quality and performance quotient
-
A lot of components and libraries available on the market
-
Excellent integration with Microsoft Azure cloud
-
Well-proven technology
Links to some examples:
Links to interesting articles:
-
Multiplatform projects Kotlin native upcoming alternative to Xamarin
-
Xamarin. forms in the eyes of a programmer with extensive experience in Xamarin. native
React Native
It is a framework owned by Facebook. The main goal for Facebook was to allow developers to develop mobile apps by using the ReactJS library. After adding some mobile-specific components, React. Native was born. It has been adopted, by the IT industry, as one of the best JavaScript libraries owing to the multifaceted ReactJS web and mobile apps that it develops. React Native is somewhere in the middle between cross-platform and hybrid development. It’s quite comparable to Xamarin.Forms by using the same controls/components between platforms. It’s a bit harder with native UI access.
Key Features
-
Using of same UI blocks as in regular iOS / Android apps
-
Seamless combination with components in Java, Swift, and Objective-C
-
Supports cross-platform development with Android / iOS
-
A quite big library of React Native components
-
Component-based assembly builds a more agile method for development
Links to some examples:
PhoneGap / Cordova / Ionic
A bunch of hybrid technologies are all based on Apache Cordova. Apache Cordova is considered one of the most efficient tools for creating mobile apps with HTML5, CSS, and JavaScript. Simple to use when you are going to build a hybrid application. As I wrote above, it’s easy to start building a hybrid app this way, but very fast, you can also meet complications and challenges. These technologies should be chosen carefully based on excellent knowledge of the final shape of the developed app.
Key Features
-
Compiles using SDK of the platform and installable on all leading platforms
-
Offers high flexibility to hybrid app developers
-
Easy way to build a simple mobile app by web developers
-
– Easy access to device hardware
Links to some examples
Flutter
Flutter is an open-source mobile application development SDK developed by Google. It is used to advance applications for Android and iOS, as well as being the leading choice for crafting applications for Google Fuchsia. Like many Google technologies, Flutter is based on the Material Design approach. Flutter uses a Dart language – which is a bit of a downside because developers need to learn it. From the second side, Dart helps a lot in Flutter development because it was one of the goals for this language to make development more comfortable and faster. The major components of Flutter include the Dart platform, Flutter engine, Foundation library, and Design-specific widgets.
Key Features
-
It incorporates a modern react-style framework, instant gadgets, and development tools.
-
It has huge support for the creation of customized interfaces with unique themes and priorities according to your needs.
-
A new feature is there known as “Hot Reload.” Using this tool, you get access to a wide range of widget sets along with working on the dynamic interface with ease.
-
Supported by Google, it is lightweight and supports cross-platform mobile app development
-
End users get a look and feel like most of the Google products they use
Native development
It’s always an option. You can use proven technologies and frameworks for building fully native apps for iOS and Android. The most significant and foremost advantage is that you use tools and techniques developed and recommended by Apple and Google. In theory, native applications have the best performance and security, and you have access to everything that each platform is offering.
From downsides – the main one is that you need two teams of developers who need to work separately on the application for each platform. Additionally, you need to manage both teams and synchronize their work as well. It might be a huge challenge, and this is why all cross-platform hybrid technologies appeared on the market. Even if Google proposes its answer to this challenge (mentioned Flutter), it means that the problem exists.
In some rare cases, native development is the right answer – especially when you dig deeply into hardware, security, etc. But 90% of apps on the market can be developed much faster and cheaper with cross-platform and hybrid technologies.
How about other frameworks and technologies?
The frameworks mentioned above are not the only way to develop mobile applications. There are more of them on the market, but there are not as popular as those described here.
Very important is not to start development with frameworks that are not popular or don’t have excellent support from companies or communities behind them. It might be a risk for you if you plan the lifecycle of your mobile application longer than 1-2 years.
What technology should you use?
Of course, the correct answer is – it depends. First of all, the main criterion should be what the application is for, and whether there may be requirements that will impede or prevent its implementation in a given technology.
Another essential criterion is the availability of a development team that has experience in a given technology. If I had to choose, I would prefer an experienced team in technology that offers fewer opportunities than a team that carries out a complex project in a technology that they do not know. It is important because, in addition to technology, elements such as:
-
appropriate application architecture
-
quality of created code
-
testing process automation
-
appropriate project documentation
Have a huge impact on your final success.
You can read more about the significant challenges in software development here:
Challenges you may face when you develop a software product