Could you introduce your app in a few sentences?
Our app idea came from an existent problem. If you’re using an Android phone and ever needed to scan a QR Code you will understand our pain. There are so many scanners in the store that have poor build quality and tons of ads. One day, this question was raised within our team and we decided to create a best-in-class app for scanning and generating QR Codes. So basically, that’s what our app does: it can scan QR and barcodes, store them in history, generate different types of codes (event tags, contact cards, wifi-code, etc.) and allows users to perform quick actions after scanning codes (like making a call or saving events into a device’s calendar right away).
We’ve built an app for both iOS and Android as an open source project within our company Insider Development.
What made you decide to use/switch to React Native?
Within the team we have experience with different technologies. Some of us started from C++ and were developing apps with Qt framework. Some of us know Swift/Kotlin. But we are mostly familiar with JavaScript and once we’ve tried React Native about 3 years ago, we understood that RN is the tool we want to use to develop mobile apps. It significantly increases iteration speed, improves developer experience and brings only a few tradeoffs (almost all of them can be addressed if you have native development experience and can develop native modules).
And one of the most important reasons for us for choosing React Native is the community and the fact that it’s backed by Facebook. In our opinion these 2 points will lead to React Native's success as a framework.
Have your tried other cross platform technologies before using React Native?
Yes, we’ve tried a few: Ionic and Flutter.
When I was trying Ionic, it was just packing your HTML/JS files and opening it inside the full-screen web view. It was painful for users and developers. The performance is far from that of native applications. And the development experience is way below expectations.
Flutter looks promising currently and we are trying to adopt it within a team. Not so much luck so far because of Dart, it’s a bit painful to write Dart code, especially after React :) Flutter’s performance is great, but we don’t like the fact that it has its own rendering system and doesn’t utilize native components as React Native does.
What has your experience been working with React Native in terms of app performance, have you noticed any impacts?
A lot of React Native performance issues are related to poorly written code and might be avoided.
One of the most common performance issues happens when navigating between screens using React Navigation, because this library is performing all the animations in JS thread and may slow down the application (it can be avoided by restructuring screens and moving complicated render phase to post-render time or by using React Native Navigation built by wix which creates native screens for each JS screen).
Also, an important issue is the app’s startup time, which can take a few seconds. But can be improved by implementing RAM bundles and inline requires.
There’s an amazing article in RN documentation about performance
How has adopting React Native affected developer productivity?
Developers are happy with React Native! Those who came from the native world are happy about hot-reloading and live to reload, you don’t need to wait minutes for the app to rebuild to see the result of moving a button one pixel left.
And overall JS development experience can’t be better. With the huge community and lots of modules, tools, and services.
Which tools, libraries and frameworks are part of your development process with React Native?
We’re mostly using VSCode to write React Native apps. We like how extensible it is and how well it works while debugging RN apps. And plugins like ESLint, Flow and Prettier made our life much easier. Also, we’re using Reactotron which helps during debugging.
We run all JS-related checks (ESLint, Unit tests) against pushes and pull requests using TravisCI and automate our delivery using AppCenter. AppCenter builds our apps, delivers to test devices and then if approved distributes to the stores.
We’re using Detox for automating E2E tests and run it on CI before every release to verify that we didn’t break anything important.
What resources have you used to learn React Native? Books, tutorials, courses etc. Anything you can recommend?
It was more like “build something to learn”. We read through the docs, then started building the first app. Then read the docs once again much more thoughtful and rebuilt the first app from the ground up.
Also, we learned a lot from the source code of Facebook’s first open source React Native app: F8 conference app.
And now we’re trying to be a part of the React Native community, follow and participate in discussions to understand the current state of React Native. If you don’t yet know, there are repos with all updates on React Native: Discussions and Proposals, Releases.
What are some things that you don’t like about React Native or that need to be improved?
I think almost all our concerns are mentioned here and it’s great to know that Facebook’s team is aware of them and have plans for fixing them. We’re generally so impressed by Facebook’s involvement in the community.
Anything else you would like to mention?
We are a team of professional mobile developers from beautiful Minsk, Belarus. If you want us to help you with your apps or just want to talk, drop us an email at hi@insider.io. Or go check our website: insider.dev
Help us improve our app by contributing at our GitHub