Сross Platform Development: Xamarin vs React Native vs PWA

July 26, 2019
#CrossPlatform #SoftwareDevelopment #PWA

Does a truly cross-platform development even exist? Having your app work anywhere and everywhere sounds amazing but is it feasible?

Not long ago it was thought to be a pipe dream. An app working seamlessly well regardless of the device it’s on sounded too good to be true. While being technically possible for several years, it has caused many headaches for the developers. So, is cross-platform development a viable practice or just a failed experiment? Before rushing with an answer, let’s look into three completely different approaches to this practice. After all, technology isn’t stagnant in the slightest.

What is Cross-Platform Development?

Cross-platform development is a branch of software development that focuses on the creation of applications that work the same way across different platforms. You can launch them from any smartphone or desktop regardless of the operating system. The program can be considered cross-platform if it runs of as few as two platforms or as many as all of them. Needless to say, when clients order software development they understandably want as many supported platforms as possible.

This is the reason why many developers are to this day very skeptical about the practice. Such apps do indeed have their drawbacks. The capabilities of these applications can be limited. Features and design elements are also often sacrificed to maintain cross-platform implementation.

Despite that, this type of software is more popular than ever before. The reasons for that include not having to pay for each version of the app multiple times, availability from any device at any time, stability, easy maintenance, and integration, among many other benefits.


Out of all approaches, this one resembles native development the most. The logic is coded on the object-oriented language C#, while the UI is written on XAML. It’s handy when you need to create an application quickly and a flashy user interface is not the main priority. It has all the capabilities of .NET Core, but the substantial advantages of this tool stop there. Xamarin used to have so much potential that Microsoft bought it. Despite that, the support didn’t improve in the slightest. The drawbacks that were there at launch are still there to this day. And there are plenty of them:

  • Small community. If you bump into problems, finding a fix can be extremely difficult and take up a lot of time.
  • A small number of libraries. Even those that are available are updated sporadically and infrequently.
  • No UI consistency. The same interface elements don’t look the same not only on different platforms but even on different Android versions.
  • Incompatible with complex UI. The rendering processes are way too long and design lacks flexibility.
  • Big application size. This doesn’t help the ever-growing app fatigue but more on that later.
  • Stability problems. Constant bugs and crashes. That combined with a poor support community results in an often frustrating coding experience.

Use Xamarin when:

  • You need a simple app with a “client-server” infrastructure.
  • Additional libraries aren’t needed.
  • UI is not important.
  • There are no resource-heavy processes.

Avoid it when:

  • There are many styles and layouts.
  • UI has to be specific.
  • UI has to remain consistent across the board.

Book a free consultation and we’ll help you make the best choice for your business.

React Native and Expo

React Native is a truly native JavaScript framework. While others such as Apache Cordova, for example, just convert the app into WebView, this approach uses the operating system of the device.

It has a sizable community and various libraries that can be used to write UI elements among many other things. It is structurally similar to React.JS, which means that the learning barrier is quite low and web-developers can work on it.

Expo makes it even easier to use this service. It’s an SDK (software development kit) that comes pre-packaged with everything you may need during mobile development (features like notifications, near-field communication, and such). The platform of the end-user doesn’t even have to be taken into account since everything is implemented on their servers.  

Expo also provides a separate debugging tool: Expo Client. It’s installed on smartphones and works without connecting to a computer at all. It’s also done with the help of their servers. In addition, Expo Client can be used to conveniently look through demos of various libraries. You just need to scan the QR code, as demonstrated on this website

The only important drawback is its incompatibility with native components. As a result, libraries written in native languages can’t be used. But if this isn’t an issue, it’’s a great choice with Expo helping you develop a client application even quicker.

Progressive Web Apps

Progressive Web Apps (PWA) is a comparatively new technology that is currently on the meteoric rise in popularity. Even though the development is not mobile per se, the result you get is equivalent if not better than a mobile app. You can upload it to a store if need be, but it also works directly from the browser. In essence, it is a complex website that can work offline. It’s implemented with the help of a Service Worker. It’s a JavaScript code that works in the background and does the caching, while also handling such features as the updates and notifications.

You can check out all the capabilities of PWAs on whatwebcando.today. However, the feature list on iOS is not yet fully implemented, since Safari has fewer features than Chrome. It’s getting there though. Using Lighthouse during development is also highly recommended. This extension analyzes a website and lets you know it is a PWA, pointing out any missing features if not.

If the feature list and UI/UX of the mobile version of the website suit your needs, it can easily be converted into a PWA Software-as-a-Service. In addition to an application that is ready to be uploaded to the market, you will also get desktop versions for Mac, Windows, and Linux.

Statistics also back up this approach. This is especially relevant if you are planning on releasing your app to the public and not just use it for internal processes in your company. The crucial stat that deserves your attention is the app fatigue rate. It has been dropping for a long while now. People are tired of installing new apps, with the vast majority using the same five and not downloading anything new. Since PWA doesn’t require installation you can get way more eyes on your product. If its SEO is optimized, then it can be found through search engines as well.

Rounding Things Up

Cross-platform development is a peculiar case. There was a time when it was if not impossible then extremely tricky. However, when it comes to software development it’s only a matter of time before new solutions come along and better tools are created. What once was dismissed entirely now has a variety of valid options. As you’ve seen for yourself, some of them are more suited for certain goals than the others. However, this shows that the creation of cross-platform apps is a viable sector of the software development industry.