Could you introduce your app in a few sentences?
Ruk-A-Tuk is an open source mobile application for Ruk-A-Tuk Promotions, London's most innovative Caribbean-themed parties. Ruk-A-Tuk is available on the Play Store and the App Store. The app allows party-goers to keep up-to-date with "everything Ruk-A-Tuk" and will eventually even deliver unique features that are part of the live party experience. Ruk-A-Tuk is a hobby project of mine but I work closely with the Ruk-A-Tuk Promotions team to decide on features.
What made you decide to use/switch to React Native?
I wrote the original versions of the application about 4 years ago as native iOS (in Objective-C) and Android (in Java) applications. Last summer we decided to revamp the app and a re-write using a JS cross-platform technology seemed to me like the obvious choice, given the long list of pros:
- A single codebase to maintain and improve
- Support for live code updates to the app using technologies like CodePush
- I was really interested in trying out a modern cross-platform technology!
I considered building the app using Ionic Framework, NativeScript and React Native but chose React Native primarily because of its strong developer community and the flexibility it affords you in being able to use JS or purely native components and libraries.
How did you transition to React Native?
I'm primarily a back-end developer and do most of my coding in the .NET ecosystem so the transition to React Native was an interesting challenge but a relatively smooth one. React Native has pretty good documentation and a very strong developer community so there are lots of libraries, blogs and examples that help newbies to put an app together.
Have your tried other cross platform technologies before using React Native?
Yes, I've tried Ionic Framework and Xamarin. I think Ionic is just about the closest experience to pure web development that you can get with any cross platform technology and it makes it really easy to get an app up and running. Hybrid apps do have more limitations on the functionality you can have, however, and the deal-breaker for me was that it didn't support webviews within the app (at least not in Ionic 2). Xamarin is an easy transition for developers familiar with .NET but in my experience it was hard to find libraries, and resources to help learn it.
What has your experience been working with React Native in terms of app performance, have you noticed any impacts?
Ruk-A-Tuk is a pretty simple app in that it doesn't have any complex animations or views that manage a large amount of data so app performance hasn't been an issue so far.
How has adopting React Native affected developer productivity?
Comparing productivity using React Native to developing purely native iOS and Android applications, I think React Native has an advantage because of the quick feedback developers get with the Live Reload feature while debugging.
Which tools, libraries and frameworks are part of your development process with React Native?
I use Visual Studio Code with the React Native Tools extension as my IDE, build and debug environment. The app itself uses React Native Navigation as its backbone and React Native Config to keep sensitive credentials out of source control (pretty important with an open source repository!). App analytics and crash reporting are wired up to Firebase.
What resources have you used to learn React Native? Books, tutorials, courses etc. Anything you can recommend?
I mainly looked at other open source React Native apps to get up to speed. React Native Apps is a handy catalog of these.
What are some things that you don’t like about React Native or that need to be improved?
React Native is still evolving at lightning-fast pace and there are often breaking changes to the API. This can cause a lot of headaches if you take a dependency on a library that doesn't keep pace with the framework. Obviously this is a problem that will solve itself as the API stabilises but it can provide some challenges.
Anything else you would like to mention?
Ruk-A-Tuk is open source and available on GitHub. The API that the app uses is also open source and available on GitHub. All contributors are welcome! Also, if you're looking for a unique party experience in London or in the Caribbean - check out Ruk-A-Tuk Promotions in the app or at www.rukatuk.com!