We are excited to announce the launch of our Android app on the Google Play Store. Booking and tracking your Shoffr rides just became even more convenient!
Why?
Apps are pretty much a standard these days, so the why is kind of obvious.
But beyond that, we had one very specific reason to build an app — trip notifications for guests. We have written here before of the anxiety guests have about cars being on time etc. We send SMS and email notifications containing driver details. But occasionally, we have to reassign the driver for a trip to keep it on track. We send messages for this too. But guests often get confused between the original message and the new one and call the old driver who is doing something else now. This creates a lot of tension. We wanted our guests to have a convenient way of accessing this type of information.
People have a much stronger affinity towards opening an app versus opening a website. So our new plan is to send push notifications for all trip updates which will take guests to the upcoming trip widget, which always has the latest information about driver, pick-up time etc.
Why Android first?
Our customer base is slightly skewed towards iOS users. So why not build the iOS app first?
For the somewhat embarrassing reason that Apple doesn't allow testing push notifications in a simulator and I didn't have a test phone at that time. This has since been remedied and we should have an iOS app very soon.
How?
Given that Shoffr is a one-man engineering shop, we thought hard about what the best way would be to build and evolve an app. We wanted to keep the app and website as close to each other as possible, while also giving the little native experiences that are only possible via apps. Eventually, we decided that we will wrap the website in a webview and that will be the heart of the app.
Then Param Aggarwal gave a genius idea. We already had a driver app which was quite lightweight and did pretty much the same thing (webview in app shell) for our drivers. He suggested that instead of building a new app, we repurpose the same one to load different things based on the user's roles and access. This would reduce two new "properties" (1 Android and 1 iOS) that we would have to maintain otherwise. We made it so, and this is why if you notice the package name of our app it is com.shoffrDriverApp.
We have used React Native to build the app because it had a shorter learning curve and the app is not heavy enough to merit extreme performance considerations.
On top of the webview wrapper, we started building the loading and the push notification integrations (using Firebase Cloud Messaging). Many npm installs and run androids later — here we are!
Evolution
We expect that the app will slowly become the main way people interact with Shoffr. This should add more traction to features like live car tracking and the upcoming trip widget.
In terms of new features, the sky is the limit, of course. We have a long list of features that we want to bring to the website (and consequently to the app now), but there are quite a few things we want to do with the app alone (e.g. rich, sticky notifications on the home page tracking the trip).
If you are an Android user, go give the app a whirl and let us know what we can do to make it more delightful. Bug/annoyance/WTF reports are most welcome.
