10 facts & myths about React Native

React Native. Due to the community admiration that surrounds Javascript, it is a one hyped up framework. It gives you the impression that everything you need to know is Javascript — and the framework will make your hybrid app, well, react like a native. It sounds incredible — who wouldn’t want to live in the world where one language can deal with both iOS and Android, and every web creator can seamlessly turn into a mobile app developer?

Well, let’s take a closer look at the React Native framework and find out some of it real advantages, and some horrendous misconceptions.

1. You no longer have to create two separate apps (for iOS and Android)

Myth. Let’s establish one thing: native apps are superior towards hybrids in most aspects. Or at least — in all aspects involving app’s native behaviour, such as smooth navigation and access to mobile’ devices functionalities. Yes, you can develop a multi-platform application that will work on both iOS and Android — but it will be far from perfect.

Firstly, there are components that React Native cannot support. For example, there is no support for tab bars (on platforms other than iOS), and although you can connect any database, none of them is actually supported directly from React Native. Then, you have to develop those components separately what almost completely defeats the purpose, as obviously, you have to add those elements independently for iOS and for Android. Sometimes there are only singular controls, sometimes whole views — depending on how detailed it is supposed to be and how coherently it should work.

It’s always a good thing to have a deep, technical understanding of a certain platform. If you develop applications for iOS on a daily basis, you will be able to create something closely resembling a native app. Also, you will be able to notice any deviation from the norm.

Secondly, native components do not perform that well on multi-platform apps. That’s unfortunately a stated fact, not just a subjective opinion. It’s mostly because they create a coating — an additional level of management — over device functionalities, which really slows them down. Direct operations of a real native app will always be faster and more stable. So be prepared for some possible crashes and long loading when using a camera or a GPS in a hybrid app.

2. Apps created with React Native are indistinguishable from native ones

Myth. Once again — although the framework has the word “native” in its name, it doesn’t create native apps. It creates multi-platform apps that try to mimic native ones. This is a huge difference. It’s like going to the concert of someone covering Eric Clapton — he may do it pretty well, sound decently similar, even wear his significant Cordings suit. At first glance you may even feel satisfied. But with every misplayed cord, every false note and every misspelled lyrics, you will be reminded that he is only an imitation. Sure, he may be a good artist, overall a nice guy and hey, the tickets were much cheaper, but he is not, nor will ever be, a real Eric Clapton. The more you like and appreciate the real singer, the more you know about him and his artistic achievements, the clearer you will see the difference.

So if you are used to native apps, not to even mention — you develop them, you will quickly notice that app made in React Native is different. Moreover, app stores are less willing to accept multi-platforms. The process of launching the hybrid to the app store is much longer and more complex.

3. You can choose from lots and lots of libraries to add native elements

Fact. React Native is an open source. There are a lot of libraries to choose from, and the collection is still expanding. You will find a lot of great libraries to help you with pretty much everything, starting from API and navigation, to fancy vector icons and animations. Befriend GitHub, as it is going to be your best buddy when developing anything in React Native. It’s true that React Native community does a great job providing solutions to many of framework’s initial problems. Whenever in doubt, check out if the community hasn’t solved your issue already.

4. It’s unexpensive in development

Fact, but… You don’t need two separate development teams — or at least you don’t need them as long as you do not need to add some native elements unavailable for pure React Native. Creating and maintaining one application instead of two may be cheaper, but you have to take into consideration that every additional native element will increase cost and eventually also the risk of application becoming unstable.

To put it: to some extent, React Native multi-platform apps indeed are cheaper, but after crossing the line with adding native elements, the cost may not only equalize with cost of creating a native, but even suppress it. Lots of people and companies talk about React Native “cutting costs in half” or guaranteed “up to 40% savings” when using it, but in many cases, after adding native elements and further development, prices become very similar to those of a native.

5. It’s popular among clients

Fact, but… Mainly because of the point mentioned above. Lower prices are always tempting, and it may sound so good that you are creating one thing that will work on every device. However, you already know the drill — it isn’t the whole picture.

6. It’s easy & comfortable in development

Fact, but… It can be easy and it can be comfortable. It’s relatively simple to learn Javascript, so creating an app with React Native isn’t difficult as well, especially with all the libraries the community provide. In order to create something that can really stand between native apps without shame, you need much more knowledge and experience. So you may say that React Native is easy to learn but slightly harder to master.

As for the second part of the statement, developers with wider experience agree that you will need some additional tools (fortunately, they are free — also, easy to find and obtain) to make the process more pleasing, especially the debugging part. So it’s not really that comfortable by default — but you can easily adjust it to your needs.

7. It has a great community

Fact. Javascript is really popular, so there are lots of people who are interested in React Native, which leads to lots of people sharing their experience and expanding the library. If you find yourself struggling with any troubles, you can count on many people willing to help you. React Native’s community is energetic and friendly towards new members.

React Native, as an open source project, is being developed by the community, which means it is constantly expanding. With that being said — it’s actually the community that leads the framework to be even worth considering at all.

8. It’s great for MVPs

Myth. This is one of the most signficant misconceptions about React Native. MVP is neither the prototype nor the mockup, but the basic form of your product that you can already put on the market and show to your customers (you can read more about MVPs here) So it is basically app’s core functionality in the simplest form, which means that if that core functionality is anything native-related, React Native may not show its full potential. If you want a native component to be a star of the show, why choose a multi-platform to achieve that? As mentioned before, for those who are used to native apps, the differences may be easy to notice.

Moreover, most MVPs play the role of a foundation for the whole app that will be constructed in the future. The bigger the app becomes, the more the framework will struggle. It’s more reasonable to create an MVP with a more trustworthy technology, unless you are absolutely sure that it will be very simple and you’ll never want to develop it more.

9. It’s great for simple apps

Fact, but… Referring to the previous point — React Native isn’t the greatest for MVPs, but a simple app that isn’t intended to expand in the future is a whole different story. You can learn how to create in React Native easily (Javascript, Javascript!) and given the product is plain, it may work decently well on many platforms. So if for example you want to develop a simple product like a mobile shopping list or a notes storage, you can buddy up with React Native pretty well.

In the past, many customers wanted to develop simple products, for example applications dedicated for a single event, in frameworks such as Xamarin. As currently the hype concentrates around React Native, it may be a good choice to develop such products using it instead.

10. You can move seamlessly from being a web developer to do hybrids with React Native

Myth. That may be the biggest misconception of them all, because theoretically — yes, you can. If you know Javascript, React Native opens its arms for you. Unfortunately, coding an app doesn’t automatically make you an app developer — and there’s the rub.

If you already developed a few truly native applications, you know how they work. Remember, websites and applications are two completely separate things. You may be the best website developer to ever exist, but apps have their own rules. You have to learn them first, because otherwise, it will be rather noticeable to everyone with the slightest knowledge in the topic that your app is not native at heart. Web developers are used to different solutions and ways of thinking. You navigate websites differently than a mobile app, don’t you? So it’s important to understand that it is not only the technology you have to learn — but also the technique.

Know the needs, know the limits

The tone we use talking about React Native may seem rather tepid, but it’s not like we think it is a bad solution — just maybe a little overrated for what it really is. If you know your needs and framework’s limitation, it may be a great technology for you.

React Native promises a lot. Reading about its assumed benefits may leave you really excited — one framework that allows you to create apps for both iOS and Android using good old Javascript, what is this witchcraft?! This may be the reason why so many people leave the framework disappointed — the expectations were set too high for what they actually found because they found a nice, open-source framework that allows them to create a simple app working on all devices, nothing more, nothing less. Attempts to create something that can compete with complicated, native applications fail miserably, as React Native simply can’t handle this. It’s not even that you can’t create something pleasant — it depends primarily on your skills — but with every additional feature you may notice that the app runs slower and slower, which makes creating big things in React Native pretty unprofitable.

To sum things up — enjoy the fun parts of React Native, because it can be truly a lot of fun, but remember that it won’t fulfill your dream about a hybrid in a native’s skin. It won’t dethrone neither Swift nor Java and Kotlin, it won’t end the native’s reign, it won’t save the world and cure global warming. If technology capable to mimic native seamlessly ever comes to live, be sure we will be first to rave about it.

You can find the full story on our blog

human-centric software design & development. check out our website: www.iteo.com