Что такое offline first
Коротко:
Offline first это способ строить программу так, чтобы она сначала сохраняла данные в базу на вашем устройстве, а на сервер отправляла их потом. Обычные веб-приложения замирают вместе с соединением. Приложение offline first этого просто не замечает.
🎬 Поток и скачанный файл
Сравните просмотр фильма онлайн и просмотр того, что уже лежит у вас.
- Только онлайн. Нажали воспроизведение, пошла буферизация, связь пропала, и вы смотрите на крутящийся кружок. Вы привязаны к кабелю.
- Offline first. Файл уже на диске. Нажали, и он играет. Сеть здесь ни при чём.
- Синхронизация. А теперь представьте, что этот файл тихо обновляется сам, когда вы всё-таки оказываетесь в сети.
TaskNote работает по второму сценарию. Заметки не тянутся с сервера каждый раз, когда вы их открываете. Они живут у вас.
🐌 Что не так с привычным подходом
Большинство современных сервисов построены как online first.
- Каждое действие идёт на сервер. Нажатие клавиши, щелчок, галочка.
- Вы ждёте. Обычно долю секунды. Иногда заметно дольше.
- Лифт, тоннель, гостиничный Wi-Fi. Приложение переходит в режим только для чтения или показывает ошибку, и работа останавливается.
⚡ Как это устроено
Основная копия данных лежит на вашем устройстве. Облако это резервная копия, а не оригинал.
- Запись на месте. Пока вы печатаете, текст попадает в зашифрованную базу на устройстве, за сотые доли секунды.
- Синхронизация в фоне. Отдельный процесс следит за сетью и отправляет изменения наверх, когда связь есть. Когда её нет, он ждёт.
- Слияние. Правили одну заметку на двух устройствах без сети, и правки сводятся вместе, как только устройства снова встретятся.

🏆 Почему мы так делаем
Дело не только в скорости. Больше в том, чтобы не подвести вас.
Вместе с шифрованием на стороне клиента получается скорее личное хранилище, чем веб-страница:
- Ничего не тормозит. Интерфейс не ждёт ответа сервера, чтобы показать букву, которую вы только что набрали.
- Работает где угодно. Самолёт, поезд, подвал, дача. Заметки поехали с вами.
- Даже наш плохой день не помеха. Если наши серверы недоступны, вы спокойно продолжаете работать локально.
Мысли не должны ждать сигнала.
❓ Частые вопросы
Это занимает место в телефоне?
Текст почти ничего не весит. «Война и мир» это около трёх мегабайт. Тысячи ваших заметок займут меньше места, чем одна фотография.
А если закрыть вкладку до синхронизации?
Написанное уже сохранено в постоянном хранилище браузера. Закрыли без сети, а при следующем запуске с интернетом всё уйдёт наверх.
Нужен ли интернет, чтобы войти?
Один раз нужен. Первый вход загружает ключи и сами заметки. Дальше можно оставаться без сети сколько угодно.