I love React Native. The architecture and flow of information makes a lot of sense for me, and I think my code looks minimalistic and thus is easy to read. It seemed straightforward to me to use React Native when I was building the first version of Vsho; we’d ideally launch to both iOS and Android within 1-2 years after starting with iOS, and we were running a very lean engineering team. However, React Native was ultimately the wrong decision for Vsho. Here’s what I got wrong.

React Native pairs well with Expo, and allows for faster demoing and shipping. It did help us with the early iterations of Vsho, in getting people to click around and get a feel for the product. We believe that the look and feel of the app would directly impact how novel it seemed, so we spent a lot of time learning about potential usage.

Where we went wrong was continuing to build off React Native and Expo. A lot of Expo’s libraries weren’t compatible with the nuances of our App, and so we had to leave Expo behind. For example, Expo’s video libraries had a few bugs and creative workarounds, and didn’t support Apple’s AR/VR libraries. Next, we delayed our launch because we suspected we could improve our video load time. Although we made good headway by upgrading our AWS instance, reducing video quality and optimizing our code, the load times of the video were still too slow for me. I wonder how much of an improvement building natively could have brought.

Additionally, we never released the Android version of our app. We decided that adding Android-specific designs within our UI would be necessary to launch Android, and we didn’t want to spend our time here when we were focused on growth. Looking back, it was unnecessary to plan for shipping to Android, especially when our target markets were predominantly iOS.

Lastly, there were several bugs in our code that took a significant time to debug due to complicated dependencies. I suspect that building natively would have surfaced issues sooner.

If I were to again build an app that required modern user-focused and platform-specific design and required extensive use of video, I’d build natively.