I started React Native when they released 0.14. I had faced lots of issues when I started. But, those issues have been solved on the subsequent releases. I'll list down some of the problems which I faced during development.
React Native is following a 2-week train release. Every two weeks, There will be a new release. Every version will have something which you really need. Initially, There were lots of breaking changes. It took lots of time to upgrade from one version to other. Later, Facebook released Codemod. It was helpful to reduce the time and effort needed to upgrade to newer versions.
Initially, I was using Out of the box ListView provided by React Native. It took more time to load and RAM. Then, I get to see the following paragraph in React Native Documentation.
ListView initial rendering is too slow or scroll performance is bad for large lists: This is an issue that comes up frequently because iOS ships with UITableView which gives you very good performance by re-using underlying UIViews. Work is in progress to do something similar with React Native, but until then we have some tools at our disposal to help us tweak the performance to suit our needs. It may not be possible to get all the way there, but a little bit of creativity and experimentation with these options can go a long way.
I started using SGListView which is the memory minded implementation of ListView by Shaheen Ghiassy. Memory consumption was reduced drastically. But, It didn't solve the whole problem. The performance was not good like Native ListView implementation.
I got a situation to show the list of all songs from the mobile. In that use case, I had to load more than 2000 rows with some image in the list view. I started searching for others solutions since the performance was not good. I get to know that recycling the views are the only way to get high performant ListView. Then I found the List View Experiment by Tal Kol. If you want to know more about it, Check Recycling rows for high performance react native list views . It also didn't work properly for my use case. So, We ended up creating this big listview in native itself.
I couldn't run background services in Javascript. I heard that it is possible to start the JSCore in the background without showing the UI. I tried to do it but, I couldn't achieve it. I get to know that running the JSCore in the background will be more expensive. So, I stopped trying it. Now, We are doing all the background processes in Java and Swift itself.
I have lots of good and bad experiences with React Native. I'll share those experiences as Stories or Blog posts soon.
What do you think about android side performance. We use react-native in production and actually haven't felt any down performance issue on android. But I've heard that react-native android has poor performance. Is it already history of the past?