HiFi

Concerts on the fly

Could you introduce your app in a few sentences?

HiFi began as a passion project to help find nearby concerts. Back in January I was living in New York City, where a friend of mine was seeing at least four shows a month. I considered him to be a “concert junkie.” At the outset HiFi’s target audience fits this description. It is made for concert junkies and is available on both iOS and Android devices.

HiFi curates concerts based on artists you follow. It uses the Seatgeek API for concert listings and will soon include Setlist.fm’s API for setlists. HiFi includes the map, calendar and search screens for easier show discovery. Hopefully this will help those concert junkies missing out on their favorite bands!

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

Before React Native, my mobile apps were written in Swift. Swift is a beautiful language, but it’s strongly typed nature allows for less flexibility. Definitely recommended for those learning to make apps. I was able to land my first gig out of school with seven Swift apps.

Other cross platform tools, such as hybrid apps lose the animations that native apps offer. Animations add a unique touch to components, especially animated screen transitions. React Native introduces animations for smooth layout updates on both iOS and Android. To turn away from the Swift sandbox my next decision was to learn React Native.

How did you transition to React Native?

It all started at my first gig in New York City, working with a team of frontend and backend engineers. We were able to create a cross-platform music streaming app, called “Playlistt.” We never launched Playlistt, and yet my React Native skills sharpened for a year.

This transition started with learning about components. Like a set of Lego blocks components are for abstract design. Next was learning layout with flexbox and then the persistent redux store. After building with React Native for a year, I had enough experience to work on my own cross-platform apps.

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

Not so much, as most of my previous apps were written in Swift. Hybrid apps tend to feel like a copy-pasted web template.

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

Learning a new coding language can be a long process, and yet the trip to cross-platform apps was worth it. In React Native, some scenarios depend on native modules. Take for instance HiFi, which utilizes Spotify and Facebook login. Building with native modules requires experience with both mobile platforms. As someone, who prior to React Native only made apps with Swift, this was a challenge.

How has adopting React Native affected developer productivity?

It’s been a storm of discovery. Cross-platform apps have been an exciting turn away from the Swift sandbox. Making custom components using standard web libraries speed up the process. JavaScript doing the heavy lifting makes for an abstract process.

Which tools, libraries and frameworks are part of your development process with React Native?

Fabric.io acquired a service called crashlytics, which allows for distributing beta builds on iOS and Android platforms. Before launching apps, I like sending invite links to friends for feedback. Thanks everyone!
Redux-Remote-Devtools helps me track the current redux store state.
Sublime Text 3 and ESLint can help make up some time spent typo-checking.
I really enjoy using React-Native-Paper for it’s material card components.

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

Jason Brown writes excellent react native tutorials at codedaily.io.
Spencer Carli records helpful React Native tutorials over at
handlebarlabs.com and on YouTube.

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

React Native offers a lot under the hood, but native modules are a challenge. This is not a deficiency of React Native, since Expo handles most of the build process. Outside of Expo, building native modules requires some knowledge of both platforms. At times when native modules are needed, I would prefer to build native apps.

Anything else you would like to mention?

HiFi has been a deep dive into cross-platform production. Any ideas or your feedback would be appreciated, feel free to drop a line on twitter via @mbstroms or via email: mbs480@nyu.edu
If you are curious about my Swift apps, here they are: michaelstromer.com.