Could you introduce your app in a few sentences?
Swish is an ad-free, open-source app for all of your basketball needs. Swish provides up-to-the-minute game stats, immense team and player stats, live play-by-play, detailed league leader information, and conference standings. Since the code base was made with React Native, Swish can be run locally on both iOS and Android.
Swish is a personal app of mine. I started writing Swish in the Summer of 2016 (then known as NBAreact). I was beginning to look for internships and needed something that would stand out on my resume. I took my love for basketball, picked up this interesting library I discovered one day on GitHub (React Native was at v0.27 when I started), and started working on an app.
What made you decide to use/switch to React Native?
I decided to use React Native because at the time, I was teaching myself JavaScript and had been playing around with a few tutorials for React when I stumbled upon React Native. I decided to try it alongside React since I was blown away that you could create a mobile app, for iOS and Android, from one code base (no need to write your entire app in Java and Swift) with JavaScript.
Have your tried other cross platform technologies before using React Native?
I have worked on a seperate app that uses Cordova.
With Cordova you aren’t getting a native app like you’re getting with React Native since Cordova wraps a HTML app into a native container. As a result, the app doesn’t quite have that expected mobile feel to it.
What has your experience been working with React Native in terms of app performance, have you noticed any impacts?
I have not noticed any problems so far.
How has adopting React Native affected developer productivity?
I’m currently the only developer working on the codebase and can say that I have been very happy with what I have been able to create. Hot reloading has to be one of my favorite features from developing with React Native. Saving my code and seeing the changes made almost instantly without having to rebuild the app really speeds up development and saves a lot of time. Initially showing Swish off to some friends, they were amazed that the app was written in JavaScript and how smooth it was. Getting that positive response is motivation for me to continue adding new and exciting features for future updates.
Which tools, libraries and frameworks are part of your development process with React Native?
Tools
- Visual Studio Code as my editor
- CodeClimate to help me find where I am rewriting similar blocks of code that can be refactored
Libraries
- Redux and Redux Logger
- React Navigation
- React-Native-SVG-Charts
- Modified implementation of nba.js
What resources have you used to learn React Native? Books, tutorials, courses etc. Anything you can recommend?
I learned React Native mostly by reading the documentation.
What are some things that you don’t like about React Native or that need to be improved?
I don’t think I have encountered that many problems that would leave me disliking React Native. An annoyance that I’m sure every developer using React Native has encountered is the “Module does not exist in the module map Red Screen” described in this Github issue. As React Native continues to develop, I would also love to see more “official” API implementations for native modules rather than relying on an external implementation that may be abandoned after so many months. One last thing that I would like to see is a better navigation solution. Right now the two big libraries that come to mind are React Navigation and React Native Navigation. Both have their pros and cons, but I would much prefer having a baked in solution that will be officially supported for both iOS and Android.