← Alle Beiträge Technik

Warum meine Apps offline funktionieren

Auf dem Amt gibt es keinen Empfang, im Wald erst recht nicht. Warum Offline-First bei meinen Apps keine Notlösung ist, sondern die Grundarchitektur.

Es gibt einen Moment, in dem sich entscheidet, ob eine App etwas taugt: wenn man sie genau dann braucht, wenn das Netz weg ist. Im Wartebereich einer Behörde, im Keller beim Zählerstand ablesen, auf dem Stellplatz irgendwo in Frankreich.

Deshalb beginnt bei mir jede App mit derselben Entscheidung: Die lokale Datenbank ist die Wahrheit, nicht der Server.

Die Datenbank ist die einzige Quelle

Konkret heißt das: Die App liest niemals direkt aus dem Netz. Sie liest aus der lokalen Room-Datenbank, und die UI beobachtet diese Datenbank als Datenstrom. Ob gerade eine Synchronisation läuft, ist für die Oberfläche unerheblich.

@Dao
interface EintragDao {
    @Query("SELECT * FROM eintraege ORDER BY datum DESC")
    fun beobachteAlle(): Flow<List<Eintrag>>
}

Der Effekt ist unspektakulär und genau deshalb richtig: Es gibt keinen Ladespinner, keinen Leerzustand beim Start und keinen Fehlerdialog, weil das WLAN im Flur schwächelt. Die Daten sind einfach da.

Kein Konto, keine Registrierung

Die zweite Konsequenz ist eine Produktentscheidung. Wenn alles lokal liegt, braucht niemand ein Benutzerkonto, um loszulegen. Keine Registrierung, keine E-Mail-Bestätigung, keine Passwörter, die vergessen werden können.

Für die Behördenhelfer-Apps ist das mehr als Bequemlichkeit. Dort trägt man ein, wann das Sorgerecht geklärt wurde oder welcher Pflegegrad beantragt ist. Solche Daten gehören auf das Gerät der Nutzerin und nirgendwo sonst hin.

Was nie hochgeladen wird, kann auch nicht geleakt werden. Die einfachste Datenschutzmaßnahme ist, Daten gar nicht erst einzusammeln.

Was man dafür aufgibt

Ehrlicherweise kostet dieser Ansatz etwas:

Import, nicht Anmelden und fertig.

häufigsten abgebrochen wird. Feedback kommt per E-Mail oder gar nicht.

Nutzer direkt, ohne Backup auf einem Server.

Der letzte Punkt ist der ernsteste. Jede Schema-Änderung bekommt deshalb eine explizite Migration und einen Test, der gegen die vorherige Datenbankversion läuft. fallbackToDestructiveMigration() steht in keinem meiner Projekte.

Export als Sicherheitsnetz

Statt einer Cloud gibt es einen Export. Bei den Behördenhelfer-Apps als PDF, das man ohnehin zum Amt mitnehmen will, bei den Tagebuch-Apps zusätzlich als strukturierte Datei zum Wiedereinlesen.

Das ist weniger komfortabel als eine Synchronisation – aber es ist ein Format, das auch dann noch lesbar ist, wenn es die App eines Tages nicht mehr gibt. Bei Software, in die jemand über Monate Daten einträgt, halte ich das für die wichtigere Eigenschaft.

Fazit

Offline-First ist kein Feature, das man nachrüstet. Es ist eine Entscheidung am ersten Tag, die danach fast jede weitere Entscheidung beeinflusst – von der Datenhaltung über das Onboarding bis zum Geschäftsmodell. Für Apps, die im Alltag und nicht im WLAN benutzt werden, ist es aus meiner Sicht die richtige.

Apps von Kontitec

Behördenhelfer, Brennholzmanager, CamperManager und mehr – alle Produkte auf einen Blick.

Produkte ansehen