Offline-First Landscape – 2025
Почему мы отказались от WatermelonDB
- IndexedDB тормозит: WatermelonDB держит всю БД в памяти через LokiJS, что при 100 МБ+ данных недопустимо.
- Синхронизация хрупкая: клиент обязан сначала вытянуть данные, иначе мутации могут затереться.
- Проект замедлился: PR с чанковой загрузкой висит месяцами, активность упала.
- Web-ограничения: IndexedDB единственное постоянное хранилище в браузере, и все реализации страдают от его скорости.
Что мы искали
- Полноценная работа офлайн: чтение, удаление, ответ, сортировка писем без сети.
- Сотни МБ и миллионы строк с первого запуска — задача из топ-1 %.
- Кроссплатформенность: web + натив, общий знаменатель — браузер.
- Отказались от идеи «база-независимый API»: готовы интегрироваться на уровне Postgres, если это даст надёжность.
Первые кандидаты
| Библиотека | Плюсы | Минусы |
|---|---|---|
| WatermelonDB | Open-source, проверен временем | Память, тормоза, слабая поддержка |
| PowerSync | Есть self-host | Требует кластер MongoDB + изменения Postgres, кейсы только демо |
| ElectricSQL | Переписывают, односторонняя синхронизация, требует Postgres |
Итог
Альфа-версия на WatermelonDB работала, но к ноябрю стало ясно: для «тяжёлого» офлайна нужно что-то совсем другое. Мы начали поиск «новой волны» решений, отбросив все предубеждения.