Caribou Coffee

Caribou Coffee

Caribou Coffee migrates their app to a single codebase with Flutter

Goal

After seven years, Caribou Coffee’s mobile app was in need of a major update. The first iteration was written in Titanium and suffered from a high crash rate, clunky mobile experience, and shrinking developer community. It was rewritten in 2018 in both Swift and Kotlin to provide a native experience, but maintaining feature parity was very time-consuming. And after three years, it was becoming increasingly difficult for Caribou’s agile development team to maintain the feature experience and functionality between iOS and Android platforms.

To solve that problem, the team wanted a platform that was fun to use and easy to learn, had a growing developer community, offered popular SDKs for common SaaS providers, could integrate with platform-native functionality, and felt fast and natural to the end user.

Why Flutter?

The team did a comprehensive search for their new solution, reviewing Flutter alongside Quasar, Ionic, React Native, Xamarin, Kotlin Multiplatform, and NativeScript. They wanted something with plenty of real-world use cases, third-party support, a high-quality developer experience, and good documentation, among other criteria.

After a month-long review process, which included building demo apps on each framework, Caribou chose Flutter for its multi platform capabilities, flexibility, and developer efficiency. The team also liked Flutter’s seamless integration with the other Google tools they already used, including the Firebase SDK and platform to track and measure their mobile app usage and Remote Config for mobile features.

Their solution

Caribou invited Objective C, Kotlin, and JavaScript developers to get involved in the "launch" of their journey to Flutter. Initially, they worried that adopting Dart would be a challenge for some of their developers, but everyone was able to understand it quite easily. The team was able to quickly get prototypes working, and their existing CI/CD pipelines adapted nicely to the Flutter build process. So over the next few months, the team rewrote the Caribou Coffee app in Flutter, using a single codebase for both the iOS and Android apps.

“Flutter's single codebase gave peace of mind to everyone involved and brought our mobile teams together.”

- Ben Alman, Lead Software Engineer, Caribou Coffee

Results

Migrating to Flutter allowed Caribou’s designers and developers to start working together. The team credits the Zeplin style guides for enabling more effective conversations and decisions between the teams.

Thanks to Flutter’s single codebase, all of Caribou’s developers are now able to work on feature creation. Before the migration, 50% of the team was dedicated to maintaining feature parity.

Based on their success, Caribou plans to continue using Flutter to enhance their app. Next, the team is excited to use Flutter to bring Material You into the app, add privacy-respecting location awareness to enhance the drive-thru experience, and make it easier for friends to customize their drinks separately but purchase together.