React Native vs Flutter for Cofounders

Fred Grott
4 min readAug 12, 2019

Would it not suck for your startup if you chose the wrong cross-platform mobile app framework and got stuck with huge differences between UX and dev times per mobile platform instead of cross platform mobile app dev and design nirvana? I am gong to use my android app dev experience to point you the cofounder in right direction.

I am not a yes person, in fact I do not go through recruiter application processes because my outspoken tech expertise usually gets buried in the recruitment process. Its not that I do not care its that there are some important things to care about and guiding a startup cofounder through the process of choosing the right mobile tech app framework is one of the important things to care about.

Before I begin, let me say something nice before I beat up these entities. One, in 2015 we were in the mobile cross platform ice-ages with nothing that was slated to decrease app dev times from the native way of doing things. Facebook took their React javascript framework and figured out how to implement a framework on mobile OS Widgets that imperfectly implemented React. And, I have to hand it to facebook, they did a bang-up job on marketing the hell out of it that its react(people in react would state that its react-lite as it does not implement part of the core of react ie the UI node state changing stuff connected to only updating a portion of the UI frame).

Two, in 2007 we had a situation where we did not have smartphones. We had the phoens your grandma uses, not very friendly and certainly no apps. Both Apple and Google came up with solutions based upon their experience. Apple came up with iOS and Google came up with Android.

Now comes the first part of the problem. If I am writing a game I have to use Native C++ on Android as the Android-java-Kotlin combination is too slow compared to iOS objC and Swift. In short words I am talking mainly about the UI-refresh-rates. You know its bad when Google introduced a build.prop feature in the Kernel to force hardware refresh rates because Samsung and other OEMs were asking for it to be able to match hardware that has 90 Frames per second or higher refresh rates(samsung has 960 FPS on its higher devices including the camera refresh rates and Apple currently on its higher devices is still at 240 fps).

If you had watched a slow mo movie shot with iphone or Samsung premium devices than you already know why we want fast refresh rates for the UI as the detail in the app will be so much better. Okay here is an example

Now here is the headache on the android side that all cross platform mobile app teams face. The Android java VM in it default surface-view shared on all views on the screen is not set to force the highest hardware refresh rates. For reference compare the Facebook app on ios and android, its slower on android for exactly this reason.

Native games do not have this problem as past Android N we have certain OEMs enabling the high hardware refresh rates using he build.prop feature which than makes it available to game devs. There are even game companies that list which games have 90 and 120 fps on android and iphone.

Now rest of the beat up stuff. Despite Facebook’s react marketing of the react native framework one will NEVER EVER BE ABLE to deliver the exact same blazing speed UI app UX on both iOS and Android. It does not matter how much time you spend customizing the ReactNative stuff on Android it will still be slower than the ReactNative iOS app.

AND, the kicker for startup cofounders. You will always spend double the dev time on the ReactNative Android app compared to the ReactNative iOS app. The React Native using javascript has no bearing on reducing the main problem son android pertaining to app development as when Facebook created the framework they still were wet behind the ears when it comes to android OS widgets.

The set of reasons why Flutter succeeds where ReactNative does not is that its a widget app tool kit that happens to run natively on both iOS and Android. ReactNative does not execute as native on android! Flutter, by comparison, runs natively both on iOS and android hence why flutter apps visually have the same blazing fast Ui rendering frame rates per second on both mobile platforms.

AND, due to having the same widgets on both platforms yet visually tuned to adhere to Apple’s Ui guide on iOS and Google’s material design on Android one can really fully write one UI in code instead of pretending with ReactNative.

So how much difference in coding time are we talking about? From native iOS apps and Android java-Kotin apps its a savings of about 45%. From ReactNative to Flutter apps its about 40%. Keep in mind most of that time savings is on the android side as we do not have to backport features in widgets and with ReactNative we still have to on android side and in Reactnative itself on android does not use the faster default fragments so one has to enalbe that via a 3rd party plugin that is never ever synched up with changes in ReactNative and so one is forced to update your own copy of that plugin to keep things rolling.

You can follow me at:

https://angel.co/fred-grott

--

--