Local-first: данные живут у пользователя, а сервер догоняет
CRDT-библиотеки повзрослели, и приложения всё чаще работают с локальной копией данных, синхронизируясь в фоне. Что это меняет для продуктов и разработчиков.
Сдвиг
Десять лет веб-приложения строили по одной схеме: клиент показывает то, что ответил сервер. Нет сети — нет приложения. Спиннер на каждое действие, гонки при одновременной правке, потеря черновика при обрыве связи.
Local-first переворачивает схему. Приложение работает с полной локальной копией данных: читает и пишет мгновенно, а изменения отправляются на сервер и другим устройствам в фоне. Сервер превращается из источника истины в точку обмена и резервную копию.
Почему сейчас
Идея старая, а реализуемой её сделали три вещи:
- CRDT-библиотеки. Yjs и Automerge умеют сливать одновременные правки без конфликтов и без центрального арбитра. Текст, списки, карты, вложенные структуры.
- Хранилище в браузере. IndexedDB, OPFS и SQLite, скомпилированный в WebAssembly, дают на клиенте настоящую базу, а не кеш.
- Готовые движки синхронизации. Electric, PowerSync, Replicache, Triplit, Jazz и другие берут на себя протокол, очереди и разрешение конфликтов, оставляя разработчику схему данных.
Что получает пользователь
Интерфейс без ожиданий: нажал — изменилось. Работа в самолёте, в метро, на даче. Совместное редактирование, где чужие правки появляются, а свои не теряются. Данные, которые остаются при вас, даже если сервис закрылся.
Что получает разработчик
Иную модель мышления. Нет запросов «загрузи, покажи, отправь». Есть локальное состояние, к которому подписан интерфейс, и слой синхронизации, который надо настроить один раз. Оптимистичные обновления перестают быть отдельной техникой — они просто единственный режим работы.
Плата за это — сложность там, где раньше её не было. Схема данных должна быть готова к слиянию. Права доступа проверяются и на сервере, и на клиенте. Миграции затрагивают данные на устройствах, которые могут месяцами не выходить в сеть.
Где это уже работает
Linear и Figma построены на локальном состоянии с фоновой синхронизацией, хотя и не на публичных CRDT. Obsidian хранит заметки в файлах и синхронизирует поверх. Заметочники, канбаны, дизайн-инструменты и всё, где человек часто и мелко правит, переходят на эту модель первыми.
Чего ждать
Local-first не заменит серверные приложения целиком. Банковские транзакции, инвентарь на складе и всё, где нужна строгая последовательность, останутся на сервере. Но для инструментов, где главное — скорость реакции и совместная работа, это становится вариантом по умолчанию. Судя по тому, сколько движков синхронизации появилось за два года, рынок в это верит.
Войти, чтобы оценить материал
Комментарии
Войти, чтобы оставить комментарий