Wat we ermee bouwen

SQLite is de database die met de app meereist. Op mobiel bewaart een product er de data die het ook zonder netwerk moet kunnen lezen: gecachte API-antwoorden, concepten die de gebruiker nog niet heeft verstuurd, berichtgeschiedenis, en de wachtrij met schrijfacties die op synchronisatie wacht.

Het is een echte relationele database en geen sleutel-waardeopslag, en dat telt zwaarder dan het klinkt. Zodra lokale data relaties heeft en gefilterd of gesorteerd moet worden, is dat in SQL doen beter dan alles in het geheugen laden en het in Dart oplossen — vooral bij lijsten die soepel moeten blijven tijdens het scrollen.

Waar het past

Elke app die offline werkt heeft deze laag, of die nu bewust ontworpen is of vanzelf ontstaan. Ons werk bestaat er meestal uit haar expliciet te maken: een schema met migraties, een heldere regel voor wat cache is en wat leidend, en een synchronisatiestrategie die overleeft dat de app halverwege een schrijfactie wordt afgesloten.

Wanneer we het aanraden

Voor opslag op het toestel die verder gaat dan een handvol waarden, en voor elk product waarvan de gebruikers in de trein zitten, in een kelder staan, of op mobiele data zitten die ze liever niet opmaken.

Voor een paar vlaggen en voorkeuren is SQLite meer dan de klus vraagt — eenvoudige sleutel-waardeopslag volstaat, en migraties toevoegen om een boolean te bewaren is een kostenpost zonder opbrengst. En het is een lokale database, geen backend: de serverkant van hetzelfde product hoort in PostgreSQL.