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

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

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

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

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

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

Редактирование всей страницы

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

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

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

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

Хорошо

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

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

Ещё лучше

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

Смена состояний строки «Телефон»: сначала вместо значения прочерк, затем при наведении на его месте появляется пустое поле, после клика поле в фокусе с тёмной рамкой и курсором ввода

Подробнее — в гайде «Инлайн-редактирование».

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

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

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

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

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

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

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

Спиннер

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

Кнопка «Отправить» внизу формы, рядом спиннер и серый текст «Сохраняем изменения»Та же кнопка, рядом вместо спиннера серый текст «Изменения сохранены»

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

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

Кнопка «Отправить», рядом серый текст «Черновик сохранён»

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

Кнопка «Отправить» и серый текст «Изменения сохранены», справа у края формы ссылка «Очистить» с иконкой корзины

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

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

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

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

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

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

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

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

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

Нативные окна в трёх браузерах: Chrome — «Закрыть сайт?» с кнопками «Закрыть» и «Отмена»; Firefox — кнопки «Остаться на странице» и «Уйти со страницы»; Edge — «Вы действительно хотите покинуть страницу?», кнопки «Уйти» и «Остаться»

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

Модальное окно «Остались несохранённые изменения» с предупреждением о потере изменений, красной кнопкой «Закрыть страницу» и кнопкой «Остаться»

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

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

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

Кнопка «Отправить» и в 24 px от неё спиннер с текстом «Сохраняем изменения»: текст кнопки и подпись спиннера выровнены по одной базовой линии