Jan KaltounPetr NohejlDanny KijkovLinda Krestanova7 min

Is Native, React Native, Flutter or PWA Right for You?

EngineeringBusinessApr 6, 2020

EngineeringBusiness

/

Apr 6, 2020

EngineeringBusiness

4 authors

7 min read

Jan KaltounChief Technology Officer
Petr NohejlAndroid Engineering Director
Danny KijkovFrontend Platform Lead
Linda KrestanovaCommunications Manager

Share this article

Choosing the right framework for building a new app can make or break a successful release and the future of your business. In the past, engineers had little to choose from. But as the market and competition grew, so did the offer of development frameworks. That’s great news. The tricky part now is figuring out what’s best for you.

From a business perspective, there are two primary pillars on which your decision should stand: complexity and budget.

Developing a cross-platform app is usually cheaper and faster than building an app for both major mobile operating systems (Android and iOS). But it’s not that simple. In terms of complexity, non-native development comes with complex implementation of platform-specific features, limited functionality, lower performance, worse user experience and tough, sometimes impossible hardware integrations. So is it worth it? Depends on what you’re trying to do, who you’re doing it for and how much money you have to do it.

For an in-depth comparison of the most frequently used app development options — Native, React Native, Flutter and Progressive Web Applications (PWAs) — we’ve put together an overview that outlines what to consider when choosing the path best fit to your endeavor. With input from our senior Platform Leads, we compare basic and advanced features, performance and speed, long-term outcomes, cost efficiency and each option’s ecosystem. We throw in some of our top engineers’ tips as well, to share personal experiences and examples as an additional guiding light. (Based on their input, we’ve chosen to exclude the hybrid mobile app frameworks in this section, as STRV does not recommend them.)  

Native

Native is the most familiar option, as it stems back to the beginnings of mobile development. It includes two platforms with their respective programming languages: Swift (or Objective-C) for iOS and Kotlin (or Java) for Android. Most businesses invest in native mobile app development because of the many time-tested benefits it offers — which tend to outweigh those of other options.

Pros

  • Lightning-fast and responsive apps: this means the best performance that you can achieve
  • Smooth user experience: the app is created for a specific operating system
  • Top-notch UI: the user interface and app flows follow each platform’s UI standards
  • High user-to-customer conversion: thanks to the points above
  • Leverages all platform & device features: can use the latest features from day one
  • Close to the metal: can easily access and use a device’s hardware (GPS, camera, microphone, sensors, etc.)
  • Security: most reliable data protection
  • Easier maintenance: it’s easier to manage two apps in two codebases than two apps in one codebase
  • Always up-to-date: development tools are provided directly by Apple/Google

Cons

  • Higher development & maintenance cost: requires separate coding per platform
  • Operational & update-related hassle: any fixed bug or update must be submitted to the app store and the app needs to be (automatically) updated

Why & When to Use

While the initial price tag is higher than with a hybrid approach, putting in those resources saves time and money in the long run. If building a customer base and strong customer loyalty is the core goal of your business, going native is the safest bet. Users love native apps. They’re beautiful, blazing fast and they don’t suffer from the uncanny valley of UI/UX that hybrid apps typically do. For instance, an iOS app should look, feel and behave like an iOS app. If it doesn’t — as in the case of hybrid apps — users might not know what exactly is wrong, but they do notice.

Users love to use the latest and greatest features a platform offers. With native apps, you can immediately implement all functionalities made available in the latest operating system release (an advantage you often lose with hybrid apps), as well as the most up-to-date look and feel. Similarly, engineers appreciate that native development benefits from more than a decade of combined engineering experience and platform improvements. The amount of shared knowledge at your disposal is unparalleled. Whatever the issue, someone has probably faced it before — and has shared the solution.

If your business requires hardware integration, native apps are tightly connected to the underlying platform. Antennas, sensors, chips… it’s all at your disposal. And all of it is immensely powerful. Should a new sensor be released on the latest devices, for example, you’re covered.  

STRV Tip

STRV clients sometimes consider other options due to cost-saving. But ultimately, as development moves forward, engineers face obstacles that come at a cost. We’ve had multiple clients come back asking us to rewrite their multi-platform apps to native in order to provide a better user experience or to get access to device hardware. At this point, however, money has already been spent and the investment has been too high to just ditch the apps. A solution is to integrate native code into the apps, which means that those initial benefits of having one team and one language for both platforms are negated.

As for future solutions, some parts of native code can now be shared between platforms (Android and iOS). This works well with business logic or networking logic, which is usually the same on both platforms. Currently, there are two options: cross-platform Swift or Kotlin Multiplatform. This approach is becoming more and more popular and we believe it's the future of mobile development.

React Native

React Native is a cross-platform technology developed by Facebook and uses native components instead of web components as its foundation. It allows engineers to build a dual-operating system (Android and iOS) app using React and JavaScript, and aims to bridge the gap between web and mobile development.

Pros

  • Time-efficient: cross-platforms use one source code for both platforms
  • Outstanding developer experience: declarative and predictable UI, hot reloading
  • Sharable codebase: written in Node.js with web or backend
  • Lower cost: one development team suffices, which also leads to easier project management

Cons

  • Newer & less mature: always undergoing changes and improvements
  • Slower & not as high-performing: unable to utilize full capabilities of systems and devices
  • Fewer resources & experts: the community is not as widespread  

Why & When to Use

React Native is a good option for simple apps and prototypes, as it’s best if you need a quick, cost-efficient development process and aren’t toying with advanced features. Specifically, it works well for B2B apps, software used for internal processes within a company and apps mainly for filling out forms. Alternatively, it is a risky choice for apps that heavily use animations, leverage the latest operating system features or require high performance. Similarly, React Native is not a good fit for game development.

STRV Tip

The above-mentioned pros can be seen as temporary benefits only. Yes, cross-platforms use one source code for both platforms, but only until you need something more complicated — at which point you’ll need native engineers. And while the cost is initially lower, it's more than likely that you'll eventually need to support all three platforms — JS, iOS and Android. These are the reasons why we typically recommend going native.

Flutter

Flutter is a free, open-source cross-platform framework developed by Google. Like React Native, Flutter requires only one codebase for both platforms (Android and iOS).

Pros

  • Time-efficient: cross-platforms use one source code for both platforms
  • Lower cost: one development team suffices, which also leads to easier project management
  • Fast development: changes in the code can be seen right away in the app

Cons

  • Does not use native components: app design usually doesn't follow a platform's UI standards (utilizes primarily Google's Material design)
  • Newer & less mature: always undergoing changes
  • Limited community & resources:  limited number of available 3rd party libraries and community support
  • Written in Dart: Dart is not as popular and widespread as other programming languages
  • UI not updated when iOS/Android changes: does not automatically benefit from OS improvements

Why & When to Use

If you’re looking to prepare an MVP for investors as soon as possible, Flutter is a solid choice. As a new technology with nice animations and smooth UI, it’s great for simple apps and building prototypes in record time — in part thanks to good Firebase support, which also gives access to backend services for mobile applications like authentication, storage, database and hosting, all without having to maintain your own servers.  

STRV Tip

As mentioned, Flutter is a new technology, which means there are aspects that are yet to be explored. Add to this the risk of Google cutting it and there’s a sense of instability that makes us wary of using it on large, complex projects. There is clear potential, but we don’t feel that the benefits are worth the current risks.

Progressive Web Apps (PWAs)

Unlike mobile apps, a PWA is an application delivered through the web and is developed using common web technologies, like HTML, CSS and JavaScript. It works on any platform that utilizes a standards-compliant browser. Simply put, it’s an app-like web experience. And it’s constantly improving.

Pros

  • Lower cost: same content as web and no app store updates needed
  • Easier development & maintenance: one team of web engineers, one code
  • Offline browsing & quick loading: retain most of their functionality when offline
  • Market reach: easily accessible even with a poor Internet connection and reaches both iOS and Android users

Cons

  • Limited hardware integration: but gradually improving; camera, GPS, accelerometer or gyroscope are accessible
  • Limited integration with other apps: WebShare API is capable of the same system-provided share capabilities as native apps, but cannot access, for example, the contact list
  • Limited possibilities: fewer features; for example, iOS doesn’t support all PWA functionalities (like push notifications)
  • Not native: suboptimal UI and UX compared to native

Why & When to Use

For businesses that focus on text, images or video content as its primary offering (such as e-commerce, news, blogs and influencers), PWAs provide great discoverability, performance and SEO. These apps are also a good option if a part of your users lives in countries with a poor Internet connection, or if you are a startup; many startups want an iOS app first (for financial or other reasons), causing them to lose out on the Android market. With a PWA, you can reach everyone, regardless of which device they use.

STRV Tip

Something to note here is app distribution. Once your app hits an App Store, it is required to undergo the App Store’s review process — which typically takes one day. This applies to native apps, react native apps, flutter apps, etc., but does not apply to PWAs, as they’re basically websites with an icon on your phone’s home screen. This can be seen as a vice because users cannot find your app in the App Store (although PWAs can now be offered through Google Play Store), which makes reaching a wider audience difficult. However, if your business touches on a topic or service that the App Store limits (such as vaping), PWAs are a great choice.

There are, of course, other options of distribution — such as Enterprise distribution on iOS or APK distribution on Android. And there is also another development approach worth mentioning here: WebAssembly, which is currently on the rise. By using native languages, WebAssembly allows web applications to run at near-native speed, letting engineers develop games, VR/AR or music apps. It’s good to consider all options, weigh your priorities and only then make a choice.

Share this article



Sign up to our newsletter

Monthly updates, real stuff, our views. No BS.