Что мы на ней делаем
SQLite — база, которая путешествует вместе с приложением. На мобильных это место, где продукт хранит данные, читаемые при выключенной сети: закэшированные ответы API, ещё не отправленные черновики, историю сообщений и очередь записей, ожидающих синхронизации.
Это полноценная реляционная база, а не key-value хранилище, и это важнее, чем кажется. Как только у локальных данных появляются связи и их нужно фильтровать или сортировать, делать это в SQL выгоднее, чем поднимать всё в память и разбирать на Dart, — особенно в списках, которые должны плавно скроллиться.
Где она нужна
Этот слой есть в любом приложении, работающем офлайн, — спроектировали его или нет. Наша работа обычно в том, чтобы сделать его осознанным: схема с миграциями, понятное правило, что закэшировано, а что является источником истины, и стратегия синхронизации, переживающая убийство приложения посреди записи.
Когда мы её рекомендуем
Для хранения на устройстве всего, что сложнее пары значений, и для любого продукта, чьи пользователи бывают в метро, в подвалах или на мобильном интернете, который они предпочли бы не тратить.
Для нескольких флагов и настроек SQLite избыточна — простого key-value хранилища достаточно, а заводить миграции ради булева значения значит платить без отдачи. И это локальная база, а не бэкенд: серверная часть того же продукта живёт в PostgreSQL.