Could you introduce your app in a few sentences?
Tour is a revolutionary trip planning app with an intense focus on UX spearheaded by a proprietary drag & drop planner interface. Tour was created to make planning trips easier for every traveler. Currently, the beta is only available for iOS, with the App Store release on the horizon. The Android version and a webapp are soon to follow. I co-founded Monos Digital with my long time best friend to build and launch Tour.
What made you decide to use/switch to React Native?
Well, I didn’t choose React Native, React Native chose me. When we came up with the idea for the drag-drop based planner, being new to software development, I only had experience with React and React Native, so I chose to build the initial demo with React Native and it built off of there.
To why I continued building it with React Native rather than other cross platform frameworks like Cordova I believed impeccable performance and small micro-interactions are core to UX, which webview-based alternatives like Cordova or Ionic aren't capable of providing.
How did you transition to React Native?
Coming from a UI/UX designing background, it was pretty shaky to start off because I had little software development experience before but after playing around with it and bringing some of my existing designs to life made me a lot more comfortable with the top-down architecture of React and React Native. Now I even design my UI’s using the same structure as a React app.
Have your tried other cross platform technologies before using React Native?
None.
What has your experience been working with React Native in terms of app performance, have you noticed any impacts?
I’ve had a lot of run ins with processor-heavy computations and animations running into each other causing massive framerate drops at first. I’ve mitigated that by learning to structure my animations and the UI around animations that can run with the native driver (transforms and opacity.).
One example where I think I really nailed down app performance was the ‘anchor switching’ on the planner screen when you swipe between the map view and plan view. Everything that needed to be loaded on the planner would be processed before the animation, with the slide-up animation itself running on the native driver, and any processing that isn’t needed right away is run after the slide-up animation is complete.
How has adopting React Native affected developer productivity?
React Native has made it extremely easy and fast to bring a feature to reality. The vibrant and fast moving developer community and support makes squashing bugs and transversing obstacles extremely easy.
Which tools, libraries and frameworks are part of your development process with React Native?
I develop with Visual Studio Code and my iPhone X on live reload.
Libraries:
- Flow for type checking.
- Jest for testing.
- Prettier for formatting.
- Eslint for linting.
- Code Push for releases.
What resources have you used to learn React Native? Books, tutorials, courses etc. Anything you can recommend?
Well, I learned JS and React with the full-stack JS track on Treehouse. For React Native I just read the getting started documentation and started tinkering from there. I usually don’t like to follow tutorials and prefer finding solutions to problems on my own via trial and error.
What are some things that you don’t like about React Native or that need to be improved?
Absolutely more support for native-driver animations other than the transforms and opacity if possible. Would allow for a lot more powerful interactions.
Anything else you would like to mention?
Shoutout there to all the people learning software development from scratch. You can do it.
Hit me up on Twitter @jennmueng.