10. Jan 2023Business

Native vs. cross-platform: How to choose the right way for mobile app development?

In the world of mobile applications, there is an "eternal" debate about the ideal development method, and we often get this question from our clients as well. In this article, you will learn the advantages and disadvantages of individual development options, technical and non-technical arguments from the perspective of our developers who have experience with Kotlin, Swift and Flutter languages.

What are the options?

Native development

Native applications are developed for a specific platform , for example iOS or Android. The programming language used to create these applications is compatible with the operating system. By using platform-specific languages, developers can take better advantage of the platform's native features. So an app made for Android won't work on Apple devices.

  • 🤖 Android: Kotlin, Java. 
    Development environment: Android Studio
  • 🍏 iOS: Swift, Objective-C. 
    Development environment : Xcode

Cross-platform

The cross-platform approach to mobile application development allows you to create a single application that works equally well on multiple operating systems . This means you don't have to create separate versions for each individual platform.

  • Cross-platform: Ionic, React Native, Flutter, Xamarin, Cordova

Why do we prefer native development?

We have been dedicated to native development since the very beginning, during that time we have encountered many implementations of native libraries, work with augmented reality, camera, video, Bluetooth, NFC scanners, security, widgets and many other options offered by iOS and Android platforms. Our expertise in native development is therefore not only at the level of programming languages, but also the integration of third-party hardware and software.

Almost all well-known and popular applications used by a large number of users are built on native technologies. From the point of view of the business model, the "durability" of technologies is important. Cross-platform technologies such as Flutter change extremely dynamically, while React native or some third-party libraries are stagnant, which can lead to incompatibilities when building an application. All these factors can lead to various problems such as development delays, unavailability of developers or use of outdated technologies.

However, we realize that in some business cases cross-platform development can be the right way, it is important to decide based on the key parameters resulting from your business strategy . That is why we have prepared the key areas of design and development, including the benefits and risks of individual forms of development.

What parameters to consider when choosing an approach to creating a mobile application?

UX & UI – Native

Users are looking for apps that look and feel like they belong on their device. Native iOS and Android apps are built using UI components that users are used to from other native apps, creating a natural yet exceptional user experience.

On the other hand, with some cross-platform applications, navigation can be difficult because elements often overlap and violate guidelines, cross-platform applications also lack a native look and feel, which limits the UX elements of the application . However, this mainly depends on the technology used, React Native uses native components, so UI/UX guidelines should not be a problem. In this case, Flutter has additional libraries whose support is questionable. Flutter enforces a uniform UI across platforms, so it is suitable for applications with very non-standard (non-business) UI.

At the same time, cross-platform applications do not currently support all Accessibility elements. During development and design, we have also focused on users with physical disabilities, especially visual impairments, from the beginning. Font size change or voice control cannot be implemented in this case in Flutter.

Offline mode - Draw

Going offline can be a big competitive advantage. Even if users are happy with your app, the lack of offline features may make them look for alternatives. Offline functions are important, for example, in fintech, healthcare or navigation. Both native and cross-platform applications allow working in offline mode.

Specific HW – Native

Using cross-platform development can result in limited support and increases the likelihood of hardware-specific integration flaws. Every library, application or hardware has support for native development first and foremost. Which helps ensure seamless integration of the new product into the existing infrastructure.

Application performance and speed - Native

Native iOS apps work with RAM much more efficiently, making apps more responsive. From a technical point of view, Flutter uses a Garbage collector and the entire development for iOS is based on automatic reference counting (ARC), which is much more efficient when working with memory, thanks to which native iOS applications use 1/3 of the RAM compared to Flutter. The need for an additional abstraction layer and rendering process makes a cross-platform application slower.

The problem is primarily with all frameworks that use bridge* or run completely in WebView* (Ionic, Cordova). Applications that use to communicate with bridge platforms have an automatically assigned bottleneck* , which is extremely sensitive in many cases. At the same time, they use native components, so libraries in these frameworks can easily have different versions of native libraries, causing huge conflicts in the native part.

  • ‍ * bridge – a mechanism that enables communication and cooperation of different programming languages ​​or technologies. In this context, a bridge connects two different parts of an application and allows them to share data and functionality.
  • *WebView - a component used in mobile development to display a web page in an application.
  • *bottleneck – bottleneck or component that limits the speed and overall performance of the application.

The technology used also has a big impact on the size of the application itself. For iOS apps, we can talk about 1/2 the size of an app developed in Swift compared to Flutter.

Costs - Cross-platform

Cross-platform applications are a great way to reduce costs and increase efficiency, which is definitely one of the main benefits worth considering. Developing native apps can be expensive due to cross-platform development. In translation, you will need a team for each platform - for example, one for iOS and one for Android. In this case, instead of two teams of developers, you will only need one to create a Cross-platform application. ⚠️ However, this team will need to have experience developing for both platforms.

Duration of development - Cross-platform

A single development process is all it takes to create a "base" version of your app that works across multiple platforms, so you can bring your mobile app to market faster . However, it is important to mention that although the development itself is faster, testing such applications takes just as much time.

The main problem in the development and maintenance of a cross-platform application is the substitutability of people. Especially for smaller development contractors, the departure of a developer can cause a serious problem.

Scalability – Native

Applications built in a native environment are usually more scalable due to the flexibility of resource management and the number of available tools . Conversely, in cross-platform development, scaling options are significantly limited, especially when working with third-party interfaces and peripherals.

  • Push notifications - and their behavior after opening, routing to different application screens. The processing of push notifications on the device is subject to the rules of the given platform. On Android, it is necessary to solve the classification of received notifications into common groups, or the assignment of the importance of the notification. These are just examples of rules that change with new versions of Android and iOS, and when meeting these cross-platform conditions, development becomes more complicated.
  • Advertising models - the current trend on Google is to sell ads using Admob, mainly because Google is able to target ads on its platform effectively. However, the same does not apply to iOS, which in the latest versions tries to anonymize the user as much as possible and thus takes up space for targeted advertising.
  • Integration with Peripherals - From a technical point of view, there are no restrictions for native development. During cross-platform development, developers may have problems accessing smartphone functions such as microphone, camera, geolocation or Bluetooth. At the same time, native development enables working with a high frequency of frames per second when processing video or audio.

Safety - Draw

Security has long been the number one topic in the digital world, and it shouldn't be any different for app developers and businesses. Cross-platform applications are built on native frameworks, which means they are as secure as native applications , but if you are considering hybrid solutions based on web technologies ( HTML, CSS, JavaScript ), do not forget to consider this parameter carefully.

Our experience

Our team has been dedicated to native development since the very beginning. During this time, we had the opportunity to work on projects where we encountered many implementations of native libraries, work with augmented reality, camera, video, Bluetooth, NFC scanner, security, widgets and many other options offered by the iOS and Android platforms. Our expertise in native development is therefore not only at the level of programming languages, but also the integration of many third-party hardware and software.

During our practice, we encountered various cross-platform development options, which we had the opportunity to test, but unfortunately they could not replace completely native development, and therefore knowledge of native technologies was also necessary.

We also consider the already mentioned factors as essential, such as sustainability, replaceability of developers and suppliers, guaranteed support and compatibility, extensibility to other devices, better performance and scalability.

Tatra banka - Banking application of the year

The native development of the mobile application for both iOS and Android allows us to regularly bring innovations while maintaining the performance of the application, scalability and the best possible mobile experience, which is why Tatra Bank's mobile banking is considered the most innovative on the Slovak market.

Native development also allows us to easily log into the app using face and fingerprint thanks to the integration of modern biometrics from the market leader Innovatrics. The complex package of Innovatrics technologies for online authentication also includes detection and authentication of data from identity documents (ID), NIST FRVT facial biometrics or accredited iBeta Level 2 liveness detection, which is an effective part of preventing identity misuse, which is a must in the fintech sector. It goes without saying that the application can be customized not only for iOS and Android, but also for different screen sizes.

Benu - Online pharmacy innovation

The goal when creating an online mobile pharmacy for Benu was to create the simplest and most understandable user experience possible, while maintaining all the functionalities that we mapped out with the client, so it was necessary to create applications for Android and iOS platforms natively.

The main advantages of using native development in this case are higher application security, compliance with pharmaceutical legislation, better user experience and integration of native libraries. For example, the user can add a recipe via the camera, from a photo or via SMS.

So which option is ideal from the point of view of individual factors?

So on what basis to decide?

We certainly do not reject cross-platform applications, there are many situations in which it is more effective to consider these approaches, when?

When to prioritize cross-platform development?

  • You want to quickly test an idea, create an MVP and enter the market.
  • You need a cross-platform app with a limited budget.
  • You need to get your app to market as quickly as possible.
  • The application does not need complex functionalities.
  • Easier application support and maintenance thanks to a unified code base.
  • The app is not core to your business.

When do we recommend prioritizing native development?

  • Your service is based on a mobile application or is a product itself.
  • There is strong competition in your segment and every detail is an advantage.
  • The application requires high memory management and complex user interfaces.
  • The application needs native operating system functions and APIs.
  • If you need to protect data and sensitive information about your company and customers at all costs.
  • Providing a comprehensive UX is key.
  • If you need your app to work flawlessly in offline mode.
  • Your product requires faster and easier implementation of new complex feature updates.

Both languages ​​certainly have their pros and cons, but our goal is to create meaningful and responsible digital products, and that requires native platform capabilities, so we're sticking with the native language.

Maroš NovákHead of Design & Engineering

Contact us

We will be happy to help you

Still not sure which direction to take with the app? Contact us today and we'll help you figure out what's perfect for your project.