Hybrid mobile apps in 2018: React Native vs Xamarin
Kamil PłaczekFull-Stack JS Developer
Tomasz MrózNew Business Manager
If you’re just starting out with hybrid mobile apps, you might feel a bit lost. Online definitions can be ambiguous and guides will often lack updated information. That’s why, in this article, we’ll do our best to help you understand what hybrid mobile apps are, and what solutions are worth your attention in mid-2018.
So, you’ve decided to build a mobile application. You’ve done some research and contacted dozens of companies that specialize in creating native apps. Then, you got dozens of estimates with random numbers on them.
Unsatisfied with the results, you shifted your attention to non-native solutions. But, a couple of weeks later, after hours spent online, you don’t feel any wiser. Words like “hybrid”, “cross-platform” and “a mobile web app” are swirling around in your head. Most of the articles promised the earth, but they quite often present contradictory theories, which exacerbates the situation and makes you chase your own tail.
In order to learn the basics of hybrid mobile app development, let’s start at the very beginning.
By definition, cross-platform software works with many platforms. This can be a single code base running on various OS with no special preparations (like Java). It might also be the same app – with the same business logic, the same branding etc. – but written as two separate native apps, one for iOS and one for Android. All in all, “cross-platform” is a very ambiguous term.
Hybrid mobile apps (or simply, “hybrids”) are a subset of cross-platform software, and they have no clear definition.
Traditional hybrids are web applications wrapped in a sort of a native container.
Developers build a kind of a single-page website, make it mobile-friendly, and put it into that container. Finally, they connect it to some smartphone/tablet hardware. Voila! A web app pretending to be a mobile one is born, with one code for every platform. The container (the wrapping) comes with a framework of choice (such as Apache Cordova, Ionic, etc.).
Frameworks and languages
Here are the available hybrid app development tools:
Xamarin is a set of tools (framework) in which developers code using C# and .NET
What’s on the market
Business-wise, software must work, as well as be user-friendly and future-proof. Technology plays a second role. However, some technology choices have business consequences. Below, we’ve listed a couple of major decisions you can make when it comes to hybrid mobile apps.
Websites & progressive web apps (PWA)
Today’s websites are no longer just static content with a bunch of forms and links. Contemporary web apps compete with desktop and mobile software in fields of UX and functionality. And yet, not everything works the same way on a mobile phone. When it comes to working in the background, Bluetooth, battery information or iOS FaceID, web apps are a no-go.
A progressive web app (PWA) is a new concept which, to some extent, combines web and native approaches. It’s a web application that can work offline to some degree, with an icon visible on the home screen. Its limitations, however, stay the same. The app’s behaviour and capabilities depend heavily on the platform. It’s an interesting concept that can evolve and improve, but, first, it needs time to mature (iOS has just started supporting PWAs as of version 11.3).
You need to remember that PWA is nothing more but a website with push notifications pretending to be a mobile app (source: easternpeak.com)
Traditional (web) hybrids
For years, traditional hybrids have been the first choice for a quick MVP or very simple products. There are many tools to choose from: the most popular Apache Cordova, its cousin PhoneGap, Angular-based Ionic, and more. The pros of this approach are: a single code base plus a lower cost of development and maintenance. What’s more, such a product can have a web version out of the box. The cons are less obvious and not everybody talks about them point-blank.
But, the truth is, you can’t 100% mimic native apps with traditional hybrid mobile apps, no matter what their creators say.
You’ll experience worse performance, inferior UX, and a narrow set of ready-to-use features to implement. There will be myriads of little things working noticeably strange or slower. Even if you’re not able to put your finger on it, the app will always seem a bit off.
Fortunately, the supremacy of traditional hybrids has ended, as the recent months brought us superior alternatives. At least, that’s what we think.
With Xamarin, you can build native apps for many platforms. It allows C# and .NET developers to create native apps for Android, iOS and Windows. There are 2 ways of doing it in Xamarin. The first one is Xamarin Forms, which creates a single code base which is shared among the platforms with almost no changes. But there’s a cost: Xamarin.Forms is good for building simple MVPs, rapid prototyping or very, very simple apps. Even Xamarin states in its documentation files:
Xamarin.Forms allows for rapid prototyping of applications that can evolve over time to complex applications.
So, using Xamarin.Forms for more demanding projects might be difficult.
For complex hybrid mobile app development, there’s the Xamarin Native approach. Using Xamarin Native, you get the look and feel of a native app, plus you can work with only one technology (C# and .NET). It means you can have just one team of developers to pay. Drawbacks? There’s no longer a single code base, so you end up with two separate projects to create and maintain – one for each platform. Only portions of the code base can be shared (like business logic or communication services). UI implementations must remain separate.
If you have .NET developers, Xamarin Native is a great tool as you can assign available resources to mobile development. It’ll also work on Windows, perform well and provide good users experience. In conclusion, it’s better than traditional hybrids. So what’s the cost? Time. Mobile apps created with Xamarin Native will take more time to develop compared to a traditional.
This results in a better user experience and the feeling of a native app. Hybrid mobile apps made with RN run more smoothly, and the user is quite often unable to tell the difference (unlike with traditional hybrids).
Disadvantages? Some platform-specific functionalities might be difficult to achieve. Not everything available for native apps is provided off-the-shelf by RN. On the other hand, developers can add a piece of native code for missing extensions, or use one of the thousands built by the RN community. RN is used even by big players, like Microsoft or Wix, which contributes to the community’s impressive size.
In the end, RN hybrid mobile apps can’t compete with native ones in some aspects. But, usually, the final effect is more than satisfactory. The framework is a huge improvement over traditional hybrids in terms of both user experience and performance. At The Software House, we believe that it offers good value for money.
If you have a team of JS developers who are experienced with Angular, NativeScript is definitely something to consider. Just keep in mind that, as for now, it has a significantly smaller community in comparison with RN. This equals fewer ready-to-use plugins and libraries.
Xamarin Vs. React Native
With NativeScript yet to grow and mobile web apps lagging behind, in August 2018, Xamarin and React Native seem to be the main players in the field of hybrid mobile app development. At least, that’s what we think. Let us now compare those two.
A comparison of React Native and Xamarin web searches from the last 30 months. As you can see, React Native took the lead approximately 1 year ago (source: Google Trends).
There’s one code base in RN, fully shared between platforms. As a result, there’s rarely any platform- specific code needed. This generates certain limitations, but, at the same time, significantly reduces the development time and cost. To achieve a more native approach, Xamarin developers share only portions of their code. UI is built separately for each platform. This generates a more native feel of the Xamarin UI, but also results in longer development.
Right now, RN supports iOS and Android, covering more than 90% of mobile devices in the world. Xamarin supports both iOS and Android, plus Universal Windows Platform and macOS. Choose Xamarin if these platforms are critical to your business.
App updates and bug fixes
RN executes JS code during runtime. It means that you can improve your app and fix bugs without updating the app in the store – some clients may not even notice the updates happening. Xamarin precompiles the code for each platform during the build, therefore, no dynamic updates are possible. When you want to introduce bug fixes, you’ll have to update the app in the store every time.
RN is suitable for:
Apps requiring few platform-specific functionalities and component o Apps that are not too complex and don’t require native UI
Rewriting your old traditional hybrid
Apps with a lot of custom design, but with native UX
Xamarin is the way to go when:
You or your affiliated company has a team of .NET developers
Access to complex, platform-specific functionalities is needed
You need to use native components for each platform, making the UI indistinguishable from the traditional native app UI
You target the Windows platform
When it comes to hybrid mobile app development, everybody praises their own technology – keep that in mind. What’s more, when you’re searching for more information, you should always look at the timestamp – in the mobile world, a few months is like a century, so a two-year-old article might misinform you a lot.
There are various cross-platform technologies on the market, but few of them are both mature and future-proof. Traditional hybrids are out of the picture – they’re already past their prime. In contrast, both Xamarin and React Native present powerful means of building hybrid mobile apps. At The Software House, we use React Native, as we have a strong React team. Ultimately, the choice depends on your preferred resources and the business purpose of the app. So, finally, when looking for a team to develop your cross-platform app, just keep in mind these few points present above and you’ll be fine.
Tomasz MrózNew Business Manager
With 15 years of experience in IT and sales, Tomasz is just the guy when you need software consulting for your business. Now a proud father of two amazing children, he’s also got a true rockstar background – ask him about his years as a vocalist and a frontman!
In the first part of “7 reasons to use functional programming on frontend”, we’ve focused on some basics. I’ve mentioned immutability, pure functions and referential transparency. Now, it’s time to... Read more