Developing native or using React Native

Many times customers and friends ask me about developing an app. They all have the same question: “Is it hard to develop an app?” I always respond with: “No it isn’t hard at all”. I tell them that everybody could write an app these days and I try to show them the Expo Snack web application. With a big face, they tell me that they are going to try it at home.

Some companies who I recommended to them to use React Native come back to me after a researching saying they do not want to use React Native, but we want a native application developed in swift and java. When I asked them why, they say that React Native is to slow and not everything is possible with React Native.

So I was like great, somebody has talked to an angry swift developer. Most companies do not really spend time on reaching and just believe everything the developer says. Some developers do not like learning a new framework, programming language extra. Therefore, they just shoot any negative comment they can find so that everybody in the meeting room feels colder than captain America frozen in ice.

Developing software is all about changes we learn from our mistakes and we move on. The same thing happens everywhere. Do you think car companies still make engines as they did in the 90's? No, they found out new ways, new tricks to make cars faster, better and more stable. The same thing is also happening in the software world. In addition, the companies who dare to take the risk and take time to research will stay in the race. How the others will still be busy fixing hotfixes for their hotfixes.

So now, should everybody use React Native? If you ask me, no. Companies need to look at their situation, the skills they have and what their business model is. What is the purpose of the app? How many users will use the app? Is it an inhouse company app only or is it for the consumer market? Is it only meant for the people of the UK? A ton of questions that popup in my head that can help me make the right choose. React native is library build on JavaScript. That translates to the native languages. Of course, it is logical this could never be faster than a native language. However, how important is that delay of milliseconds, is it really wort it? Because that is really what we are talking about. The speed difference is not minutes, but seconds or less. Is that affordably for your business model or not.

I see the product owners all think now. NO not acceptable, we want the fastest, best looking, cheap and finished yesterday! Well dear product owners those other three points can be found in React Native. First, React Native is written in JavaScript the programming language 70% of the developers at least understand.

Finding a developer programming JavaScript is far easier than finding a developer that knows swift, object c and java. Therefore, we finally after ages found a developer that knows all those languages and we made a cool app that we can show to all our friends at the next birthday party. Sound great right? After two years when our good friends of Apple have released some updates and we are at another party and we finally convinced or buddy to download our cool app. We cannot find our app in the AppStore. Then we check our emails that we get from Apple and we never read, because you know mostly just news about the same iMac, excuse me I mean the new iMac that is coming out next spring. We finally found the email from Apple giving us heads up that are app is going to will be deleted if we do not release new updates.

Uhm Auch, yes, I know. Well at least we have our friend the developer. Yes, the one that we fired, because we did not have any other projects for him. Well lest give him a call, maybe he will like to come back. In addition, if not, we just look for another developer that knows all of those languages. Lucky, we found one. Well our friends first day of work and the first question he asks Is where is the documentation? Yes, it is somewhere in the code. Yes, yes, it is here, you see documentation. The developer looks at the product owner and says the most painful line any product owner could here, believe me it is even pain fuller than the phrase “I want a divorce”. “We need to start from scratch” and there we go again a completely new project again from scratch.

Could this happen, yes, the chances that things like this could happen are big. Especially at companies where the R&D team is very small. Mostly those are the companies that lose their developers to the big companies. However, wait could this not happen to an application build with React Native. Of course, this could happen also to a project build with React Native, but starting from scratch with React Native will not be the same as an app build native. Finding a developer that knows JavaScript is easer and developing using React Native is faster.

Therefore, that is one against one, of to the next benefit React Native brings. Faster development, but how? In addition, why? Starting with the how, at Facebook they are really pushing the React Native library. They have built lots of API’s that offer the native functionality, of course, it maybe will not 100% fit your business functionality, but still it helps you a long way. Furthermore, a very cool and awesome project that was launch by the community called Expo helps even more with developing. They offer nice API’s that function as a layer above React Native. Expo makes it also possible to develop iOS apps without a need of an Apple computer. Yes, finally you can make that hard head developer that (definitely does not want to work with an iMac or a MacBook) develop iOS apps. Developing in React Native with Expo also offers multiplatform apps. You develop one app and it runs both on Android and Apple devices. Well I must say that this requires sometime a little bit of css tricks here and there. However, in the end, it is possible and works great. So first, we needed a developer that knew Java, Swift, and Object C. However, now we only need one developer that knows React Native.

Therefore, that wraps it up one for native and two for React Native. However, we are not finished. React Native still offers a great way to create beautiful apps. When using React Native. You can apply css. So, there is no styling when you go Native? There is also styling when you develop Native apps, but still it is not the same as css. Check the web and look for css examples, css has brought the beauty to modern day web applications. Thanks to the community, you can build the most beautiful applications without being a pro at designing. The resources you can find on css are far more than the ones you could find on styling with Swift. Css is practically becoming its own language.

After reading all the above, you must be thinking know. Why does not everybody develop in React Native, instead of choosing a native app? Well I have to bring it to you; sometimes its better develop a native app. Well as you see, I did mention some of the great things React Native development offers. There is still some down point, one of the most important one is. React Native does not offer all the API’s that a native language offers, like Swift. For some companies this can be a problem. In addition, React Native is sometimes slower than a native language, yes, the difference is little. However, if you are creating an app for suppose a bank or an insurance company. Then every second will matter.

React Native has some super high advantages and for a small company it will be the most efficient solution. In addition, for a big company, it just all depends on the number of users the app will target. In addition, an advice for all the product owners be realistic. We all would like to develop an app that will be the next WhatsApp or Twitter. However, will it happen soon? Do you also have the marketing budget for it or do you only have a budget for developing a very expensive app? Think realistic and focus on bringing a good stable product to the market. After that, you can think about redeveloping the app. Because believe me, if you do not refactor your app after the first release. You will be like our great friends at Wall Street running Windows XP, because the vb script application could not handle the new update. Many companies are using React Native and it works very good for them. For example, Bloomberg, Wix and even Instagram. However, some companies have used React Native and stopped using it. The most famous one is Airbnb. Airbnb was using React Native from the beginning. The where actually one of the pioneers that where heavily developing in React Native. They wrote a great article in about their experience with React Native and they have pointed out some things that are a down side of React Native. However, this does not mean it would not work for your business solution. Every company needs to research what will be the best choose for them and try it. Try taking the risk, because the biggest advantage you have. You already have nothing. Airbnb already had an app and a big ecosystem. Their demands where already set, the functionality required, the number of users it could handle, the speed. They already needed to meet does numbers.

Another tip, if you cannot find a developer that develops in React Native. Look for a developer that is developing in JavaScript. If you have knowledge with modern JavaScript, developing in React Native will be not hard to learn. Our good friends at Facebook already at design thought about making is easy for developers. Taking in consideration that I learned React Native in 2 weeks and not mastered it. Mastering a programming language takes time and requires making mistakes. Because the best of us make mistakes. Where do you think patch Tuesday comes from? However, from making mistakes we become good at what we do.

I wrote this article to help the community, help the product owners make a good choose at developing an app. I advise also to listen to the developers and take their advices in choosing the right way in choosing a programming language. I want to thank Dan Abramov for his work at Facebook and developing and pushing React to a next level. Also, I want to thank the people at Expo.io. You really brought the community to a next level and super cool that it is still free, thumbs up for that. At the bottom of this article, you will find some resources that will help you get started with React Native. Leave some comments below and I hope you have enjoyed this article.

Resources:

· Sullivan, A. (2019, March 23). Examining performance differences between Native, Flutter, and React Native mobile development. Retrieved June 10, 2019, from https://thoughtbot.com/blog/examining-performance-differences-between-native-flutter-and-react-native-mobile-development

· Peal, G. (2018, June 19). React Native at Airbnb. Retrieved June 10, 2019, from https://medium.com/airbnb-engineering/react-native-at-airbnb-f95aa460be1c

· Stackoverflow. (2019, January). Developer Survey Results. Retrieved June 10, 2019, from https://insights.stackoverflow.com/survey/2019#technology-_-programming-scripting-and-markup-languages

· Calderaio, J. (2017, February 22). Comparing the Performance between Native iOS (Swift) and React-Native, retrieved June 10, 2019, from https://medium.com/the-react-native-log/comparing-the-performance-between-native-ios-swift-and-react-native-7b5490d363e2

· Berkovich, S. (February 5). Should you use React Native to build your startup’s mobile app? retrieved June 10, 2019, from https://medium.com/snipe-gg/should-you-use-react-native-to-build-your-startups-mobile-app-c0baf9f4d9ad

· Starting with Expo.io — https://expo.io/

· Starting with React Native — https://facebook.github.io/react-native/docs/tutorial