React Native mobile development state of play

Until 2020, React native was a poor framework in terms of debugging tools. Most of the time you had to rely on various platform-specific tools for Android and IOS in order to get system logs (logcat, …), debug and analyze performance pits or rendering issues.

That’s for the native part of the framework.

About Javascript

You could debug Javascript using the remote debugging which is done through the browser debugger. It means that instead of running the code in the device Javascript engine, your app code run in chrome’s V8 engine (if you are using a chrome-based browser, of course).

This can leads to some strange behaviors because the engine is not the same, and because your code is running in a browser with the power of your computer CPU, you might not see performance pits while developing and get surprised when back to the device, when releasing on staging as example.

This is even getting worse while releasing on Android, as depending on the Android version and the device model, the system’s Javascript engine is not homogeneous, some things might behave differently. This is one reason why little by little Facebook is bringing tools to improve reliability across devices and debugging tools such as Hermes, an embedded Javascript engine for Android.

Until now, to face the poor collection of tools we had available for react-native, some companies built their own tools such as InfiniteRed with Reactotron. This tool is great because it brings through plugins some nice features such as Network inspector, overlay or redux store inspector among other things, that were missing out-of-the-box in react-native apps.

But besides Reactotron and the CLI embedded version of the React Devtools (that was not usable in v4)…

There was clearly a lack of platform tools that we could easily use where a concurrent like Flutter is doing and taking into consideration of developing such tools since the beginning.