Could you introduce your app in a few sentences?
Feline is an open source mobile client for Product Hunt, a website for discovering new and trending products. Feline is now available only on the Play Store, but technically it’s a cross platform app and can run on both iOS and Android, thanks to React Native. Feline is one of my favourite hobby projects and I have spent quite some time on designing and developing it. I was an avid follower and fan of Product hunt, back when I couldn’t find any Android client for Product Hunt that met my requirements, so I decided to make one myself.
What made you decide to use/switch to React Native?
2 years back, when React Native was getting a lot of hype and attention, I was very curious about it and was eager to give it a test ride. After trying out some of the basic components I was very much surprised that it was almost identical to a native application in terms of performance, which was something I never expected from an app developed using web technologies. I did my research, decided to go under the hood and was awe inspired by understanding its concepts and realising what it was capable of. It was pretty clear that React Native was there to stay and is not just a hype, It was nothing like what I had worked with before.
When you’re building a mobile application, you can either go for a native app, where you require skill in the platform specific languages and also huge effort and time compared to a cross platform technology like Cordova, Ionic etc. But it was worth to develop in native languages because the cross platform applications built using web technologies couldn’t catch up with the native apps in terms of performance. React Native was the best of both worlds, you have the flexibility and simplicity of web technologies and have performance on par with native applications.
When I started ideating Feline, React Native was the best option for me.
Have your tried other cross platform technologies before using React Native?
All cross platform / hybrid technologies have their own merits and demerits, but at the end of the day I personally prefer React Native because of its superior performance and UI rendering capability. A smooth and fluid UI experience is a key factor for any mobile application and out of these technologies, React Native does it the best.
What has your experience been working with React Native in terms of app performance, have you noticed any impacts?
React Native is almost as good as a native app in terms of performance. Unlike some other technologies, React Native applications leverage the UI libraries of its host platform in Objective-C / Swift (for iOS) or Java (for Android), thus rendering the actual native UI components and not just web-views, which results in superior performance and a native application experience. But its not just performance that has made React Native special. It’s simple and easy to learn, you can have faster development cycles, you do not have to wait for your app to build, you just hit command + R and instantly all your changes are reflected in the app. Also, React Native is designed such that it is possible for you to write native modules and have access to the full power of the host platform thanks to the bridge. Most importantly, learn once, write anywhere; The same set of engineers will be able to build applications for whatever platform they choose, without needing to learn a fundamentally different set of technologies for each.
How has adopting React Native affected developer productivity?
I feel React Native has empowered both web and mobile developers. It has made them more capable and productive. It has also helped many organisations in terms of faster product iterations with less man power and effort. And the best part is that web and mobile developers can both contribute to the deployment of mobile applications without worrying about performance. It has opened up a whole new world of opportunity to all developers because of simplicity and smaller learning curve. Forgot to mention the best part, it’s open source. I’m a huge fan of open source software. :)
Which tools, libraries and frameworks are part of your development process with React Native?
I use WebStorm and Visual Studio Code with Vim as my IDE, both are very good. Feline is built using MobX, which I highly recommend, I felt Redux was just too much for a small app like Feline and MobX is equally capable.
Apart from that we have React Navigation for navigation bar, Fabric and Bugsnag for catching errors. I’ve also used Fastlane for managing deployments. I also use JS.coach to find components and boilerplates etc for React and React Native.
What resources have you used to learn React Native? Books, tutorials, courses etc. Anything you can recommend?
What are some things that you don’t like about React Native or that need to be improved?
Anything else you would like to mention?
Feline is open source and its available on GitHub. If anyone is interested in contributing, I’m more than happy to welcome them. Just clone and send the pull requests. You can check my other open source projects here.