Could you introduce your app in a few sentences?
React Native Starter Kits are premium React Native boilerplates for iOS and Android. The goal is to provide developers with 80% of the work needed for their next app. That can also include backend integration with Firebase. Many use cases are covered, such as a social media app, a productivity app, a listing app, a music app, and so on.
Each template is kept up to date with the latest best practices in React Native development. Being a software engineer at heart, I try my very best to provide the best code quality possible. For instance, heavy static analysis is used on the source code, as well as strict type checking.
A typical example is the Airbnb template. I met many people who want an Airbnb-style platform for a particular vertical. Maybe it's the Airbnb of sports or cosmetics. By getting the starter kit, they can get a fully functional prototype for iOS and Android.
What made you decide to use/switch to React Native?
Secondly you can test, publish, and update your app in a manner that is identical to the way we do it for the web. And to have deployment models which are the same as the ones we use for the web can have a substantial impact on your development cycles.
How did you transition to React Native?
Before my first React Native project, I had some experience with React but not too much actually.
Have your tried other cross platform technologies before using React Native?
Before React Native, I had experimented with Apache Cordova but I never got excited about it because it doesn’t allow you to build truly native experiences on the phone.
What has your experience been working with React Native in terms of app performance, have you noticed any impacts?
In order to maintain good performance in your app, I found Android testing to be quite important. Especially on devices with small computing power. Test an Android and test early. Regarding animations, I found that always using
useNativeDriver: true to be quite important in order to provide consistently smooth experiences. And that you should limit your native to what is only possible with the native driver.
How has adopting React Native affected developer productivity?
I find the developer productivity to be dramatically increased with React Native. First because you can update your app over the air. And you can also leverage tools like Flow or TypeScript to catch errors early and refactor your code with confidence.
Which tools, libraries and frameworks are part of your development process with React Native?
I consider Expo to be a must have tool. It packages the best native modules from the community such as react-native-maps and react-native-svg as well as contributing high quality libraries that can only be found in ExpoKit: Filesystem API, Video API, and Audio API just to name a few. If your app dependencies just depend on ExpoKit, you can have your entire development process done from start to App Store publication without even opening XCode or Android Studio. Expo will build the app binaries for you. If you do have other native dependencies in your app, Expo is still incredibly useful. First of all, you will benefit from all the high quality modules that we mentioned above. Secondly, Expo provides a convenient way to distribute updates over the air as well as a way to setup different distribution channels.
There are two great free IDEs for React Native development: Atom IDE and Visual Studio Code. For paid options, WebStorm from JetBrains seems to be the most popular option. I personally use Atom.
What resources have you used to learn React Native? Books, tutorials, courses etc. Anything you can recommend?
The official React and React Native documentation is great. Medium is full of amazing stories on React Native. Sometimes searching into React Native’s source code on Github can help a lot as well.
What are some things that you don’t like about React Native or that need to be improved?
Right now, React Native support for iOS is way better than its Android counterpart. It would be great to see the Android support of React Native improved and have a little bit more Android-first API available.