Нет, и ключевая тонкость в том, что внешне это выглядит иначе: сгенерированное приложение устанавливается на главный экран смартфона так же, как нативное, но при этом требует подключения к сети на каждом экране. При этом оно не скрывает этот факт: при отсутствии соединения список отображает «Сервер недоступен», а не остаётся пустым, а форма, которую вы заполняете, остаётся открытой со всеми уже введёнными значениями. То, чего приложение не делает, это хранение ваших данных на устройстве или постановка вводов в очередь для отправки позже. Если вы работаете в офисе, цеху или магазине, вы никогда не столкнётесь с этим ограничением; если же вы работаете в зоне «мёртвого покрытия», вы столкнётесь с ним уже в первый день — и эта страница расскажет, как учесть это до покупки.
«Устанавливается на телефон» ≠ «работает автономно»
В поставляемом архиве есть веб-манифест (`manifest.webmanifest`) с режимом отображения `standalone`: ваше приложение можно добавить на главный экран смартфона с собственной иконкой и цветами, оно будет открываться во весь экран без адресной строки. Визуально его невозможно отличить от приложения, загруженного из магазина — и именно это и вводит в заблуждение.
Однако отсутствует ключевой компонент, обеспечивающий автономную работу: service worker — небольшая программа, работающая внутри браузера и подающая страницы и данные при отсутствии сети. В сгенерированном коде её нет — это легко проверить, просто поискав соответствующий термин в архиве. Приложение, установленное без service worker, остаётся обычным веб-приложением, обращающимся к серверу при каждом переходе на новый экран.
Что происходит на самом деле при потере связи
Приложение честно сообщает об этом. Список, который не удалось загрузить, выводит надпись «Сервер недоступен. Проверьте подключение», а не остаётся пустым. Эта разница — не косметическая: пустой экран читается как «здесь ничего нет», и вы можете уехать с объекта, уверенные, что никакие работы там не зарегистрированы, хотя на самом деле все они уже сохранены в базе.
При заполнении формы она не закрывается: остаётся открытой, с уже введёнными вами данными, и отображает сообщение «Не удалось сохранить — проверьте подключение и повторите попытку». Вам не нужно вводить всё заново: как только связь восстановится, второй клик завершит сохранение. Но важно сказать прямо: пока вы не нажмёте кнопку сохранения при наличии подключения, данные не будут зафиксированы ни в одной системе, а закрытие вкладки приведёт к потере ввода — он нигде не сохраняется на устройстве.
Чего приложение не делает — и какие проблемы оно тем самым избегает
Никакие ваши бизнес-данные не сохраняются на смартфоне или компьютере: ни встроенной базы данных, ни очереди отложенных отправок. Соответственно, при восстановлении сети синхронизация тоже не выполняется. Это не опция, отключённая где-то в настройках — такой функциональности в продукте просто нет, и лучше знать об этом заранее.
Это ограничение, и у него есть обратная сторона, о которой было бы нечестно умалчивать: в инструментах с поддержкой автономной работы чаще всего жалуются именно на синхронизацию — потеря вводов при «поднятии» данных, дублирование записей при повторной отправке. Инструмент, не ставящий ничего в очередь, не может потерять эту очередь. Это не замена автономной работе там, где она действительно необходима; это лишь означает, что здесь отсутствие функции — полное и чёткое, а не «полурабочая» возможность, на которую нельзя рассчитывать всерьёз.
Как принимать решение — исходя из места ввода данных
Правильный вопрос — не «есть ли у меня сигнал?», а «где я ввожу данные?». В офисе, цеху, за прилавком, в крытом складе или вечером дома покрытие стабильно, и это ограничение никогда не проявится. На удалённом объекте, в подвале, в подземном помещении, в зоне «мёртвого покрытия» или во время сельской развозки вы столкнётесь с ним уже в первый день — и никакие настройки его не устранят.
Во втором случае есть два честных пути. Оставить для полевого ввода тот инструмент, который умеет работать автономно, а сгенерированное приложение использовать только для задач после возвращения — учёт работ, планирование, управление складом, аналитика; либо принять отложенный ввод — фиксировать данные на месте (например, в блокноте) и вносить их в систему уже при наличии подключения. Такой подход подходит тому, кто регистрирует несколько строк в день, но не подходит тому, кто вводит по пятьдесят. Нельзя покупать, полагая, что «это решится потом» — настроек для этого не существует.