How Ibotta makes every purchase rewarding
Ibotta is the largest Denver-based consumer technology company that allows users to instantly and conveniently earn money back on different types of purchases — all through a mobile app. The company partners with over 500 popular brands, such as eBay, J.Crew, Hello Fresh, and Uber, in order to offer cash back to their users, similar to traditional coupons or rebates. This way, every time users go shopping, they can save money — not only at their favorite retailers but even when they travel or dine in a restaurant.
The Ibotta app — available on both iOS and Android since 2012 — is one of the most widely used shopping apps in the United States. Famous for its user-friendly, quick, easy to use, and secure nature, the app has more than 30 million downloads and has been featured as an Editors’ choice on Google Play.
The Wild West of app development history
Ibotta started as an app company in 2012 — the era now considered by the team as “the Wild West of their app development history” — with a single developer for both iOS and Android platforms. The only process that existed at that point was for Git/GitHub, and was focused on handling version control/hosting. In the beginning, their highest priority was shipping features as fast as possible, so code reviews and writing unit tests were not yet part of the process.
Their first experience with CI/CD was when they started using Jenkins in 2013 to build their public release artifacts, and later introduced it into their workflow and integrated into their pull request process. As the team began to grow more rapidly, they started having concerns about a potential decrease in quality: in some cases, the Jenkins machine would begin failing to build and manual intervention was needed, occasionally taking several hours to debug. Not only did this take valuable time away from development, but manual maintenance wasn’t something the team was comfortable dealing with in the long run.
In 2016, a paradigm shift happened regarding the team’s philosophy on quality. Code reviews and unit testing began to evolve into something they heavily relied on, and it became apparent that it was time to find a different CI/CD solution that would suit them better.
A mobile-specific solution with easy setup & extended feature set
When Ibotta began their search for a new CI/CD solution, they had no knowledge of Bitrise, but — since it turned out to be one of the top results in online searches for such tools — it ended up being one they definitely wanted to try out. The reason Bitrise initially caught their eye was its mobile-specific nature — they were specifically looking for something that would make their mobile teams’ lives easier, and such a solution seemed like a perfect fit for them.
They ended up doing a trial run between Bitrise and a few other solutions, such as Travis & Circle CI. The easy setup, overall better user interface, and extended feature set soon became the foundation of Ibotta’s love for Bitrise. The first goal was to match the functionality level they had been getting out of Jenkins and much to their surprise, replicating it with Bitrise took less than a week.
The Ibotta team’s build logic is represented in their most used step, Script, while the build flavors are encapsulated by fastlane, which is called within Script. Since their release process has to accomplish several tasks, they use a single script step to clone their automation script, configure the local environment, perform Git tasks, and run the release script as well.
Full automation, low crash rates, and more builds
“Not only did Bitrise make the initial implementation a breeze, but its tools allowed us to build our workflow in a super reusable way.”
Vince Delricco, Android Engineer @ Ibotta
Having the assurance that every merge they make has full unit test coverage, and knowing that the resultant merge will build successfully has truly made a difference in their mobile team’s quality of life. Between Android and iOS apps, Ibotta now runs an impressive number of builds — roughly 700 per week. They have also managed to introduce automation to most of their processes, further simplifying their workflow and saving time for their developers.
Besides this, their crash rate fell to an incredible 0.3% due to the testing automation that Bitrise has provided for them, and the team has also succeeded in fully automating their public release process. Previously, it needed to be performed by at least one person, but now this responsibility is solely handled by Bitrise. After all, there is no bigger relief for developers than being able to send artifacts to the desired place with no delays — all at the press of a button.