Two main cross-platform frameworks

0 Comments

In our practice, we most often use two cross-platform frameworks:

React Native by Facebook based on the JavaScript language and the React.js library. Announced in 2015.

Flutter by Google based on the Dart language. Release of the first stable version in 2018.

Using the last framework as an example, let’s look at what the “cross-platform” is good for.

Cross-platform development: features

The technology of “hybrid” development itself did not appear today. The idea of ​​a cross-platform solution that allows you to write code once and run on two platforms at the same time has existed for a long time, but few dared to implement it. The official release of Flutter in 2018 rocked the mobile development industry.

Examples of companies that are already using Flutter can be found, in particular, on the framework website:

BMW – My BMW application for driving and checking the condition of the car;

eBay – eBay Motors service for selling cars;

Alibaba – Alibaba Xianyu app for selling used goods;

Yandex — Taximeter;

KFC is an analytical BPM system for restaurant managers and employees.

Creating cross-platform two-in-one applications is consistently interesting for business:

first, as a quick solution,

secondly, as an opportunity to save the budget.

Flutter allows you to reduce the composition of the IT team and partially reduce the time spent on designing business logic and testing.

We’ve identified a few key pros and cons of Flutter based on our team’s assessments.

Pros:

Speed. You implement an application simultaneously for two platforms, reusing part of the code and reducing the time-to-market (TTM) – time to market.

Saving. Flutter saves an average of 5 to 20% of development time, although this figure will be unique for each project, depending on the complexity of the application, its UI and features.

Average “formula”: 1 Flutter developer can often perform the tasks of 2 native developers (iOS, Android) in the same time frame. In turn, if the application has a lot of native functions, it can be convenient to combine native development (for example, for libraries) and Flutter (to create a single logic and UI).

Andrey, team leader and Flutter developer at SimbirSoft

The same UI (user interface) on Android and iOS platforms. Google’s Skia engine helps you draw each element correctly for each version, and as a result, you get uniformity in applications.

Less risk of errors in business logic, since the iOS and Android versions have the same foundation.

Ability to compile applications for desktop platforms in the future.

Due to the above advantages, according to our estimates, Flutter is preferable for situations where you need to speed up development as much as possible.

Example: You want to test business hypotheses with an MVP version of a product, starting with the most needed features and expanding as the product evolves.

A request for speed of development appears in business during changes in the market. An example is the trend towards universal digitalization in retail and food tech during a pandemic.

You can experiment with cross-platform when you implement something new. At the same time, it is important that you have specialists with a high level of competence in your team. In any case, it is important to consider the cost of developing an application, native or cross-platform, in particular, the availability of experienced developers, the cost of hiring them and immersing themselves in tasks.

Ak Bars development manager Timur Iskhakov

Restrictions:

High level of difficulty

If your application has complex calculations, a large number of products, you need access to the hardware capabilities of the device (camera, files) – the framework must be chosen together with the team that will develop the application.

Personnel shortage

There are still few experienced cross-platform developers in the industry, which makes it difficult to recruit an IT team, although the community is constantly growing.

Features of working with graphics

In some hybrid applications, the interface and graphics can “slow down”, however, this problem is not typical for Flutter itself.

Support for older versions

Cross-platform apps may require additional work to support older versions of iOS and Android.

Feature delivery speed

Let’s say you estimated the authorization by fingerprint (fingerprint) in the conditional 10 hours. If there are any changes in the operating system, in a native project the development time will often remain the same – 10 hours, while in a cross-platform implementation it can take 10-15 hours. At the same time, practice shows that the community quickly finds ways to reduce this period.

If at least one of these limitations is critical for your project, you should, in addition to cross-platform solutions, consider an alternative – native technologies.

pros

Instant access to new native platform features.

Any Google or Apple updates can be provided to customers immediately, literally the next day after the release of the next version of the OS. Flutter and other cross-platform frameworks may take longer to get started with new features.

For example:

– the dark theme of the beta version of iOS-13 on Flutter was released a little later than the main release;

– virtual reality VR in Flutter at the time of this writing is presented only at a basic level: you can display a video or image, but it’s unlikely that you can walk around a 3D location.

Interaction with specific device functions is available.

For example:

work with high-loaded processes;

video processing;

· gyroscope, compass, fingerprint recognition module;

functions of data encryption in banking technologies.

At the same time, native modules can sometimes be connected to hybrid applications, for example, video chat – on a cross-platform, and an SDK to speed up video chat in C ++. For example, using the dart:ffi library, you can integrate interaction with C++ code, and for simple load elements, you can use isolates that allow you to perform high-load actions in a new process, avoiding load problems in the main isolate.