Ilya Dudkin 18/12/2018 #Popular #Tips 8 min readThe term cross-platform development has received a bad reputation recently since there really were no technologies that could handle the job and even those who said that they could do it all, still came with a severe restriction on the developers. With all of these problems, it was not possible to justify cross-platform development, yet people continued to stick with it, and they use three main technologies: Xamarin, React Native and Flutter. Before we get into comparing the three to determine the benefits and disadvantages, let’s first take a look at why someone would choose something like this in the first place.Why Choose Cross-platform DevelopmentThere are four big advantages of cross-platform development: Optimized development – It is possible to share pretty much all your code across various platforms which means a significantly less development time because you only need to develop one single app and the code is shared between the operating systems allowing you to make specific adjustments.It saves money – Since you require fewer developers for less working hours, you save a lot of money and for many startups, this is a crucial factor.Only one team is required – There is no need to hire two distinct teams for iOS and Android mobile apps development respectively.Easier testing process – Since your code base is smaller, you do not need a lot of testing and you can use the time you save on testing to focus more on each individual element of the application.Now that we see all the wonderful things that cross-platform development has to offer, let’s compare the main technologies that are used: Xamarin, React Native, Flutter.Flutter vs React NativeFlutter was created and is serviced by Google and it uses Dart along with an array of other native widgets to create amazing cross platforms apps.By using Dart, there is no need to relay between the native platform and the app with the aid of a JavaScript connector. While this is helpful for creating complex apps, it does take a toll in terms of the app itself. With average Flutter app taking up 4.7 MB, the enormous size of the app makes it a unique identifier of the Flutter framework.We can contrast this with React Native which looks almost identical to native apps thanks to its native UI. In order to create the user interface, all the developers have to do is outline step by step process where they describe how everything works and they need to stick to this process verbatim.The JavaScript connector mentioned above is a significant drawback since it will negatively affect performance because all user interactions must be relayed to the native platform and of course, the more interactions, the more information needs to be relayed back and forth. This could really hinder performance affecting things like startup time even on the most advanced devices because the connector itself needs time to begin working.Unlike Flutter, you should not use it to yield complex applications the likes of which require multiple screens user and advanced animations. While it is true that each platform has its own limitations, with React Native, you may be requiring taking on people who have specific insider knowledge about working with React Native, because otherwise, you will not be able to cope with all the problems in-house. This factor could frighten a lot of project managers and developers because there are good chances that the project will be over budget if you will need to hire additional help.Flutter vs XamarinXamarin offers a lot of features to developers including many APIs to choose from, authentication methods runtime engines and other useful services and features. It is a combination of C# and native platform libraries all rolled into a .NET layer and it gives developers an automated testing platform to verify the functionality of your app and identify any errors or malfunctions inside the app.Xamarin uses C#, which automatically separates it from the other frameworks on our list. It offers an abundance of APIs which makes it easy to integrate with other hardware components, thus providing a better user experience. Another interesting feature of Xamarin is that it allows apps to be available offline since this was something that only native apps could do. If you were looking to compare Xamarin vs Native performance, it is very much comparable to native apps, which is another feather in the cap of Xamarin.All in all, when considering which framework is right for you, the first thing you should do is clearly define the capabilities that you want your app to have and the personnel that you currently have in-house. Each of these frameworks has their own benefits, but it has to sacrifice something to achieve it. This is where you have to weigh everything and determine what you are willing to give up and is simply non-negotiable. If you are building a complex app, then it most likely will have a lot of features that will need to be supported without compromising performance, therefore you should plan for this accordingly. It does not matter which of the technologies mentioned above you choose because with each one you will optimize your development cycle and less testing which all adds up to increased savings and if you are on a tight budget, cross-platform development is something you should consider.