Eugene Saturow Head of Flutter

    Flutter vs Native: What is Best for Your Project?

    Cross-platform apps remain of great interest for many businesses as native apps for iOS and Android are more expensive to develop and maintain. Besides, cross-platform development is not as complex as native and it is also an important point for business. Since 2018, Flutter’s cross-platform framework has been on the rise in many industries, including retail, fintech, and e-commerce. 

    If we are to compare native development vs Flutter, both provide high scalability and quality user experience. But creating your app with Flutter is faster, and the development process will be easier as you need fewer  developers, and it will take fewer hours of their work. 

    Surf mobile developers have practiced native technologies for more than twelve years. Since 2018, the Surf team has also made significant progress in making cross-platform apps. To assist you with decision-making, Surf experts have prepared the analysis of Flutter vs native performance. After reading this article, you will find out what business goals both Flutter and native technologies help to achieve.

    What is Flutter?

    A cross-platform framework is a set of tools that allows creating a single app suitable for both iOS and Android. At the same time, the major drawbacks of most cross-platform frameworks are UX that is not as user-friendly as native, and rather low performance. But it does not refer to Flutter.

    Flutter is a popular cross-platform framework with a single code base, operating with Dart programming language. Launched only in 2018 by Google, Flutter has proven itself a convenient toolkit, easy for creating animations and quality UI components. Despite being Google’s fresh take on cross-platform, Flutter provides smooth animations and user-friendly interface elements. With Flutter you can write high-quality apps with high performance that look like native iOS and Android apps.

    What are native technologies?

    Unlike cross-platform tools, native application development is application-specific to either Android or iOS. Native apps are coded in languages that are supported by the device’s OS vendor:

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

    As a rule, native apps do not have serious drawbacks, and their users can take full advantage of sophisticated features such as an accelerometer, camera, GPS, and others. Users can install native apps through major app stores such as Google Play and App Store.

    At the same time, the development and support of native apps require significant investments. This is because you need two different development teams for two different platforms. And they have to adjust business logic, duplicate interface logic and layout to the features of each platform. 

    With Flutter, you need  a single development team therefore the working process runs much easier and faster. Hence, the low-budget Flutter is becoming more popular.

    Flutter benefits infographics

    Flutter vs native app: Speed of development

    Flutter provides developers with the capacity to create a single code for two different platforms, which significantly reduces development time and cost. Flutter codes are easier to create compared to native codes. As for native technologies, developers have to write two codes for Android and iOS, which inevitably takes more time. 

    According to Surf experts, Flutter development is 20-50% faster compared to the creation of two native apps. Nevertheless, the speed also depends on the complexity of the interface and the expected functions.

    App performance

    In 2017, when Flutter was just launched by Google, it had some problems with performance and low FPS. With the technology growth, all these problems have been solved, and today Flutter provides the same performance as native apps. 

    Based on the experience of Surf teams, the CPU usage on the native app less compared to the Flutter app. On the other hand, React Native applications are even more CPU hungry.

    As for memory usage, native apps show the most efficient memory consumption. Flutter needs more memory expenses than native, while React Native shows even worse performance. 

    Code Maintenance 

    In most cases, supporting a native application is more time-consuming. First,  it takes serious efforts to maintain two codebases. Second, developers have to create different updates for each platform as well as identify bugs. Third, the maintenance efforts grow proportionally with added OS-supported devices.

    As for maintaining a Flutter app, it is much easier since there is just a single codebase for two applications. The simple code helps developers quickly detect issues, support third-party libraries, and source external tools. Besides, Flutter’s Hot Reload feature helps to immediately resolve issues in the application.

    Flutter apps are written with Dart. For three years that we have been using Dart, the language  has got a strong infrastructure including utility Dart Code Metrics, test coverage tools, and a static analyzer. It helps us track the problems in the code base and visualize them. Using these tools on our projects, we have a great effect on code maintenance. 

    Kotlin for Android vs Dart (Flutter): features and integrations

    Kotlin is a popular, object-oriented language, and a lot of developers use it. The language is similar to Java, therefore it is easy to learn or to switch to. The same is true about Dart used in Flutter, but there are fewer Flutter developers. 

    The main difference for business is that Flutter allows to unify business logic and UI and use a single code base for two platforms. Kotlin can unify business logic, but not UI. Flutter provides better tools, such as plug-ins for development environments. Kotlin tools are limited in their capabilities and debugging with it is now almost impossible.

    Most native frameworks used for building iOS apps, including Swift, provide improved safety and fast integration opportunities. The same is true for Kotlin and Java for Android. 

    With Dart, the integration of unique features of third-party plugins or libraries is not that challenging. Still, the developers who are not aware of Dart’s functionality might consider it difficult. Besides, the Flutter engine has certain limitations for integrating native modules via Xcode of Android Studio by default. Flutter’s documentation includes manual instructions to deal with possible complications and successfully integrate it for Android and iOS. 

    Swift for iOS vs Dart (Flutter): features and integrations

    Swift remains among the most popular languages created by Apple for iOS, and many developers praise it for exceptional frameworks and documentation. Comparing Flutter and Swift, the integration with Swift iOS is simpler and involves less configuration. At the same time, Swift might have poor integration with certain third-party tools. As for Dart, its code suits multiple platforms, including Android. Besides, Flutter offers faster code writing, which makes it an excellent choice for MVPs.

    App developers availability

    Two or three years ago, labor market for Flutter technology was quite scarce, and most developers were new to Flutter. The major reason for that was the lack of Flutter projects worldwide. Hence, hiring a strong team with more than 5 Flutter developers took some time. 

    Today the situation has changed. For the past few years many developers have acquired  great experience working on big projects. According to Google, more than 500.000 Flutter apps have already been released.    

    The professional experience of Flutter teams has also grown more sophisticated. Learning Dart and writing a few samples is not sufficient to start a full-fledged Flutter project. Now most teams have gained their experience in real full-scale projects. So it’s easier  to form  a qualified team for your Flutter project now than three years ago.

    App development cost

    Native development is way more expensive since two codes have to be written for two different platforms with separate functionalities. Besides, native development requires hiring more devs and other professionals, as illustrated by the figure below.

    From the experience of Surf’s teams, the use of Flutter might save you 45.6% on development, 70.5% on QA taking into account the use of autotests, and 33.3% on app design. However, projects are different. Somewhere Flutter can save up to 15% of the budget, but somewhere up to 50%.

    Surf case study: For our project with TAG we’ve used screenshot tests. Due to it, we have accelerated the development up to 20%. With Flutter, the automated tests can be written easily, quickly, and they deliver a good result. 

    As a result, Flutter brings benefits already at the development stage: the standard team is smaller, and the time-to-market is reduced.

    Use cases for Flutter and native technologies

    The choice between Flutter and native technologies largely depends on business goals. The present-day use of Flutter mostly ranges from medium to large businesses, including the apps for Alibaba, BMW and Tencent. As for now, on an open list of apps built with Flutter there are up to 3000 apps. 

    As for native technologies, developers apply them to create sophisticated niche apps with advanced features. The table below illustrates the use cases for Flutter and native technologies.

    When to choose native technologies?

    There are some cases when the choice of more expensive native technologies remains unquestioned. Typically, the most popular examples of the use of native apps include creating advanced top-performance apps with more sophisticated features, as illustrated by the table below. At the same time, investors should avoid native technologies if they wish to decrease development and maintenance costs.

    When to choose Flutter?

    Surf teams have worked on several large Flutter projects, including mobile banking for business, pharmacy retail app, major video streaming platform, and corporate mobile app for KFC. Surf experts recommend Flutter for various retail, banks & fintech, franchisees, and large organizations. More cases of Flutter application are illustrated below.

    The use of Flutter can be particularly interesting for the banking sector. Flutter might even be safer compared to native apps since its source codes are compiled into native code, impossible for human reading.  

    In addition, applications on Flutter can use the security technologies of the banking platform itself, including  Touch ID, Face ID, or a fingerprint scanner. The largest digital bank Nubank (more than 20 million customers outside Asia) is already sharing a successful case of integrating Flutter into a mobile application. 

    At the same time, Flutter does not suit brand-specific apps focused on native features, as illustrated above.

    Bottom Line

    Speaking of Flutter vs iOS native as well as Flutter vs native Android, we’ve reached the following conclusions:

    • Neither Flutter nor native technologies will provide a magic wand to your particular projects and business needs, each case is individual.   
    • Flutter is a very promising cross-platform framework in terms of development speed and budget reduction.
    • It is possible to create MVP applications on Flutter in 2-3 months. The full-fledged development on Flutter cost is on average 30% cheaper than creating two native apps. 
    • Native technologies suit better for sophisticated niche applications with advanced features, such as GPS or rich animation.

    Surf experts believe that crisis conditions will inevitably push more companies to choose Flutter as an excellent opportunity to move quickly online and expand their influence on electronic platforms. 
    If you are looking for an option to quickly develop an application for iOS and Android without serious losses in quality and budget, give Flutter a chance now, and contact Surf.