As you might already know, cross-platform development helps save the time and effort when building the same app for iOS and Android (and sometimes even web and desktop).
Not only your engineers can write one instance of the code for multiple platforms and thus save time and effort, it’s also easier to maintain and update it later, keeping your apps visually and functionally uniform.
In the case of native development, you’d need at least two developers to bring your product to those platforms, and also someone to coordinate their work. With cross-platform approach, you can have only one developer (but usually companies prefer to get more engineers to speed things up).
Why Flutter, Xamarin, and React Native?
We can name around a dozen of tools for cross-platform development, so why limit them to the three above-mentioned?
Not only they are the TOP 3 most popular choices; here at the EGO mobile application development services company we regularly research and reevaluate the most promising technologies to see if they can help us stand out. That’s why you can notice we have already mentioned Flutter, Xamarin, and React Native in previous posts. And they’re still up and running!
So first let’s make a short intro about every one of them.
Let’s start with the oldest was, Xamarin. Released in 2011, it gained popularity for its high performance, though it wasn’t the best option for complex or graphically-heavy apps. Since 2016 Xamarin is owned by Microsoft.
React Native was rolled out by Facebook in 2015. Offering lost of ready-made UI components, it was positioned as a tool for even faster app development. Of course, the Facebook and Instagram apps are written in React Native. As well as Skype, Pinterest and Discord.
Flutter is a framework by Google introduced in 2017, and Google means reliability and a development ecosystem. The apps built using Flutter may be larger in size, but still those include, say the New York Times, Square, and Alibaba.
Now, let’s dive deeper into each one.
What immediately helps figure out Xamarin works well for businesses is the companies using it. Those are UPS, BBC Good Food, The World Bank, and many other respectable entities.
Although React Native is more talked-about, Xamarin executes the code faster, have a smoother UI and it’s more advanced version Xamarin.Forms allows compiling iOS code on Windows (via the Hot Restart feature). So no wonder there are engineers volunteering to be Xamarin ambassadors. Like us – a couple of years ago we had a blogpost titled 7 Reasons to Choose Xamarin for Cross-Platform Development.
However, Xamarin requires previous experience. Small community support might leave your developers alone with various coding challenges, though Microsoft’s documentation is always at the top. And since Xamarin is not as popular as Flutter or React Native, finding such experienced developers might be challenging.
Also, since Xamarin owned by a tech giant Microsoft, updates don’t come up fast, so you’ll be unable to immediately utilize the new features of the upcoming Android or iOS update.
Still, the look-and-feel of Xamarin apps is close to native. You won’t be able to make the UI look perfectly natively with Xamarin.Forms, but you can always add a platform-specific code for each platform’s version to achieve native UI.
Speaking of UIs, Xamarin.Forms will be merged with .NET into Multi-Platform App UI in November 2021, so you might want to research and include necessary plans in you 2021 roadmaps.
EGO and Xamarin
The EGO iOS and Android mobile app development company has become a Xamarin authorized partner in May 2014. Since then, we’ve been taking part in Microsoft’s educational hackathons as mentors and have been using it in numerous projects:
- An iOS and Android app for EHR & practice management software done from the ground (CentralReach)
- An iOS and Android password management app done with C# and Xamarin.Forms (eyeSafe)
- A cross-platform app showing traffic disruption and danger zones on the Switzerland roads (Traffic Live)
- First Android, then iOS app allowing users to capture TV content and create media walls (TVTAG)
- A B2B app to track employee location (Smart Tracker)
We’ve been covering pros and cons of React Native in the blog post named Xamarin vs React Native: 2018 Comparison Guide. The tool was also covered well in the What is The Best Framework for Mobile App Development in 2019? post.
Instead of repeating the basics, let’s review what has changed since then and see if React Native is still so attractive.
The tool remains actively developed. New versions of the tool are released every few weeks, and now, at the end of 2020, we have the version 0.63.4 just introduced, as well as the 0.64 release candidate version. The changelog shows the community around React Native will keep it up-to-date with mobile OS updates and fixes critical issues in 2021.
As a result of such support, you can often find reports that React Native-based apps are almost identical in performance and look and feel with native apps. Also, libraries with this tool extend your possibilities and allow you, for instance, deploy your code as a web app as well.
On the other side, in most cases the developer will need to rely on third-party libraries to avoid inventing the wheel, and often those components are far from perfect and require additional improvement.
In general, we’d say React Native goes well for apps that visually heavy and require active user input, and might not be the best choice for performance-demanding apps. However, AirBnb, Salesforce and Walmart might disagree with us.
EGO and React Native
One of the most prominent projects we as an Android and iOS mobile app development company have delivered in React Native was this gamified app helping people get prepare for the driving practice test. You can find the client’s review here and we’ll soon update this post with a link to the full-fledged case study.
Flutter was also described well in the above-mentioned blogpost.
The main reason it stands out among alternatives is its approach to the user interface development. The app you create in Flutter will look the same on any platform. That’s because of the Skia graphic engine. Moreover, it’s easy to both create and quickly update the UI, which with other tools is usually more cumbersome.
Another thing to notice is plugins and platform channels that help utilize OS-level features without extra hassle at the top of their potential.
Finally, there’s Flutter for Web, allowing to deploy your app to the web as well, and Fuchsia OS, that is still under development but will allow using Flutter for IoT purposes as well.
However, since it’s the “youngest” tool of mentioned above, it has some immaturity problems, like insufficient stability and documentation issues. You will also find less features in Dart than in any other language for cross-platform development.
As good as it sounds, Skia helps make interfaces but those interfaces only imitate native elements. You’ll notice that they stay the same across different OS versions even if those versions have different system UIs.
Finally, Google has abandoned so many projects that Flutter might also once join the list.
So if talking business, Flutter has quite appealing reasons to go for, namely development speed and cost and almost-native app performance, but at the same time there are many specific risks.
EGO and Flutter
We’ve been using Flutter a lot in a project of a global automotive company. We’re building an an cross-platform app for them that will be able to collect, process, and communicate all wealth of vehicle data retrievable through its OBD-II port. For over a year four Flutter developers have been working on the project and as they are working on the next major update we see it was a correct decision to put our stake on this technology.
And do you remember that driving tests app mentioned above? After a couple of years of development we decided to migrate to Flutter to makes the apps more responsible and ready for scaling.
With such an approach we will soon become a full-fledged Flutter company. Because why not?
So What Should You Go For?
As usual, every situation is unique and it might turn out that your technical requirements will lead to a solution that will contradict to the next conclusions. Still, in general, this is how we’d put it:
- Xamarin is old but gold because it’s maintained well. It might be tricky to have everything you want with Xamarin, but eventually you’ll get it. Xamarin will fit most projects, but you’ll win more of the cross-platform approach if your project is a long run.
- React Native is great for MVPs and projects with heavy interactivity. But if you expect it to be loaded with performance-hungry features, most probably we will recommend to skip it in 2021.
- Flutter looks very promising for tech enthusiasts and should be a very careful choice for startups. However, we also noticed it as a good option if the existing tech stack no longer satisfied your needs and you’re ready to invest into migrating your project to other technologies for better scaling and faster growth.