How Flutter Has Fuelled Customer-Centric Development at BMW

BMW has one of the biggest Flutter development teams after Google’s, which makes it the perfect example of what can be achieved with the framework. Flutter, the open-source UI development kit from Google, has enabled BMW to forge ahead with the in-house development, rollout and continual optimisation of the My BMW app. The app forms a key interface between smartphone and vehicle and, as such, connects the user journey both in and out of the car. By using Flutter, BMW has been able to push forward with rapid expansion and a fast-paced rollout. 

What Did BMW Want to Achieve?

There is a huge demand for apps that can play into a digital, connected, mobile lifestyle. The result is that cars are no longer just vehicles to get from a to b. They have become more like smartphones on wheels, especially now that electric vehicles (EVs) are becoming more prevalent. Digital is woven into every inch of them, which means they need to stay connected. Apps that facilitate this are longer just a nice flashy addition, they are taking over simple functions like key location or monitoring charging of electric vehicles (EVs). Apps are able to solve user problems and take away the difficulties of driving or owning a car, giving users more security and safety thanks to increased connectivity. 

While developing for both of the major platforms, BMW initially focused on the iOS version of its vehicle companion app, then called the BMW and MIMI Connected apps. However, it soon realised that the discrepancies in feature and design had grown too large between iOS and Android. It needed to find a way to offer the same functionality to everyone regardless of the mobile operating system, brand or region. The problem was that it also needed to do that without rapidly increasing costs or slowing down the speed of development. BMW needed to create a platform that was developer-friendly, scalable and performant whilst enabling room for experimentation and continuous deployment. 

Why Did BMW Choose Flutter?

There was no way that BMW had the resource to double up the development team to cater for both iOS and Android. Hoeve, while it was clear that the company needed a cross-platform solution, there were some concerns that Flutter wouldn’t be mature enough to handle the scale of growth BMW needed. To counter this, the development team designed several proofs-of-concept across a variety of frameworks. Flutter came out on top, thanks to its:

  • Shared Business Logic and UI – while all cross-platform frameworks share code between platforms, Flutter takes this a step further. Flutter shares both business logic and UI and doesn’t require any specific UI components to render the UI. Developers don’t need to worry about UI consistency for various platforms, saving valuable time.
  • Near-Native Performance – Flutter doesn’t rely on any intermediate code or representation and is built into the machine code directly to eliminate bugs. The result is that Flutter app performance is almost indistinguishable from native apps.
  • Own Rendering Engine – with Flutter, developers don’t have to adjust the UI to transfer it to a platform, instead, they can use Skia to render Flutter onto a platform-provided canvas. With its own rendering engineer, Flutter greatly simplifies the development process.

How BMW Moved Forward with Flutter

The development team at BMW soon realised that with Flutter they could adopt a more flexible, domain-based organisational structure. Instead of concerning themselves with individual platform requirements, they split into teams based on purpose. Separate teams could focus on areas such as connection status, communication abstraction and the core platform while still leaving capacity for other teams to develop innovative new features. The project started by the team rewriting the many app variants for the different platforms, countries and brands. However, this time around, they only had to use a single codebase. 

The BMW app was launched in July 2020, less than a year after development started and is now established in almost 50 countries. The app provides a universal interface for every customer and a seamless experience between the phone, vehicle and larger digital world. Every time an update is made, it is automatically built, tested and deployed across all 96 app variants, covering all of the brands, markets and operating systems. By being able to build and design once, the team is able to move much more quickly without the worry of managing multiple codebases. The Android App, which was historically underserved, was greatly improved and now incorporates user feedback and usage behaviours. With Flutter, the team ensures consistency, while moving faster to delight customers. 

The Big Technologies Driving the My BMW App’s Success

The development team created the software platform for the My BMW app, known internally as Mobile 2.0 App Core, entirely in-house. It harnesses the latest technologies and features of an expansive technology stack. The data ecosystem uses components from many of the leading tech players. Microsoft Azure is used to create a development environment with continuous deployment and integration. Meanwhile, the app’s backend for frontend architectural pattern uses builds on platforms as a service (PaaS) that originate from Microsoft. 

The My BMW app was built with user-friendliness, safety and reliability in mind. While the app is  targeted at industry standards and technical standards, the team uses feedback and customer usage behaviour to consistently improve the available functions. The scalable universal architecture supports future requirements, ensuring that new functions and customer requests can be easily implemented along with constant updates and improvements. What’s more, the modular approach means that the app can be easily used for other BMW Group brands and is compatible with a swift broad spectrum of variants. 

Can Flutter Drive Your Next App?

Cross-platform applications are the way forward for most modern businesses wanting to save time and money while reaching as many customers as possible. With Flutter, developers can create attractive, intuitive apps that work seamlessly and consistently across all platforms, all from a single codebase. What’s more, with shared business logic and UI and its own rendering engine, Flutter further simplifies development, giving developers more time to focus on innovation and core customer needs.