React Native review

0 Comments

React Native provides all the tools to create secure mobile applications, such as Skype, Instagram, Facebook and other well-known products. Security concerns are only possible when using third-party modules during development. At the same time, JavaScript is actively developing, new features are being released, and the risk of obsolescence is minimal in the foreseeable future.

In the case of development on Flutter, the risks are higher, since the framework is young, the release was released only in December 2018. So far, there are problems, for example, at one time or another, the assembly of libraries is available only for one platform, there are crashes in Android Studio, there are bugs in some plugins and libraries. On the other hand, all this is being finalized and corrected. The risk that Google will stop supporting Flutter, as it has already done with other projects of the company, cannot be ruled out. However, Fuchsia OS is written in Flutter, which some developers see as a replacement for Android.

For the developer

Above, we described the factors that both the business and the contractor take into account. There are also technological criteria, which are primarily taken care of by the project manager. For example:

— Level of knowledge of native languages ​​and team preferences

Each mobile studio has its own preferences in the choice of technologies. Native development requires the most complete knowledge of the relevant languages. However, due to the use of native system tools, there are fewer restrictions and difficulties when customizing or accessing platform-specific tools (unlike React Native and Flutter). With experience in JavaScript, a mobile developer can quite easily switch to React Native (no need to additionally learn the Dart language, as is the case with Flutter) or Dart (Knowledge of TypeScript is a big plus).

React Native uses native modules under the hood. As a result, if there is a need for customization (and this is not supported out of the box), it is necessary to work with native modules. For example, in our practice there was a case when we had to customize the Yandex.Maps library to display custom visual components on the map.

Flutter, unlike React Native, stands out with its own graphics engine. On the one hand, this allows you not to touch native at all when developing simple applications. On the other hand, if you need to refer to native, this means additional complexities (for example, messaging with elementary data types and JSON) and the inability to use native graphical components.

— Entry threshold

If a developer decides to learn a new language, the availability of a community, as well as help information and documentation, becomes an important issue.

Flutter and React Native are constantly evolving, they have an active professional community and good documentation. At the same time, native development is ahead of frameworks, thanks to a larger community and more training materials and forums that describe the development of complex components.

“Crib” for selection

The following comparison table will help simplify the choice and answer the question in which cases one or another implementation method is suitable (or not suitable) for creating a mobile application.

Recommendations

If the choice is made in favor of frameworks, we advise you to pay attention to the following aspects of work:

Grade

You need to test all involved platforms (iOS, Android). It is important to objectively assess the level of knowledge and experience of all project participants so that the estimate in hours is not underestimated. Consider the risk of bugs in the React Native and Flutter frameworks themselves during development.

Design

Some elements are difficult (or even impossible) to render in Flutter or React Native. For this reason, the design must be agreed with the developers – and before the customer falls in love with a beautifully rendered picture.

CI/CD

On React Native, specific problems with autobuilding are not ruled out (for example, due to installing libraries on different platforms). You need to build more risk reserve.

splash screen

The implementation of splash screen on Flutter is faster than on React Native, where this element can only be rendered natively, with a high probability of bugs. When using React Native on a splash screen with all renderings and bug fixes, it is desirable to put in more time.

Layout

When using React Native, layout on iOS and Android should be carried out simultaneously in order to avoid problems in the future when adapting the layout to one of the systems.

Parallel web and mobile development

If the web version of the application is written in React, the time spent on developing a mobile application in React Native is less due to the same logic of the components.

Debug

If the application is large, React Native makes it easier to test and unit tests. On Flutter, you need to spend more time on a bug fix, since the logs are not informative.

Application work with system files

It is necessary to request permission to the sd-card, while not with every file it is possible to get the name and path. Sending a file requires the use of a ContentResolver. In order to minimize risks, allow time for all operations related to the file system.

Delivery of assemblies to the client

There are no significant differences from native development here, you can choose any convenient service: Crashlytics, TestFairy, TestFlight.

React Native vs Flutter

We at SimbirSoft use both React Native and Flutter, depending on the nature of the application. We share several observations from our practice, which help to foresee the peculiarities of working with a particular framework.

Summing up

The development of native and hybrid mobile applications has its own advantages and disadvantages, which are taken into account by the business and the contractor when choosing a technology. Among the most significant criteria are the timing and cost of development and maintenance, compliance with the task, safety and prospects, and the level of development of the community. Based on their experience, a mobile developer helps to choose the best solution for each specific application. We hope that our criteria and comparison table were useful to you. Thank you for your attention!