Author: Adem Çırak, Date: 11 September 2018
Time to read: 3 min.
I love React-native! When I saw React-Native first, I thought this will be a game changer. And it changed mobile development area some, I was right about it. However, when I used it first time (version 0.1xx) it was shit. It wasn't a full solution for crossplatform mobile application. It was for IOS with some underperforming Android support. But it changed in 4 years. Now, it is stabialized. It performs better on Android and now it can be used for content heavy applications. I am not complaining about anything, as I said, I love React-Native but it has some product pains. This article will be a summary for my pain in developing React-Native application for last 2 years.
Dependency You are -probably- dependent on libraries. I mean, some core features you used in native development are depended on some open source guy. This mean you can not guaratie quality of that component. If there is a bug, you need to fork and fix it. Some people also complain about depending on Facebook but I think it is normal. If you are developing Android or IOS native you are also depended on Google and Apple. So not a big deal.
F*ing Navigation** Really? As a web developer, I used many routing mechanism on both server side and front-end javascript side. I have never see this size of shit ever. Current recommanded solution (react-navigation) is so heavy and buggy (2 year of development, still seeing lots of shit). You can't use it without Redux. Even with Redux, you will still strugle building your navigation because of poor documentation and design.
Code Quality? Yes, it is a problem. For faster development, you are going to use a lot of open source library. As a result tons of bug. Main reason is -lets face it- Javascript is a front-end language for browsers. Most of open source maintainers are actually front-end developers so you are getting poor quality of code from them. Don't get me wrong, I appritiate the effort. But lets face it, it is the truth.
Version Upgrade Have you ever tried to upgrade React-Native version? It has some CLI solutions but I bet you will get some build error. And also you will probably get Android support library version compability problem. These problems are making your development flow so ugly. For a project I spend 8 hours to upgrade react-native version. You also need to learn some gradle scripting to solve dependeny errors. To sum up, upgrading native packages are really hard.
Performance Your application will be ready slower than native applications and it's UI might have struggle if you don't code right. I don't think this is a big problem if you selected react-native for right application but it still exist esspecially in Android. If you are planing to develop an application with react-native please investiagate your requirements detailly.
Native Development Still Required As you can understand from version upgrade section, you also need to know some native. I was lucky to know Android but I am still facing lots of IOS related problems. You should be able to fix some certain native bugs, too.
Bugs You are using javascript throuh the bridges. So lots of memory and thread bugs on the way. You may think "man it developed by Facebook, how much error can I encounter with react-native?". You are wrong! There are still lots of bug exist. But it is getting better. As you develop, you will be able to see possible bugs related react-native. So good luck!
Platform Design Spesifications IOS and Android users has different expectations (I mean UX). This mean you need to adjust your design for each platform. Some components have plarform design compability however most of them not. Lucky, React-Native support code seperation for IOS and Android devices. But don't forget while planing your project schedule.
Thats all! Thanks for reading my article folks. These are my negative thoughs on react native, hope you don't suffer things I mention above. Happy coding!