Monzo ist eine Bank und App, die digitale Finanzdienstleistungen anbietet. Ihr Ziel ist es, dass Geld für alle funktioniert. Das Designsystem von Monzo wich immer mehr von Material Design ab. Das Unternehmen suchte daher nach einer einfachen Möglichkeit, benutzerdefinierte Komponenten zu schreiben und zu verwalten, die sich ständig weiterentwickeln. Deshalb entschied es sich für Jetpack Compose.
Vorgehensweise
In Compose werden die Material Design-Komponenten als Ebene über den designsystemunabhängigen Foundation-APIs bereitgestellt. Monzo hat die Foundation APIs verwendet, um eine eigene Komponentenbibliothek zu erstellen, wobei die Material-Komponenten als Referenz dienten. Sie begannen mit der Migration eines Bildschirms nach dem anderen und verwenden Compose jetzt für alle neuen Bildschirme. Compose wird jetzt von allen Android-Entwicklern in der Produktion verwendet: „Wir sind auf keine größeren Probleme gestoßen und waren daher zuversichtlich genug, es für einige ausgewählte neue Funktionen und schließlich für alle neuen Funktionen zu verwenden.“
Ergebnisse
Das Monzo-Team hat Komponenten erstellt, mit denen sich neue Bildschirme ganz einfach entwickeln lassen: „Die von uns bereitgestellten Komponenten machen die Entwicklung eines Bildschirms während des Lernens von Compose viel einfacher. Die slotbasierten APIs sind ein fantastisches Muster, das es uns wirklich einfach macht, größere Komponenten aus vielen kleinen Bausteinen zu erstellen.“
Mit Compose konnte das Monzo-Team eine qualitativ hochwertigere App entwickeln und Funktionen hinzufügen, die in den Sprints zuvor nicht möglich waren: „Ein Beispiel sind Animationen. Sie lassen sich in Compose so einfach hinzufügen, dass kaum ein Grund besteht, Dinge wie Farb-, Größen- oder Höhenänderungen nicht zu animieren. Diese „Nice-to-have“-Animationen sind oft zu schwierig, um den Aufwand und die Komplexität im View-System zu rechtfertigen.“
Der Code ist jetzt kürzer und leichter zu lesen, zu verstehen und zu warten: „Deklarativer Code ist viel einfacher zu verstehen als Code, der eine veränderliche UI-Hierarchie manipuliert. Außerdem ist es viel einfacher, den Code zu verfolgen, wenn er in derselben Sprache und oft in derselben Datei geschrieben ist, anstatt zwischen Kotlin und XML hin- und herzuspringen. Ganz zu schweigen von XML-Designs und ‑Stilen! Theming ist in Compose viel einfacher zu verstehen. Unser Theme besteht nur aus den von uns definierten Attributen, die Werte sind auf allen Geräten einheitlich und da es in Kotlin geschrieben ist, lässt es sich in der IDE sehr einfach durchsuchen und nachvollziehen.“
Mit Compose konnte das Monzo-Team seine App ganz einfach testen und dafür sorgen, dass sie barrierefrei ist: „Compose hat uns geholfen, Tests zu schreiben, die weniger fehleranfällig sind, zuverlässig ausgeführt werden und uns viel Vertrauen geben, dass unsere App bei unseren Nutzern tatsächlich funktioniert. Durch das Testen über das Semantiksystem wird außerdem sichergestellt, dass unsere Bildschirme zumindest einigermaßen standardmäßig zugänglich sind.“