eBay

header_eBay-v3.png

Delighting engineers at eBay with Flutter

Success metrics

98.3%

shared code

70%

developers believe development is 2x faster than native solutions

100%

developers say they prefer over iOS or Android

Goal

For years, auto enthusiasts have relied on eBay to buy and sell hard-to-find cars, but there was no app experience exclusively for them. So in 2018, the eBay Motors team was asked to develop a new app for both Android and iOS, with a full feature set and the same look and feel as the main eBay app — all in under a year.

The team knew that with their limited size, building two separate native apps in that amount of time was impossible, so they searched for a cross-platform solution that could help them meet their deadline.

Why Flutter?

The team had heard a lot of buzz about Flutter, which had just released its first full version a few weeks earlier. Although eBay had been unimpressed by other cross-platform SDKs they had researched in the past, Flutter sounded like a promising alternative. Because the team needed to work fast and maintain a native feel, they were especially excited about Flutter’s time-saving and design capabilities, so they decided to give it a shot.

Their Solution

With their interest piqued, eBay spent a month trying to find gaps in Flutter’s capabilities. To their surprise and delight, Flutter was able to handle everything they could think to throw at it.

Encouraged, the eBay Motors team scheduled a series of workshops to ramp-up the Engineering team into Flutter. No one had any prior experience, so they registered for the Flutter Bootcamp from AppBrewery and hosted a series of hands-on workshops in-house.

Right from the start, the team was excited about Flutter. Everyone found the development experience much more fun, and they discovered it was much faster to build with Flutter than with the native tools they’d used in the past. For example, in native Android and iOS development, it can take several minutes for developers to see their code reflected in the emulator. With Flutter, it takes seconds.

They were also very impressed with Flutter’s out-of-the-box testing support, which greatly exceeded their expectations. They even decided to insist on 100% code coverage going forward, which they enforced by automating their pull requests.

And of course, the level of cross-platform code sharing was an enormous draw. Flutter allowed the team to share code for almost everything: the UI, business logic, domain models, analytics, network stack, and even the CI pipeline. There were also plenty of plugins to help them integrate the device APIs they’d need, and on the few occasions where the team needed to write their own, the work was done within hours.

Ultimately, the biggest challenge was just figuring out how to unify their Android and iOS teams, which had always worked independently. But with careful planning, they were able to come together as a single team, giving them a stronger and more consistent voice within the company.

“Flutter has not only met our expectations — it has dramatically exceeded them.”

- Corey Sprague, Senior iOS Engineer, eBay

Results

By dramatically reducing their development time, the eBay Motors team met every deadline in their production schedule. They launched a beta version within three months of the initial request, and released a full production app just a few months later.

Better still, the new eBay Motors app got great feedback from users — and it was a hit with the developers, too. In an internal survey, 100% of the developers on the eBay Motors team said they enjoyed Flutter development more than iOS or Android, and 70% said they thought it was “at least twice as fast.”

In fact, thanks to Flutter, eBay Motors now ships a new version of their app to both app stores every week, and has been able to add new features like live chat, escrow and community boards to both platforms at once. By bringing together their entire development team under one roof, they’ve also been able to save a whole lot of time. Now that their apps share 98.3% of their code, the eBay Motors app has a single source of truth — which means one set of meetings, one set of designs, one backlog queue, and one team to manage.

The increased speed has also allowed them to replace paper prototypes with functioning prototypes for user testing, giving them much more reliable results. And because the test automation is so robust, the team converted both their QA engineers into software engineers.

If you ask the engineering team at eBay Motors, they’ll say that Flutter has done more than just improve their workflow. It’s actually fundamentally changed the way the team operates, making them not just more productive, but happier and more excited about their work.