Сохранение данных

Данные пользователя бесценны. Проектируйте интерфейс таким образом, чтобы пользователь не мог потерять сделанную работу.

Не перекладывайте на пользователя заботу о сохранности данных. Хорошие продукты берут это на себя: Figma и Google Docs автоматически сохраняют все действия, а пользователь может сосредоточиться на работе.

Чтобы достичь этого, уменьшайте квант редактирования и используйте автосохранение.

Уменьшайте квант редактирования

Интерфейсы с отдельными режимами просмотра и редактирования неоптимальны. Они требуют больше действий для выполнения задачи и увеличивают вероятность потери данных.

Режим редактирования

Пользователю нужно перейти в режим редактирования, заново найти поле, которое он хочет изменить, затем сохранить изменения.

Неоптимально

Редактирование блока

Редактирование отдельного блока можно открыть в модальном окне или сайдпейдже. Так пользователю проще ориентироваться и сложнее потерять большой объем проделанной работы.

Хорошо

Редактирование элемента

Область редактирования уменьшена до минимума, значение можно изменить «на месте».

Еще лучше

Пример из сервиса Контур.CRM. Текст в карточке клиента превращается в поле ввода. По нажатию Enter или клику за пределами поле закрывается, изменения сохраняются:

По возможности не используйте режим редактирования вообще: изменения могут применяться на лету и тут же влиять на результат.

Пример из сервиса Контур.Компас. В левой части интерфейса настраивается выборка организаций, в правой части пользователь сразу видит результат и может скачать файл:

Используйте автосохранение

В больших формах сохраняйте введенные данные автоматически.

Принцип работы

Отслеживайте внесение изменений и сохраняйте их локально или на сервер. Для снижения нагрузки можно использовать дебаунсинг, но не стоит накапливать изменений больше чем за 5–10 секунд. Иначе пользователь может быстро закрыть вкладку браузера и потерять часть проделанной работы.

Техника Debouncing — выполнение действия с задержкой после последнего изменения.

Старайтесь хранить все данные на сервере. Так с ними смогут работать несколько пользователей или один пользователь, но с разных рабочих мест — дома и в офисе.

Индикатор

Если ваш пользователь не привык к тому, что данные сохраняются автоматически, и может искать кнопку «Сохранить», покажите индикатор автосохранения.

Не используйте кнопку «Отменить» в формах с автосохранением: пользователю может быть непонятно, что конкретно она отменяет, — сохранение или ввод данных.

Если сохраняете данные в черновик, сообщайте об этом в индикаторе:

Если форма большая, а черновиков нет — дайте пользователю возможность очистить форму, разместите соответствующую ссылку в удобном месте:

В больших формах со скроллом делайте индикатор залипающим, чтобы он был виден в любом положении прокрутки.

Ошибка сохранения

Если данные не удается передать на сервер в течение минуты — сохраните их локально. При этом продолжайте пробовать сохранить на сервере, увеличивая интервал между попытками. Если пользователь ушел на другую вкладку, а затем вернулся, повторите попытку, не дожидаясь завершения интервала.

Показывайте подсказку при наведении на иконку или текст ошибки. Продублируйте действие сохранения на тексте.

Комбинирование с ручным сохранением

Старайтесь использовать автосохранение в интерфейсе последовательно: во всех одинаковых формах или похожих сценариях.

Если в каких-то формах автосохранение не сделано, проверяйте, есть ли несохраненные изменения при закрытии страницы. Пользователь может по привычке думать, что все сохранится само, и забыть нажать кнопку.

При закрытии вкладки или обновлении страницы предупредить о несохраненных изменениях можно только нативным модальным окном. В разных браузерах он выглядит немного по-разному:

Во всех остальных случаях показывайте кастомное модальное окно с предупреждением:

Размер и расположение

Индикатор может быть трех размеров. Размер индикатора делайте соответствующим размеру кнопок.

Индикатор должен выравниваться по базовой линии текста в кнопке:

Разместите индикатор рядом с главной кнопкой. Если на форме до этого была кнопка ручного сохранения — разместите на ее месте.

Размер индикатора должен соответствовать размеру контролов рядом с которыми он располагается.