We are shipping React Native GasBuddy

Max Metral
5 min readMar 17, 2022

I wrote an article more than a year ago about GasBuddy experimenting with React Native and another a month later announcing that we were really going to do it. So we set off on the honeymoon period that is “building from scratch” and all the architecture decisions looked brilliant and the code flowed freely and the business was suitably impressed at how we could move pixels around in seconds and write automated tests and use Github Copilot and all the other things.

In summary, React Native will allow GasBuddy to move significantly faster to deliver features and integrations to our consumers that will save them money on fuel. We have given out more than $20 million in discounts and GasBack, and processed more than $1 billion in payments through our GasBuddy payment card as well as receipt-based deals. The app also helps you get better prices in your area, which typically has a spread of more than 60¢ between the most and least expensive stations in a two mile radius even before the discounts we provide. GasBuddy is crowdsourced — perhaps one of the most successful crowd sourced data products ever (Wikipedia being miles bigger and more important), and sometimes I think people expect that building and running the app is easy and done by a few folks in a garage, but it is not. We’ve employed more than a hundred people at our peak, doing everything from advertising sales to building predictive models for fuel prices. We spend tens of thousands of dollars per month on AWS hosting and services. So the savings that a single platform will provide for us are meaningful.

Once or twice a year some external event (pipeline crisis, hurricanes, despots invading sovereign nations) causes a massive spike in the usage of GasBuddy. We were the #1 app in the app store for almost a week because we can help people find out which stations still have fuel and power in these situations. We have to adapt quickly to the peculiarities of the situation — but typically we could not do this with app changes because of the timeframe required to get changes implemented on three platforms (iOS, Android, Web) and through the various approval processes on mobile platforms. With React Native, we will have significantly more flexibility to react to changes both with reduced development effort and the ability to push minor updates to the apps without full binary releases.

Hold Up… Heeeeyyy

…(to the tune of Next Episode) A few months into the effort we began a fairly long process of the GasBuddy business being acquired. For anyone who has been through an acquisition (I’ve been through 4 now, so I knew what to expect), it can feel like it will never close and that anything you do could blow the whole thing up. It was very clear to me there was simply no upside in releasing our React Native app during this period. We could demonstrate the “realness” of the architecture with an app people could touch and feel on their phones, we could get credit for the unquestionable process improvements that a single code base would deliver and that a company-wide focus on a single language (ish — Typescript !== Javascript) would provide. Releasing it would force us to own all the unavoidable problems of a major release, especially in React Native. Three year old Android phones would struggle, and those users would be vocal. We had (and still have) cut some features that had few users, but possibly passionate ones. We will likely have higher crash rates for a while because there is no replacing real world experience with an app with 100 million downloads. Basically there was no benefit in a release, only risk. Additionally, most of the company was not aware of the acquisition until much later because these things have a way of going wrong, and we didn’t want to unnecessarily disappoint people should the deal not happen (The Netflix No-Rules-Rules crowd may disagree with that, and I am of mixed opinions on it).

I imagine it looked like the project might fail in those spring months because there just wasn’t a lot of progress or urgency. We definitely still had plenty of work to do so we would benefit from the extra time. GasBuddy was acquired by PDI Software in late April. Again, if you’ve been through an acquisition before, you know that it takes months to digest an event like this. Meeting new people (in a time of COVID no less), learning new processes, understanding the new compensation environment and watching some of your coworkers leave the company are all incredibly jarring. Which is to say we didn’t make a ton of progress around that time. As we rolled into the fourth quarter, we were refocused but also trying to close out our year and hit our various targets, so again the risk was higher than the reward. We were also launching another big part of our product, the GasBuddy Mastercard which is a credit-based version of our bank-linked card that has over a million enrollments. We’ve opened the doors to the public on the GasBuddy Mastercard as of March 1st, though there is lots more work to be done to properly integrate the card experience into the app.

Go Time

Finally, we turn our eye towards pushing this massive rewrite on a new platform out to our millions of loyal GasBuddies. As of today, you can download our public beta on iOS or Android. We are currently using ShakeBugs, which we love, so if you run into a problem, shake your phone while using the app and it should bring up a form to tell us what went wrong. That’ll go straight into our JIRA board and Slack channels, so it’s going to be interesting to see how long we can handle that.

Our goal with this first release is to just do what the existing app did, for better and worse. We did this for a number of reasons, but mostly to try and reduce the jarring nature of the change to customers. We have lots of improvements to make going forward, but are currently focusing on stability and core use case performance (report a price, search prices, become a GasBuddy, get Deal Alerts, and get a payment card). We are hoping that we are fully rolled out in March on both iOS and Android, but obviously that depends on how this initial release goes.

There is no way I’m taking a victory lap here, but this has been more than a year’s work in the making and includes the efforts of the entire team here at GasBuddy as well as a handful of phenomenal engineers from Infinite Red. The theory that IR would help us both make progress on development and train our team was proven out spectacularly. There is no substitute for experience in getting the “idiom” of React Native and avoiding the numerous dark alleys around state management, performance tuning and third party module selection. Our team at Infinite Red (who shall remain nameless to protect them from LinkedIn spam) has provided this throughout our project.

As my good friend DJ Bruno says, let’s go let’s go.

--

--

Max Metral

Serial Entrepreneur. Father of 3. Currently CTO of GasBuddy.