Zum Inhalt springen
22. Juni 2026 · 3 MIN LESEN · Journal

Die Besessenheit vom Kaltstart

Der Kaltstart ist das erste Versprechen, das eine App ihrem Nutzer gibt. Wenn es länger als eine Sekunde dauert, bis sie einsatzbereit ist, haben wir dem Nutzer bereits vermittelt, dass es sich um eine langsame App handelt – ganz gleich, wie schnell sie danach läuft.

Es ist auch der Moment, den die Nutzer am häufigsten erleben. Ein Gewohnheits-Tracker wird für ein paar Sekunden geöffnet, um etwas abzuhaken. Ein Migräne-Tracker wird geöffnet, wenn sich jemand unwohl fühlt und dies schnell festhalten möchte. Bei Apps wie diesen ist das Öffnen nicht nur der Auftakt zum Erlebnis – es ist der größte Teil des Erlebnisses.

Unser Ziel

Unser Ziel ist es, unter 600 ms Vom Antippen eines Symbols bis hin zur interaktiven Benutzeroberfläche auf einem fünf Jahre alten iPhone. Das geschieht, nachdem das Betriebssystem die Binärdatei geladen, Speicher zugewiesen und uns den Hauptthread übergeben hat. Alles, was zwischen dieser Übergabe und dem ersten Frame passiert, liegt in unserer Verantwortung.

“Interaktiv” ist hier das entscheidende Wort. Ein Startbildschirm, der sofort erscheint und dann einfach nur da bleibt, zählt nicht. Ebenso wenig wie ein erstes Bild voller Platzhalter, die sich einen Moment später neu anordnen. Das Ziel ist der Moment, in dem man auf das tippt, weswegen man gekommen ist, und es reagiert.

Wir führen die Messungen auf dem alten Gerät durch, nicht auf dem neuen – aus demselben Grund, aus dem wir dort überhaupt testen: Das neueste Smartphone kaschiert fast jeden Fehler.

Was es erzwingt

Wenn man diese Zahl erreicht, sind viele Diskussionen schon im Keim erstickt. Netzwerkanbindung ist auf dem Startpfad nicht möglich. SDKs von Drittanbietern sind schwer zu verkaufen – die meisten von ihnen lösen Hintergrundprozesse aus, bevor application(_:didFinishLaunching…) gibt sogar Ergebnisse zurück. Bild-Caches werden verzögert geladen. Datenbankmigrationen werden in einer Hintergrundwarteschlange ausgeführt, ohne die Hauptwarteschlange jemals zu blockieren.

Daraus ergeben sich einige Vorgehensweisen. Der erste Bildschirm wird aus Daten erstellt, die bereits auf dem Gerät vorhanden sind, sodass die App sofort aktuelle Informationen anzeigt und im Hintergrund aktualisiert wird, falls etwas aktualisiert werden muss. Funktionen, die auf dem ersten Bildschirm nicht benötigt werden, werden erst eingerichtet, wenn jemand danach fragt. Und wann immer wir in Versuchung geraten, eine Bibliothek hinzuzufügen, fragen wir uns zunächst, welche Funktion sie beim Start erfüllt, bevor wir uns fragen, welchen Nutzen sie für uns hat.

Die Vor- und Nachteile

Diese Disziplin hat ihren Preis. Wenn wir auf ein praktisches SDK verzichten, bedeutet das manchmal, dass wir den entsprechenden Code selbst schreiben und pflegen müssen. Lokale Daten zuerst anzuzeigen, bedeutet, dass wir für den Fall planen müssen, dass diese leicht veraltet sind. Lazy Loading erfordert besondere Sorgfalt, um Ruckler beim ersten Öffnen eines datenintensiven Bildschirms zu vermeiden. Wir nehmen diese Kosten in Kauf, weil die Alternative eine kleine Belastung bei jedem einzelnen Start wäre – für immer und für jeden.

Was wir falsch gemacht haben

Die Startzeit verschlechtert sich selten durch eine einzige dramatische Veränderung. Sie verschlechtert sich schleichend: ein bisschen Einrichtungscode hier, eine zusätzliche Überprüfung dort – alles für sich genommen harmlos. Das haben wir auf die harte Tour gelernt, als wir erst spät bemerkten, dass sich eine App langsamer öffnen ließ, ohne dass ein einzelner Commit dafür verantwortlich war. Mittlerweile wird die Startzeit bei jeder Veröffentlichung auf dem Referenzgerät überprüft, sodass Abweichungen bereits erkannt werden, solange sie noch gering sind.

Das gleiche Prinzip gilt auch für unsere anderen Plattformen. Eine Windows-App oder ein Popup einer Browser-Erweiterung hat ihre eigene Version des Kaltstarts, und es gilt dieselbe Regel: Zeige sofort etwas Nützliches an, verschiebe alles andere auf später.

Warum es sich lohnt

Diese Disziplin zahlt sich aus. Sobald der Start schnell ist, ist auch alles andere schnell – denn überall gelten dieselben Regeln.