Месяц назад я опубликовал Ваш PWA выйдет из строя в августе 2021 года, чтобы помочь разработчикам разобраться с грядущими на тот момент изменениями в Chrome 93, появившимися в консоли каждого браузера. «Страница не работает в автономном режиме. Начиная с Chrome 93, критерии возможности установки меняются, и этот сайт нельзя будет установить. "

Google отступает

Отличные новости! Несколько дней назад Google решил приостановить свои планы. И похоже, что эти планы будут отложены на какое-то время - если не на неопределенный срок.

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

Offline! = Устанавливается

Мне искренне интересно, почему Google абсолютно настаивает на объединении этих двух концепций. Их догма состоит в том, что PWA должен работать в автономном режиме. И поэтому для того, чтобы PWA можно было установить, он должен продемонстрировать, что он может работать в автономном режиме.

Проблема в том, что некоторые приложения действительно не могут делать ничего полезного в автономном режиме. И это на самом деле нормально, не так ли? Посмотрите на автономный вариант приложения LinkedIn ниже. Действительно ли это позволяет вам делать что-нибудь полезное?

Не совсем. Поэтому меня немного озадачивает, почему Google не считает страницу с родными динозаврами приемлемым резервным вариантом офлайн, особенно с учетом того, что это их собственная страница.

Почему Google отступает?

За заголовком моей исходной статьи Ваш PWA выйдет из строя в августе 2021 года скрывалась искренняя готовность предупредить разработчиков о последствиях отмененной инициативы Google.

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

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

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

Кроме того, обработчик событий сервис-воркера fetch не лишен ошибок и странностей, особенно когда дело касается выборки и кэширования ресурсов, поступающих из других доменов. И здесь CORS может вызвать серьезную головную боль.

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

Но если вы все же решите показывать устаревшие данные в автономном режиме, вы должны четко указать в своем пользовательском интерфейсе, что отображаемые данные устарели. Забавная история: в первые дни существования приложения Coronavirus мы получали массу писем от разгневанных пользователей, утверждающих, что данные не обновляются. Фактически, они просто видели кешированные данные в автономном режиме.

Кеширование - фантастическое улучшение. Если все сделано правильно, ваше приложение может загружаться практически мгновенно. Это может сэкономить вам массу денег на AWS / GCP, уменьшив количество запросов, идущих до вашего сервера. И это может сделать часть вашего приложения полезной в автономном режиме.

Но то, что запланированное Google обновление Chrome, по сути, гласило: «создайте идеальную реализацию кэширования или больше никаких функций установки». Учитывая, насколько хрупко и сложно кэширование, идеальная реализация, вероятно, недоступна для большинства разработчиков. И заставить их руки сломать что-то еще, вероятно, было не лучшим вариантом.

Кредит, по которому подлежит оплате

Спасибо, Google, что выслушали наши отзывы! Удивительно, что в своем масштабе они все еще могут тестировать, повторять и быстро менять направления. Надеюсь, что их план по обновлению критериев возможности установки будет отложен в обозримом будущем. Если нет, можете ожидать, что я напишу об этом еще раз!

В общем, хорошие новости - похоже, что ваш PWA не выйдет из строя в августе 2021 года.

PS: Если вы хотите сэкономить время, подумайте о замене вашей реализации PWA на Progressier. Это бесплатно, без кода, с push-уведомлениями, и, что самое главное, мы всегда в курсе, чтобы вам не приходилось делать это.

Больше контента на plainenglish.io