Unabhängige Analyse basierend auf öffentlich veröffentlichten Berichten des Airbnb-Designteams, geschrieben für Personen, die eigene Systeme aufbauen. Identity Forge ist nicht mit Airbnb verbunden und wird nicht von Airbnb unterstützt. Airbnb und das zugehörige Logo sind Marken ihres Eigentümers.
Die Entscheidung, die alle übersehen
Im veröffentlichten Bericht des Designteams zum DLS wird die grundlegende strukturelle Entscheidung direkt benannt: Anstatt sich auf einzelne Atome zu verlassen, betrachteten sie Komponenten als Elemente eines lebenden Organismus – jeder mit einer Funktion und einer Persönlichkeit, definiert durch einen Satz von Eigenschaften, fähig, mit anderen zu koexistieren und unabhängig zu evolvieren oder zu verschwinden. Der genannte Vorteil ist der Verzicht auf ein komplexes Netzwerk aus miteinander vernetzten Teilen.
Dies ist eine Ablehnung von Atomic Design durch ein Team, das über die Ressourcen verfügt hätte, Atomic Design korrekt zu implementieren, und sich bewusst dagegen entschieden hat. Es lohnt sich, dies ernst zu nehmen, anstatt es als bloße stilistische Präferenz abzutun, da die Argumentation generalisierbar ist.
| Atomare Komposition | In sich geschlossener Organismus | |
|---|---|---|
| Eine Komponente ist | Eine Zusammenstellung aus gemeinsam genutzten, kleineren Komponenten | Eine Einheit mit deklarierten erforderlichen und optionalen Elementen |
| Änderung eines gemeinsam genutzten Buttons | Wirkt sich überall aus, auch an Stellen, die niemand geprüft hat | Ändert den Button. Jede Komponente besitzt ihre eigene Darstellung |
| Wiederverwendbarkeit | Maximal – das ist das Ziel | Bewusst, auf Ebene der Komponente |
| Duplizierung | Minimal | Teilweise, akzeptiert als Preis für die Unabhängigkeit |
| Plattformübergreifend | Schwierig. Der Atom-Baum muss auf jeder Plattform identisch existieren | Einfacher. Nur der Vertrag muss übereinstimmen |
| Fehlermodus | Eine Änderung führt stillschweigend zu Fehlern auf vier Oberflächen | Zwei Komponenten driften auseinander, weil es niemand bemerkt hat |
Generell ist keine der beiden Spalten korrekt. Die richtige Antwort hängt davon ab, welchen Fehlermodus man sich leisten kann. Ein Single-Platform-Webprodukt mit einem kleinen Team kann das Risiko der Fehlerfortpflanzung absorbieren und zieht einen echten Mehrwert aus der Wiederverwendbarkeit. Ein System, das iOS, Android, Tablet und Web umfasst, kann dies nicht, da der Atom-Baum identisch in Swift, Kotlin und dem jeweiligen Web-Stack des Jahres reproduziert werden müsste – was in der Praxis nicht geschehen wird.
Die Trennlinien-Regel
Ein Detail aus dem DLS-Bericht erklärt die gesamte Philosophie besser als die Philosophie selbst. Anstatt Trennlinien als eigene Elemente zwischen Komponenten zu führen, muss jede Komponente ihren eigenen Trenner enthalten, der über die View-Logik ein- oder ausgeblendet wird.
Betrachten Sie die Kosten der Alternative. Wenn Trenner zwischen Komponenten liegen, ist die Sichtbarkeit eines Trenners eine Eigenschaft der Liste, nicht der Zeile – die Liste muss also wissen, ob es sich um die letzte Zeile handelt, und zwar auf vier Plattformen, in vier Codebasen, einschließlich der Fälle, in denen eine Zeile bedingt ausgeblendet wird. Jede Listen-Implementierung setzt diese Logik neu um, und eine davon wird es falsch machen. Verschiebt man den Trenner in die Zeile, wird die Regel lokal: Eine Zeile weiß, ob sie ihre eigene Unterkante zeichnet, und keine übergeordnete Ebene muss die Position berechnen.
Die generalisierbare Regel: Wenn eine visuelle Eigenschaft vom Kontext abhängt, verschieben Sie diese in die Komponente und geben Sie der Komponente eine Möglichkeit, über ihren Kontext informiert zu werden. Verhindern Sie, dass jeder Container dieselbe Bedingung neu implementieren muss. Dies ist eine der wenigen Designsystem-Entscheidungen, die fast immer richtig ist.
Im selben Dokument wird vermerkt, dass die Elemente, die jede Komponente definieren, sowohl in der Sketch-Datei als auch im Code deklariert wurden. Das ist die andere Hälfte des Vertrags: Eine Komponente wird nicht durch ihr Rendering auf einer bestimmten Plattform definiert, sondern durch die Liste der Dinge, die sie enthalten muss. Sketch und Swift sind zwei Implementierungen derselben Deklaration.
Plattformagnostisch, mit benannten Ausnahmen
Das DLS wird als weitgehend plattformagnostisch beschrieben – die meisten Komponenten sehen auf iOS und Android gleich aus und funktionieren identisch –, während es bei einer kurzen Liste von Punkten bewusst nativen Konventionen folgt: Navigation, System-Ikonografie, kontextbezogene Aktionen und Interaktionen. Die Android-Navigationsleiste unterscheidet sich bewusst von der iOS-Leiste und verwendet ein anderes Icon.
Die kurze Liste ist der interessante Teil. Ein System, das eine totale Parität anstrebt, erzeugt eine App, die sich auf beiden Plattformen fremd anfühlt; ein System, das sich überall den Plattformkonventionen beugt, erzeugt zwei Produkte, die lediglich ein Logo gemeinsam haben. Das DLS zieht die Grenze bei den Elementen, die Nutzer vom Betriebssystem und nicht von Ihrem Produkt gelernt haben. Die Zurück-Navigation ist eine OS-Konvention. Eine Preiszeile hingegen nicht.
| Gehört zur Plattform | Gehört zu Ihrem System | |
|---|---|---|
| Beispiele | Zurück-/Aufwärts-Navigation, Share-Affordance, System-Icons, Scroll-Physik, Kontextmenüs, Tastaturverhalten | Farbrollen, Typografie-Skala, Spacing, Komponenten-Komposition, Inhaltsstruktur, Motion-Personality |
| Warum | Nutzer haben es vom OS gelernt, nicht von Ihnen. Ein Override kostet sie kognitive Ressourcen | Nutzer lernen es von Ihnen. Divergenz kostet Sie Konsistenz |
| Wenn man es falsch macht | Die App fühlt sich subtil feindselig an, und niemand kann sagen, warum | Die App wirkt wie das Produkt zweier verschiedener Unternehmen |
Im selben Dokument wird vermerkt, dass das System so aufgebaut wurde, dass identischer Code, identische Komponenten und Designs über verschiedene Gerätegrößen hinweg funktionieren, wobei ein kleiner Satz von Layout-Regeln die Transformation für Tablets übernimmt. Das ist dasselbe Prinzip, angewandt auf eine andere Achse: Behalten Sie eine Definition bei und fügen Sie Regeln für die Achse hinzu, die tatsächlich variiert.
Warum ein Vertrag die Übersetzung übersteht
Der rote Faden ist, dass die „Unit of Truth“ des DLS eine Deklaration ist, keine Implementierung. Eine Komponente ist ein Name plus einer Liste von erforderlichen Elementen, optionalen Elementen und Verhaltenseigenschaften. Swift, Kotlin, der Web-Build und die Sketch-Library sind vier Renderings dieser Deklaration.
Das ist der Grund, warum dieser Ansatz über Plattformen hinweg skalierte, während ein Atom-Baum-Ansatz dies nicht getan hätte. Ein Vertrag kann durch jede beliebige Implementierung erfüllt werden. Ein Kompositionsbaum kann nur durch die Reproduktion des Baums erfüllt werden – und in dem Moment, in dem das Framework einer Plattform dies erschwert, sucht jemand einen Workaround, und die Systeme forken.
Ein Vertrag kann durch jede beliebige Implementierung erfüllt werden. Ein Kompositionsbaum kann nur durch die Reproduktion des Baums erfüllt werden.
Das ist auch der Grund, warum das Modell auf eine Plattform anwendbar ist, an die 2015 niemand gedacht hat.
Der Agent ist eine weitere Plattform
Wenn ein Coding-Agent Ihre Benutzeroberfläche schreibt, tut er genau das, was das iOS-Team getan hat: Er rendert Ihr System in einer Umgebung mit eigenen Idiomen und Einschränkungen, basierend auf der Definition, die Sie ihm übergeben haben. Jede Frage, die das DLS beantworten musste, kehrt unverändert zurück.
| Plattformübergreifendes DLS | Agent-orientiertes System | |
|---|---|---|
| Was ist vereinheitlicht? | Komponenten-Vertrag, Tokens, Struktur | Farbrollen, Typografie-Skala, Spacing, Verbote, Motive |
| Was ist plattformspezifisch? | Navigation, System-Icons, kontextbezogene Aktionen | Framework, Komponentenbibliothek, Dateistruktur, Klassensyntax |
| Wo die Definition liegt | Sketch-Library plus Code, synchron gehalten von einem Team | Eine Datei im Repository, die der Agent liest |
| Wie Divergenz sichtbar wird | Zwei Apps, die sich wie unterschiedliche Unternehmen anfühlen | Zwei Bildschirme in derselben App, die sich wie unterschiedliche Unternehmen anfühlen |
Die letzte Zeile zeigt den praktischen Unterschied auf, und genau das ist der Grund, warum dies heute wichtiger ist als damals. Ein plattformübergreifender Drift benötigt einen Release-Zyklus, bis er sichtbar wird und ein Designer ihn bemerkt. Agent-Drift tritt innerhalb einer Session auf, zwischen zwei Dateien, und niemand bemerkt es, bis der dritte Bildschirm erscheint.
Wir haben 299 DESIGN.md Dateien analysiert, die für KI-Agenten veröffentlicht wurden, um zu sehen, wie viel Vertrag sie tatsächlich enthalten. 86 % gaben Farben als rohe Hex-Werte ohne zugewiesene Rolle an – eine Werteliste, kein Vertrag. 76 % enthielten keinerlei Verbote. 44 % enthielten nirgendwo konkrete Größenwerte, und 54 % stützten sich auf mindestens ein vages Adjektiv, meistens „clean“ (39 %) oder „modern“ (36 %).
Eine solche Datei ist das Scheitern von Atomic Design in Prosaform. Sie übergibt Teile ohne Angabe dessen, wofür sie gedacht sind, und jeder Bildschirm, den der Agent schreibt, setzt sie anders zusammen. Was das DLS stattdessen geschrieben hätte, wäre eine Deklaration: Diese Komponente benötigt diese Elemente, diese Farbe hat diese Rolle, dies ist nicht erlaubt.
## Card
Required: title, supporting text
Optional: image, badge, footer action
Contains its own bottom divider; hidden when last in a list.
Padding: 16px. Radius: 12px. Border: 1px --border-subtle.
Never uses a drop shadow — elevation is a surface step.
Never uses the accent colour for its border or background.Das ist eine dreißigsekündige Schreibarbeit, und es ist der Unterschied zwischen einem Agenten, der auf Bildschirm vierzehn dieselbe Card produziert, und einem, der eine neue erfindet.
Identity Forge Design-Kits sind als diese Art von Vertrag aufgebaut – semantische Farbrole, eine explizite Do's-and-Don'ts-Liste, Motive und Layout-Regeln – und werden in einer DESIGN.md serialisiert, die jeder Coding-Agent lesen kann. Kits durchsuchen oder beginnen Sie mit was eine DESIGN.md Datei ist.
Was es wert ist, kopiert zu werden, und was nicht
Das DLS ist nicht zum Installieren verfügbar, und das visuelle Ergebnis nachzuahmen, wäre ohnehin die falsche Herangehensweise – es wurde für einen Reise-Marktplatz mit Fotografie als primärem Inhalt entwickelt, was ein spezifisches Problem ist, das die meisten Produkte nicht haben.
Was übertragbar ist, sind drei Entscheidungen, deren Übernahme nichts kostet:
- Definieren Sie Komponenten durch Verträge, nicht durch Komposition. Schreiben Sie erforderliche Elemente, optionale Elemente und Eigenschaften auf. Überlassen Sie die Implementierung dem, was die jeweilige Zielplattform benötigt.
- Verschieben Sie kontextabhängige Visuals in die Komponente. Die Trennlinien-Regel, verallgemeinert. Wenn ein Container etwas über seine Kinder wissen muss, um sie korrekt darzustellen, haben Sie die Logik an der falschen Stelle platziert.
- Benennen Sie die kurze Liste der Dinge, die divergieren dürfen. Alles andere ist standardmäßig vereinheitlicht. Ein System ohne diese Liste erzwingt entweder eine falsche Parität oder driftet überall ab.
Keines davon erfordert ein Designsystem-Team, eine Sketch-Library oder vier Plattformen. Es erfordert die Entscheidung, was Ihre Komponenten sind – eine Aufgabe, die die meisten Systeme überspringen, bevor sie mit der Farbauswahl beginnen.
Kann ich das Airbnb Designsystem herunterladen oder installieren?
Nein. Das DLS ist nicht als installierbares Paket oder als öffentliche Dokumentationsseite veröffentlicht. Verfügbar sind die schriftlichen Berichte des Design-Teams darüber, wie es gebaut wurde, plus Figma-Rekonstruktionen von Drittanbietern, die eher eine Interpretation einer einzelnen Person als eine Spezifikation sind.
Warum hat Airbnb Atomic Design abgelehnt?
Ihre veröffentlichte Begründung war, dass die Behandlung von Komponenten als Zusammensetzungen aus gemeinsamen Atomen ein kompliziertes Netzwerk aus miteinander verbundenen Teilen schafft. Die Behandlung jeder Komponente als eine eigenständige Einheit mit definierten erforderlichen und optionalen Elementen ermöglicht es Komponenten, sich unabhängig zu entwickeln oder ausgemustert zu werden – was weitaus wichtiger ist, wenn dasselbe System in Swift, Kotlin und Web-Code existieren muss.
Ist Atomic Design dann falsch?
Nein, es ist ein anderer Kompromiss. Atomare Komposition minimiert Duplikate und eignet sich gut für ein Single-Platform-Produkt mit einer Codebasis. Sie kostet Sie jedoch das Risiko der Propagationsfehler und der plattformübergreifenden Treue. Airbnb hatte vier Plattformen und entschied sich für die andere Seite. Wählen Sie basierend darauf, welches Scheitern Sie verkraften können.
Was sollte plattformübergreifend gleich bleiben und was sollte sich unterscheiden?
Halten Sie Ihre Farbrole, Typografie-Skalierung, Abstände, Komponenten-Verträge und Content-Struktur überall identisch. Überlassen Sie der Plattform die Dinge, die Nutzer vom Betriebssystem lernen und nicht von Ihnen: Back-Navigation, System-Ikonografie, Share-Affordanzen, kontextuelle Menüs, Scroll- und Tastaturverhalten.
Wie lässt sich das auf KI-Coding-Agenten übertragen?
Ein Agent ist eine weitere Plattform, die Ihr System in einem unbekannten Idiom rendert. Er benötigt dasselbe, was ein natives Team benötigt – einen Vertrag, der festlegt, was jede Komponente benötigt, wofür jede Farbe gedacht ist und was verboten ist. Die meisten für Agenten geschriebenen Design-Anleitungen sind stattdessen lediglich eine Werteliste, weshalb das Ergebnis zwischen den Bildschirmen driftet.