Skip to content
Lu
BMW iX3 parked at an alpine overlook at sunset

BMW Design System

Same rules. One source.

I led a six-person design team and the BMW app design system, working across vehicle capabilities, market restrictions, and light and dark modes.

A look back at the decisions we made, and how I would evolve the system with AI today.

2020
Check each model in Excel
2026 · Proposed
Generate variants for team review
BMWDesign System2020 · Model × market

Every model.
Every market.

We checked each vehicle and market in Excel to decide which controls a driver could use. Where remote engine start was restricted, we omitted the feature.

A request could reach the server while the car was out of signal. Without a reply from the car, the app stayed on Connecting. The wait was a pain point.

ModelMarketControl
Component preview
New configurationSelect Climate to start the preview.
BMW Design System  /  Review desk · 2026 proposed

Bring every patch
back to the system.

I would link the Figma component to code, store model and market rules as data, and ask an agent to compare local implementations against the spec. The team would decide which patches become shared variants and which are retired.

Drift report

Main component

ClimateOff
Light

App B · Local patch

ClimateOff
Custom padding → Propose as variant
  1. One component, linkedFigma ↔ code via Code Connect
  2. Rules as dataModel × market → command
  3. Drift scanCompare each local copy to the spec
  4. Merge or retireReview each patch through a pull request
What the team still decides

The variants — which patch becomes part of the system.

The proposal would help us scale component review. An unreachable car would still need to reply before the app could confirm it was running.

In 2020, the system held the components. Now it has to hold the rules, and every patch has to come back to it.