Wake up on Kotlin / Flutter and ReactNative


Today I invite you to share the results of a little watch that I was able to do on the development of mobile applications. In order to better understand certain tools, I decided to try to create the same application with different tools in order to compare them. I decided for this session to test 3 different approaches:

  • Native development with Android & Kotlin
  • Development with Flutter
  • Development with React Native

You can find the lives of my experiments on the secondary channel.

Native Android development with Kotlin

Kotlin is an object-oriented and functional programming language, with static typing that can be compiled for the Java Virtual Machine, and is today considered the recommended language for Android application development. The language is learned relatively quickly quickly (the syntax is quite familiar) and the documentation has a very good set of content that allows you to gradually learn the basics of android development.

Most

  • Very good documentation
  • Interoperable with Java and its ecosystem
  • Well-defined patterns to structure the code
  • Very good development experience with Android Studio

The lessers

  • We only target one platform
  • Composing views can be complex (To do with jetpack compose)
  • You have to recompile to see the changes
  • Errors that are sometimes difficult to debug (in the case of an error in the XML for example)
  • Verbose

Cross-platform development with Flutter

Flutter is a technology that allows you to develop cross-platform applications with a single code. It relies on the Dart language, which is an object-oriented programming language with static typing that can be used with just-in-time (JIT) compilation during development and ahead-of-time (AOT) for production. .
For rendering, Flutter uses its own engine and doesn't rely on native components.

Most

  • A single interface whatever the platform
  • Hot reloading
  • Many components offered by default
  • Simple operation (component splitting)

The lessers

  • The syntax is not very readable for declaring views
  • The navigation system is not clear
  • Renderer performance can be inconsistent and difficult to debug.

React Native

Reat native allows you to use the React library to develop native applications. The code will not be compiled natively but will be executed by a JavaScript engine which will communicate with the native layer to generate the interface.

Most

  • Easy to learn if you know react
  • A well-supplied ecosystem

The lessers

  • You will have to look for third-party bookstores very quickly
  • Still not in version 1.0
  • It will be necessary to pay attention to the performances
  • Some components do not have the same appearance depending on the platform

Conclusion

Beyond the feedback on the different approaches, the important thing here is to show you how the day before and how we can quickly explore the specificities of certain technologies to get an idea of ​​how they work. This monitoring work is important because it allows us to understand the needs to which these technologies meet and when their use is optimal.

  • Kotlin, if you only target Android and want to use native elements.
  • Flutter, if you want an identical cross-platform interface and if you use Material Design.
  • React native, if you already know React.