5

I am working for the consumer oriented company which has mobile app as main product.

Our mobile app has 100K monthly active users and is developed using Cordova + Kendo Mobile + Telerik Appbuilder (which will be discontinued in couple of days). We are thinking about migrating our code to native solution (either real native or React Native).

Firstly I want to say that for us developing app for Cordova with Kendo Mobile has been hell.

This is mainly because of Kendo, but also because of dependency on various plugins (some of which were great, and others not so much - and you are left choice to either use plugin or write Native code and Cordova plugin for yourself).

Of course, the biggest issue is performance. And our app does not have some complicated calculations, or animations or anything similar, but difference when scrolling through infinite lists, or fast switching between screen is obvious. So we have spent a lot of time optimising (or even writing code from scratch) for stuff that we would get out of the box if we were native. And because of this we cannot easily estimate releases of new features and whole development process is slow.

From business perspective it would be better for us to go with React Native because we already have 3 JS developers and native devs are scarce and expensive.

On the other hand we are kinda traumatised from our whole experience with hybrid development and we are not sure is React Native really that good and mature as advertised, and we have no time for mistakes.

Our biggest fears are:

  • React native is hyped and when "next big thing" happens everyone will jump on that bandwagon (eg. Google Flutter)
  • Dependency on open-source plugins (which can be abandoned anytime)
  • Development is faster in theory (because majority of code is shared) but for app to truly look / feel native we will have to spend bunch of time on optimising various stuff and we will be much slower in the end
  • I have read in few articles that react native runs on iOS flawlessly but Android is another story - it is slower and there are quirks between various Android versions (eg. something works fine on 5.1.0 but not on 5.1.1)
  • Apple will change something. (like introduce notch) and it will take long time for us to adapt to change because of technology limitations

On top of my head here are few requirements that our app has, and I am not sure all of them are covered with React native properly:

  • Native feel while scrolling through infinite feed (feed is similar to one that FB has)
  • In-app purchases
  • Native audio and video playback
  • Background stopwatch
  • Internationalization
  • Deep linking
  • Analytics and Crash reporting system (like GA and Crashlytics)
  • SQLite or some other DB/Storage solution
  • Native like navigation between screens
  • Graphs & Charts (like D3.js has)

Your thoughts and experiences would be much appreciated!

  • I would disagree that native devs are scarce and expensive. Can you use strong typing with react native (i.e. something besides plain JS)? – Frank Hileman Mar 14 '18 at 20:35
  • You can use Flow. – Frank Hileman Mar 14 '18 at 20:38
  • You can always maintain 3rd party open source plugins yourself, too. – T. Sar Mar 14 '18 at 23:45
  • @FrankHileman what I have said about native devs is true for my country, and yes there is Flow and TypeScript but they just make JS a little less pain in the ass they do not help much in overall picture – hyperN Mar 15 '18 at 5:27
  • @T.Sar That is true, but then we would have to either learn Swift/Java or hire people who already know them ... not the best solution because we want to avoid this in the first place, but on the other hand, we can write v1.0 and if everything goes ok, we can hire these people down the road because up to my knowledge ReactN works well with purely native code :) – hyperN Mar 15 '18 at 5:31
1

I used to use Blomberg app as a sample of react native. You can check It if you need some proof of concept. It has infinite feeds and complicated UI. The scrolling and tabs switching is not so fast but still it does the job. And it would be harder to make all this UI using native development.

Right now we developing the project (which also has infinite feed) in native on Android and in React Native on iOS. We also spent some try to make react native version run on Android and compared two versions. The scrolling performance is comparable. React native has all app logic running on background thread so ui thread is free. Our android native app used UI thread much more.

Still native is a safe bet yet and if something goes wrong with performance you are sure that it can be fixed.

You have a lot of requirements and some native part of programming would also be required anyway.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.