Hi! I’m Sasha Putrov, a teamlead in React Native development agency. I’m here to share with you my experience of working with the framework — using real projects as examples.
No odes to Facebook, seriously. You won’t find here a word about how they turned over mobile development or anything like that. I came up with the idea to share my thoughts on React Native a year ago, and now want to update this right-to-the-point article to cover new React Native challenges and benefits — go read it!
Now let’s dig deep into the details.
React Native advantages
Shared codebase. In fact, you build two separate app versions (one for iOS, another for Android) with React Native. Two versions that share 65–70% of code.
The same codebase results in fewer bugs at the development stage (as the code is almost twice less) and makes an app easier to maintain in the future. This is cool for startups: the use of React Native saves extra days or even weeks that can be spent on other high-priority activities — marketing analysis, monetization strategy development, or planning future product iterations.
Almost native. Unlike other cross-platform technologies — like Cordova, Ionic, or Titanium that imitate the browser environment (where we get a responsive website that only pretends to be a mobile app) — React Native utilizes native APIs.
There are no issues when it comes to tabs and scrolling, and UI is as responsive as in a native app — no WebViews or alternatives behind it
Speaking of app performance that can be achieved with React Native, check out this example:
This is PAD, a real estate app that we’ve developed at Purrweb. React Native Swipe navigation looks the way as if we used Java or Swift to create it
There are tons of UI-kits and libraries that help you cope with performance challenges during the development stage — just like in any other good framework. The only thing: you’ll need to make sure a library you’re gonna use is frequently updated and supported by the community.
Speaking of the community.
Huge community. A big advantage is that the framework is getting more and more reliable librarieshttps://github.com/react-native-community — well supported, by the way — from the React Native community. And these libraries receive bugfixes and patches much faster. Cool, right? In addition, there is a repositoryhttps://github.com/react-native-community/upgrade-support where you can get help if something went wrong with an update.
Talking about the community: in the middle of 2020, the framework support team released a large patch with updates to all the documentation.
- New Getting Started guideshttps://reactnative.dev/docs/getting-started. Including documents that will explain what Native Components are to those having no mobile development experience.
- New Testing guidehttps://reactnative.dev/docs/getting-started. The team invited Vojtech Novak to create a new guide that introduces app developers to various testing strategies.
- New Security guidehttps://reactnative.dev/docs/security. Kadi Kraman helped to form a new security guide that explains the basics of security in a React Native. With illustrations. 🤘🏻
And more! Check out the details herehttps://reactnative.dev/blog.
It’d be strange if I didn’t mention Reddithttps://www.reddit.com/r/reactnative/. In this community, you can find a great number of threads related to React Native and experienced developers who are ready to help with any issues.
TypeScript support. Static typing = fewer bugs + hassle-free project support and the ability to build a template-based app. That’s why we use it on all projects — too beneficial.
Check out a few more benefits:
- Fast Refresh — greatly speeds up app development since almost any change in the codehttps://reactnative.dev/docs/fast-refresh#limitations entails instant update (re-render) without changing the state.
- Auto-linking for native modules — simplifies library installation. Non-Native devs don’t have to write imports, which greatly saves time.
- LogBox is a completely redesigned redbox, yellowbox, and logging experience. In 0.62 it was introduced as an opt-in, now it’s turned on by default. Why do you need LogBox? Logs are now formatted so that you could swiftly find the information you need to debug issues and move on.
That’s all fine and dandy but if I skip the part about React Native challenges, I’ll be like a door-to-door salesman. These guys sell third-rate stuff trying to pass it off as something unique. I don’t. It’s important to see things from different perspectives. And React Native is not an exception.
React Native challenges
Still young. It’s not version 1.0.0 yet, so there are some missing components and constant updates.
For a developer, the ‘immaturity’ of React Native means that they need to constantly monitor the newest RN versions and its libraries. You can’t delay a product for a year and then immediately start adding new features — you’ll need some time to update the framework.
Now the update process takes much less time than two years ago. Thanks to great services showing where and what exactly to change
Hard to adapt to all Android devices — there are too many resolutions and launchers. Actually, this sounds more like a problem of Android development than something related to React Native challenges.
Cases when it works best
To go React Native or not — the choice primarily depends on what kind of project you plan to develop. To sum things up, a brief overview of where this technology gets an A +.
React Native MVP. If you plan to test a business hypothesis with a fully-functioning and sexy minimum viable product, React Native is definitely the way to go. It allows you to hit both Android and iOS markets and quickly get initial feedback.
You might think: ‘Okay, I’ll create a React Native app. I’ll build my MVP using this technology — will it be awesome?’ And we’ll tell you, ‘Sure thing!’
As awesome as this event app system we developed at Purrweb. Just three simple steps to activate a guest’s wristband
Everything I’ve told you — including React Native disadvantages — is nothing but pure experience that I’ve gained from dozens of projects: current and those that had been successfully released and moved into the maintenance stage. I was, am, and always will be a supporter of React Native. Here I tried to give you the clearest picture of what we actually have. I’ve been honest with you, so hope you’ll get it. 🙂
I wanted the article to be useful for my colleagues too. Grab a list of must-have resources for React Native development:
- React Native template for a quick start with TypeScripthttps://github.com/react-native-community/react-native-template-typescript
- Upgrade assistanthttps://react-native-community.github.io/upgrade-helper/
- The best routing and navigation for RN
- Don’t forget about community support
- Service that allows to automate builds and connect your app to continuous integration and deploymenthttps://appcenter.ms/