Could you introduce your app in a few sentences?

KCards is an app which helps you convert your existing paper based business cards to electronic cards which users can share easily with others via Whatsapp, Twitter, Instagram, Email and many more.

It comes with the feature of Analytics, which enables the user to see the activity on its card profile, and gives him/her the idea about the reach of his/her card.

Another feature, Timeline, maintains a record of the user’s card sharing activity.

Moreover, this app is fully optimized to function offline as well as online without any hassles. Thus, not limiting the user’s sharing, with or without internet access.

The app is available for both, Android, and iOS.

What made you decide to use/switch to React Native?

My decision to use React Native was based on the features this amazing framework has to offer. Building beautiful user interfaces and experiences has never been easier before. React Native combines the best of both Web and Native Mobile Development, giving developers the freedom to customize things easily, as per their requirements.

If you haven’t tried React Native before, I strongly suggest looking into it.

How did you transition to React Native?

I was looking for a mobile development framework to play around with, a few years back because I personally found it hard to develop good user experiences with native Android development. It was then that I discovered React Native and have never looked back since. I transitioned to React Native mainly because I was pretty comfortable with React and JavaScript. Since the first day, I was hooked. Also, the React Native Community is very strong and helped me with the issues I encountered along the way.

Have your tried other cross platform technologies before using React Native?

Yes, I’ve tried Ionic in the past. It is also an amazing framework but I required something more on the native side, hence I switched to React Native.

What has your experience been working with React Native in terms of app performance, have you noticed any impacts?

I’ve had a very good experience with React Native so far, especially after upgrading to the latest version 0.59.x which improved Android performance by a lot, making it similar to that of iOS.

Few of the important things that I learned along the way which were an important factor to performance were things like using native driver in animations, using pure components to prevent unnecessary re-renders, and always double checking your asynchronous side effects that may reduce the performance of your app.

How has adopting React Native affected developer productivity?

Using React Native has improved my productivity by quite a lot, because it’s easier to build great user experiences using React concepts. And now since React Native also has official TypeScript support, it makes our apps more typesafe and less susceptible to errors.

I personally use Visual Studio Code because of all the extensions it offers for React Native. I am a big fan of Redux for state management, along with react-navigation as my goto navigation solution.

I think ESLint is a must for every React Native or any JavaScript app in general, as it provides consistency to your codebase.

For Debugging, I use Reactotron which is a great tool to keep track of all the async actions and much more.

I wholeheartedly encourage developers to try Microsoft’s App Center. It is simply amazing and saves a lot of time. It helps me directly ship my builds to the app store for production and testflight in one single click.

What resources have you used to learn React Native? Books, tutorials, courses etc. Anything you can recommend?

I recommend going through fundamentals of React first as they’re directly applied in React Native.

I would like to suggest following the official React Native repository and engaging in discussions, or even proposing new improvements/features, in the Discussions and Proposals repository.

Also, one can check out the React Native - The Practical Guide course by Maximilian Schwarzmuller as it is an amazing course that I took when I started learning React Native, If you feel like you have the basics down then I suggest following William Candillon and his, Can it be done in React Native, youtube series.

Since React Native has an amazing community, I’d also recommend checking out React Native Apps repository to learn from some of the best apps made with React Native.

Lastly, I would like to encourage new developers to join Reactiflux Community on discord and r/reactnative subreddit to keep up to date with the latest news in React Native Community.

What are some things that you don’t like about React Native or that need to be improved?

Definitely the Developer Experience that React Native offers has to improve. I’ve seen a lot of people giving up on learning React Native due to bugs and bad first impressions. React Native can definitely improve in the things like hot reload, more informative errors and better native module support, though the React Native community and React Native Team at facebook are constantly working to fix these issues in the future releases.

Anything else you would like to mention?

Thank you so much guys for giving me an opportunity to share my work. Check out KCards if you think it can help you.

Currently I am working as a freelance developer and helping people with technologies like React Native, Node JS, GraphQL. Feel free to reach out to me at karan.pratapsingh686@gmail.com or via my portfolio.