React Native is made for shipping, not maintainability

After two years of React Native development, I have come to realize this.

My background

I am a graduate in computer science from the University of Padua, I started developing for iOS in 2010 and I was a iOS developer until early 2019.

How I started with React Native

In 2019 I was lucky enough to land a job in Foodracers, an Italian food delivery startup based on the city where I live, Treviso. Given the experience I gained in the previous years in the mobile world, they trusted me with the development of their mobile apps. There was a catch, though: the apps had to be written using React Native for the two main reasons everyone chooses this platform: the other developers were familiar with web technologies, and the write once, run everywhere approach was desirable.

My experience with updates

I see two main issue with maintaining a React Native project long term: one is keeping up with the React Native dependency itself, that allows to keep the compatibility of the app with new updates of the operating systems; the second one is keeping the dependencies updated, both for security and for compatibility.

Conclusions

I had some hype before approaching React Native for the first time, and my overall experience has been great so far. The speed of the development has been far higher than in the previous iOS years and I enjoy JavaScript more than I anticipated. On the long run, some issues have arisen on keeping my code base up-to-date, but with some tricks I managed to keep them to a minimum. My experience with all of this is still limited though, so any suggestions are welcome! 🙂

TL;DR

React Native is a great tool to ship apps fast, it has a great community and it is based on a straightforward technology. But it’s not all fun and games. While starting on a new project, keep in mind that maintaining a React Native code base has some drawbacks on the long term, and eventually you must face them. It can become frustrating at times, be ready to pass some time refactoring your code base or rewriting stuff from scratch.

Mobile app developer; music lover; motorcyclist