Lieblingstalk von Dinah: What's New in Compose Multiplatform: Better Shared UI for iOS and Beyond
von Sebastian Aigner & Márton Braun, JetBrains
Mit Compose Multiplatform (CMP) können Entwickler*innen Benutzeroberflächen für Android, iOS, Desktop und Web bauen – das mit ein und demselben Code, da das Framework diesen für die jeweilige Plattform übersetzt. Das Ganze läuft über Kotlin Multiplatform (KMP), mit welchem die Businesslogik für die jeweilige Plattform programmiert wird.
Dabei kann CMP mittlerweile auf Mobilgeräten (Android & iOS) und auf Desktop produktiv eingesetzt werden. CMP für Web ist momentan im Beta-Status.
An diesem Talk wurden nun die neuesten CMP-Features präsentiert. Tatsächlich landen Neuerungen und APIs aus Jetpack Compose (das Android UI Framework) mittlerweile nach etwa drei bis fünf Wochen in CMP. Für alle vier Plattformen. Dieses Tempo ist beeindruckend und dient Entwickler*innen wie uns, die ihre Projekte immer up-to-date halten möchten.
Zuerst haben die zwei Referenten Navigation 3 erwähnt. Die neue Navigations-Library von Google für Jetpack Compose haben wir in einem KMP-Projekt bereits erfolgreich eingesetzt, der Inhalt war daher für uns nichts Neues. Es ist aber toll, dass die Library nun vollständig auf allen Plattformen einsetzbar ist.
In KMP-Projekten gibt es eine neue Projektstruktur, die vor allem für jedes Modul eine klar definierte Verantwortlichkeit und einen einzigen Zweck zum Ziel hat. Die Struktur soll möglichst konsistent sein und es soll für Entwickler*innen einfach sein, das Projekt weiter zu modularisieren. Weiter ist Compose Hot Reload nun direkt im Gradle Plugin integriert und muss von Entwickler*innen nicht mehr separat installiert werden. Yay!
Allgemein merkt man: KMP und CMP sind der klare Fokus der Strategie von JetBrains. Es gibt stetige Verbesserungen am Tooling und an APIs und es gibt neue Features, die uns Entwickler*innen wirklich etwas nützen – wir werden gehört. Die Strategie scheint zu ziehen: mittlerweile gibt es über 3’500 Kotlin-Libraries!
Im für mich spannendsten Teil der Präsentation ging es aber um iOS (I know, shocking!). Apples neues visuelles Design-System ab iOS 26, Liquid Glass, unterscheidet sich massgeblich von Android Material 3 Expressive, dem Design-System von Android (zu Liquid Glass siehe auch unseren Blog). So Fan ich als Android-Nutzerin auch von Material 3 Expressive bin: nutzt ein*e iOS-Nutzer*in eine CMP-App, die ausschliesslich auf Compose basiert, wirkt sie visuell ziemlich fremd, weil die gewohnte Glasoptik fehlt. Sie verhält sich auch in der Bedienung anders als native iOS Apps, weil manche Interaktionen nicht funktionieren wie gewohnt.
JetBrains hat das nun geändert: neu können die wichtigsten nativen iOS-Komponenten (Tab-Bar, Navigationsleiste und Toolbars) im Liquid-Glass-Look angezeigt werden.
Mit einem neuen Property können auch eingebettete native UIKit-Komponenten über der Compose-UI-Ebene gerendert werden und unterstützen so transparente Hintergründe sowie native Shader-Effekte. So passen auch eingebettete native Komponenten nahtlos ins Liquid-Glass-UI.
Das Resultat: Eine CMP-App, die sich für iOS-Nutzer*innen vertraut anfühlt. Liquid Glass, bzw. iOS 26, wurde Mitte September 2025 von Apple veröffentlicht. Dass JetBrains den Support für Liquid Glass so schnell geliefert hat, hat mich beeindruckt.
Weiter haben sie uns Neuigkeiten zur Texteingabe auf iOS gezeigt. Diese nutzt neu native iOS-Komponenten, was bedeutet, dass in Texteingaben (z.B. in ein Textfeld oder ein Suchfeld) nun präzise Cursorbewegungen sichtbar sind und Gesten, Auswahlfunktionen und Systemkontextmenüs („AutoFill“, „Übersetzen“ und „Teilen“, etc.) nativ erlebt werden können. Ergänzend dazu lässt sich nun eine eigene Eingabe Ansicht definieren, welche die Standard-Tastatur ersetzt - allgemein laufen iOS-Apps nun flüssiger. Also alles Implementationen, die Look-and-Feel für iOS-Nutzer*innen einer CMP-App massgeblich verbessern.
Dieser Talk war definitiv ein Highlight für mich. Dass JetBrains (in Zusammenarbeit mit Google) so viel in die UX für iOS-Apps investiert, zeigt, dass KMP und CMP keine experimentellen Spielwiesen mehr sind, sondern der strategische Weg, mit dem Android-Entwickler*innen heute Applikationen für alle Plattformen bauen können. Mit einer einzigen gemeinsamen Codebasis und kaum Kompromissen beim nativen Feeling. I like!