Besides parameters such as performance, framerate, battery consumption — there are some valuable business characteristics like hiring difficulty, team cost expertise support.
When this company approached us with this problem, we decided, in addition to answering standard questions, to show them the difference using a real example by building an mvp with minimal functionality that will answer many of their questions, since both expertises were present in our team.
Project: app with 2 screens.
1 — read data from credit card with camera
2 — read data form credit card with nfc
Stable 60 fps, support for 120 Hz displays, warming up shaders, good at animations, fast animation development, fast application start
Up to 60 fps, does not cope well with heavy animations, application startup takes longer.
Supported by Google and the community, they develop ready-made libraries for use, as well as a very large number of popular libraries from the community.
Integration with native platform (android and ios)
Stable and fast bridges are used to deliver messages with (if necessary) payload. Native libraries are connected in the same way as when developing a native application and are used in the same way. You can also open native screens and use all other native functionality.
To work with the native, it is necessary to develop communication bridges with the native, which are difficult to develop and still have several unresolved problems.
Fast due to hot reload, hot restart and widget system. A large number of ready-made widgets.
Widget testing, unit tests, integration testing. Test SDK comes with Flutter.
Fewer resumes and vacancies due to relative novelty, but Dart is a mixture of other OOP languages, which significantly lowers the threshold for entering the language for a completely unfamiliar person, which affects the quality and speed of selection, and the average salary is higher.
Hours for developing demo project:
React Native: 16
Problems encountered during this development:
There was no flutter library to read the card number. In the native part of the library, I had to use part of the code from another native library.
Problems with the gradle version for connecting libraries, long project initialization, non-working project release due to library versions.
Application build time from scratch (Macbook Pro m1), sec
React Native: 2m 40s
Assembly file size (debug version), mb
React Native: 50,4
As a result, after analyzing the risks, the company chose Flutter to develop its product.
Would love to hear your opinion on that, we are always happy to discuss it
Read also on Medium