# Понедельник 15 твитов
Всем привет! 👋
Меня зовут Алексей Родионов (@alexey_rodionov). И эту неделю @jsunderhood буду вести я.
Кто я такой? 👇
11:51* PWA-разработчик, организатор русскоязычного сообщества, посвященного прогрессивным веб-приложениям (Progressive W… twitter.com/i/web/status/1…
11:52* спикер, адвокат Web-платформы, евангелист PWA, Web Components, GraphQL. Выступаю на конференциях, фестивалях и ми… twitter.com/i/web/status/1…
11:52* лидер сообщества Google Developers Group Krasnodar. Организовываю IT-мероприятия в Краснодаре.
11:52* ведущий frontend-разработчик в Mercury Development (mercdev.com). Создаю команду мечты.
11:53* ex-CTO в стартапе «ГдеЗерно» (“Uber” для зерновозов).
11:53* UI/UX-инженер, open-source-контрибьютор. В свободное время попиливаю инструменты для GraphQL. Топлю за Developer Experience (DX).
11:53* В общем, и швец, и жнец, и на дуде игрец. 😀
11:54И, как вы уже могли догадаться, эта неделя будет посвящена PWA, Web Components и GraphQL.
А начнём мы завтра с PWA. 😉
11:55Но для начала 3 опроса:
13:14Разрабатываете ли вы прогрессивные веб-приложения (Progressive Web Apps, PWA)?
(Обосновать свой ответ, а также под… twitter.com/i/web/status/1…
13:20Используете ли вы нативные веб-компоненты (Web Components)?
(Обосновать свой ответ, а также поделиться ссылками с… twitter.com/i/web/status/1…
13:24Используете ли вы GraphQL?
(Обосновать свой ответ, а также поделиться ссылками с описанием своих проектов можно в… twitter.com/i/web/status/1…
13:25Я вас обманул. 😀 4-й (теперь точно последний) опрос:
16:00А пользуетесь ли вы PWA как потребители?
Сколько в данный момент прогрессивных веб-приложений установлено на ваших… twitter.com/i/web/status/1…
16:01# Вторник 40 твитов
Что же такое PWA? 👇
7:45Когда меня просят на пальцах объяснить, что такое PWA, я обычно говорю, что это такие сайты, иконку которых можно д… twitter.com/i/web/status/1…
7:46могут работать без доступа к интернету, получать push-уведомления и т.д.
7:46Но на самом деле, это не так. Вот правильное определение PWA:
7:46PWA — это веб-приложения, которые применяют стратегию прогрессивного улучшения (progressive enhancement), то есть п… twitter.com/i/web/status/1…
7:47Как видите, в определении нет ни слова об иконке на главном экране, работе без доступа к интернету, получении push-уведомлений и т.д. 😀
7:48Термин PWA был придуман в 2015 году инженером Google Алексом Расселом (@slightlylate) и его супругой Фрэнсис Беррим… twitter.com/i/web/status/1…
7:49Идея PWA не нова — главные концепции были заложены и реализованы еще в Palm webOS, Firefox OS и Chrome OS, где все… twitter.com/i/web/status/1…
7:49Еще в 2007, за 18 дней до выхода первого iPhone, Стив Джобс сформулировал идею приложений, которые создаются с испо… twitter.com/i/web/status/1…
7:49App Store изначально не планировался, а в течение первого года существования устройства родной SDK не был доступен.
7:50Кстати, у PWA есть одобренный сообществом логотип: github.com/webmaxru/progr….
Впервые на то, что у технологии нет св… twitter.com/i/web/status/1…
7:50There is no logo for #PWA. What if we go for #jslogo concept to create one? Other ideas? Contribute!… twitter.com/i/web/status/8…
Он через Twitter организовал (twitter.com/webmaxru/statu…) на GitHub конкурс на лучшее лого (github.com/webmaxru/progr…).
There is no logo for #PWA. What if we go for #jslogo concept to create one? Other ideas? Contribute!… twitter.com/i/web/status/8…
7:51
Народным голосованием победил логотип от Диего Гонзалеза (@diekus). В то время он был DevRel'ом команды Samsung Int… twitter.com/i/web/status/1…
7:51Кстати, заметил, что многие, на кого я подписан в Twitter, кто так или иначе связан с PWA, перешли работать в Micro… twitter.com/i/web/status/1…
7:52О PWA я узнал чисто случайно в 2015 году благодаря, как это ни странно, другой технологии — Web Components и проекту Google Polymer.
16:12На Google I/O 2015 помимо самой библиотеки Polymer для создания Web Components был представлен набор готовых веб-ко… twitter.com/i/web/status/1…
16:12Меня зацепила идея, что я могу делать не только сайты, но и приложения на веб-технологиях. А это уже совсем другой уровень. 😀
16:13Какие преимущества я для себя выделил?
16:14* Низкий порог входа:
Для написания PWA не нужно изучать проприетарные SDK, достаточно знать HTML, JS, CSS.
16:14Для разработки не требуется специальное оборудование (как, например, в случае с iOS), и можно даже обойтись без IDE… twitter.com/i/web/status/1…
16:15А если у вас уже есть веб-приложение или сайт, можно постепенно внедрять различные Web API.
16:15* Настоящая кроссплатформенность:
16:16PWA работают на устройствах любого форм-фактора, на любой архитектуре и ОС, где есть браузер и доступ в интернет. О… twitter.com/i/web/status/1…
16:16А единая кодовая база снижает стоимость разработки и дальнейшей поддержки.
16:16* PWA выглядят и работают как нативные приложения:
16:17PWA глубоко интегрируются в операционную систему, запускаются через иконку на главном экране, получают push-уведомл… twitter.com/i/web/status/1…
16:17* Не требуют установки и обновлений:
Чтобы воспользоваться PWA, достаточно посетить сайт. Необходимый для работы к… twitter.com/i/web/status/1…
16:18* Децентрализованность, открытость и независимость:
Веб — самая крупная платформа, больше, чем все остальные платф… twitter.com/i/web/status/1…
16:18Однако при желании PWA можно упаковать в легковесную нативную оболочку и опубликовать в Google Play, App Store и других магазинах.
16:19* Все преимущества веб-платформы:
PWA — это сайт, а значит весь контент индексируется поисковиками. У каждой стран… twitter.com/i/web/status/1…
16:19Также пользователь может скопировать любой текст на экране и перевести на другой язык, изменить масштаб страницы, о… twitter.com/i/web/status/1…
16:19* Меньший размер:
PWA сами не реализовывают API — они лишь вызывают API, уже реализованные в браузере. При запуске… twitter.com/i/web/status/1…
16:20* Безопасность:
Код PWA выполняется в песочнице браузера, а для его загрузки и передачи данных используется безопасное соединение HTTPS.
16:20Также веб-приложения используют более защищенную модель разрешений. Например, в отличие от нативных Android-приложе… twitter.com/i/web/status/1…
16:21С преимуществами PWA всё ясно. А что насчёт недостатков? Неужели их нет?
Ещё как есть! Да столько, что они заслуживают отдельного треда. 🧵
17:02* Неодинаковая поддержка на разных платформах:
Например, все браузеры на iOS вынуждены вместо собственного движка… twitter.com/i/web/status/1…
17:20Так, браузеры на iOS-устройствах не поддерживают Web Push API, без которого не получится доставлять push-уведомления.
17:21На самом деле, это проблема iOS, а не PWA. Но бизнесу или конечным пользователям не объяснишь…
Типичный пример: appleinsider.ru/app-store/ya-p….
17:21* Look and feel:
В большинстве случаев, немного попользовавшись, я могу отличить PWA от нативного приложения.
18:04* Отставание в возможностях:
Да, за 5 лет разрыв в возможностях, которые доступны нативным приложениям и которые д… twitter.com/i/web/status/1…
18:26# Среда 52 твита
We've got a proposed logo for WebXR! Designed by the talented Deigo Gonzalez (for whom I lack a twitter handle). Th… twitter.com/i/web/status/1…
А ещё Диего (@diekus) — автор логотипа WebXR – ещё одной технологии, которая мне очень интересна. :)
We've got a proposed logo for WebXR! Designed by the talented Deigo Gonzalez (for whom I lack a twitter handle). Th… twitter.com/i/web/status/1…
10:56
Недавно у меня появился шлем виртуальной реальности. И угадайте, что я проверил первым делом? )
Правильно: как PWA работают в VR. 😀
10:57Кстати, я использую довольно извращённую конфигурацию:
11:11Я установил Windows 10 Pro 64-bit через Bootcamp на свой Macbook Pro 16″ 2019, CPU Intel Core i9 9980HK @ 2.40-5.00… twitter.com/i/web/status/1…
11:12Для тестов даже пришлось доработать демку. 🛠️
👀 Live demo: immersive-web.github.io/webxr-samples/…
📝 Pull request:… twitter.com/i/web/status/1…
11:22Снимать каждый раз шлем, чтобы разрешить или запретить доступ к тому или иному Web API — плохой UX.
Поэтому я откр… twitter.com/i/web/status/1…
12:05Там можно почитать ответ разработчиков браузера, почему сделано именно так, что такое trusted pixels и почему всё н… twitter.com/i/web/status/1…
12:06Кстати, в процессе ещё одна доработка демки, чтобы проверить, как в VR отображаются push-уведомления. 😉
12:10А есть кто из команды @yandexbrowser?
Почему Яндекс.Браузер на Android не предлагает пользователю установить PWA,… twitter.com/i/web/status/1…
14:16Почему PWA "не взлетают"? 👇
14:37Ну, на самом деле, это не так.
Вот навскидку список известных зарубежных PWA:
Instagram, Twitter, Telegram, YouTu… twitter.com/i/web/status/1…
14:38А вот навскидку список популярных российских PWA:
VK, Aviasales, 2GIS, ivi, Tinkoff, Meduza, Юла, Trivago, DNS Sho… twitter.com/i/web/status/1…
14:39Если вы знаете ещё популярные сервисы известных российских брендов, которые являются PWA, пишите в комментариях. Gotta Catch 'Em All!
14:40У Telegram, например, аж целых 3 разных PWA!
web.telegram.org
webk.telegram.org
webz.telegram.org
Потому что PWA ещё только в начале пути. Интерес к PWA только растёт, спрос на разработку только появился.
14:51Потому что мышление людей ещё не перестроилось.
Раньше веб представлял из себя набор отформатированных документов (страниц).
15:30Сейчас веб — это полноценная платформа, причём самая большая (она больше, чем все остальные платформы вместе взятые… twitter.com/i/web/status/1…
15:31Из-за ошибок в продвижении и позиционировании технологии на рынке на ранних этапах.
Многие до сих пор думают, что… twitter.com/i/web/status/1…
16:03PWA работают на устройствах любого форм-фактора, на любой архитектуре и ОС, где есть браузер и доступ в интернет. О… twitter.com/i/web/status/1…
А во-вторых, почему именно мобильных?
PWA работают на устройствах любого форм-фактора, на любой архитектуре и ОС, где есть браузер и доступ в интернет. О… twitter.com/i/web/status/1…
16:05
Вообще, если вы следите за новостями веба, то могли заметить, что вокруг PWA кипят настоящие страсти. 👇
19:23Самое интересное, на мой взгляд, происходит вокруг инициативы под названием Web Capabilities (кодовое название — Pr… twitter.com/i/web/status/1…
19:24Это инициатива проекта Chromium по сокращению разрыва между возможностями, которые доступны нативным приложениям и… twitter.com/i/web/status/1…
19:25Safari и Firefox могли бы организовать подобные инициативы, но не стали этого делать.
С Apple всё более-менее понятно.
19:25Кажется, что команда браузера Safari и движка WebKit намеренно не улучшает поддержку прогрессивных веб-приложений,… twitter.com/i/web/status/1…
19:26Так, например, в ходе WWDC 2020 компания Apple объявила, что не будет реализовывать в Safari поддержку целых 16 Web… twitter.com/i/web/status/1…
19:26Я считаю, что проблемы нужно решать, а не бежать от них. Тем более, что у Apple есть на это ресурсы.
19:27It looks like Apple has used the term PWA for the first time, in the evidence to the Australian Competition and Con… twitter.com/i/web/status/1…
На фоне этого особенно иронично смотрится предложение Apple обходить правила App Store при помощи PWA:
It looks like Apple has used the term PWA for the first time, in the evidence to the Australian Competition and Con… twitter.com/i/web/status/1…
19:27
Ситуация обостряется ещё и тем, что на iOS, согласно требованиям всё того же App Store, все браузеры без исключения… twitter.com/i/web/status/1…
19:28Примечательно также и то, что это первый раз, когда Apple использовала термин PWA с момента его появления.
19:29Fifty-one minutes in 2020 with a browser team and not one mention to PWAs. In the end, "home screen web apps" are d… twitter.com/i/web/status/1…
До этого Apple всячески избегала этого термина, называя прогрессивные веб-приложения либо просто "web apps" — веб-п… twitter.com/i/web/status/1…
Fifty-one minutes in 2020 with a browser team and not one mention to PWAs. In the end, "home screen web apps" are d… twitter.com/i/web/status/1…
19:29
А вот с Firefox интереснее. Буквально через несколько дней после заявления Apple команда Firefox объявила, что тоже… twitter.com/i/web/status/1…
19:31Всё это приводит к расколу и фрагментации веба как платформы.
19:32Именно Firefox ещё до появления термина PWA заложил многие концепции и прототипы Web API, например, для работы с ап… twitter.com/i/web/status/1…
19:33Но не стоит думать, что Google и Microsoft такие белые и пушистые. У каждой компании свои собственные цели и мотивы.
19:36В отличие от Apple, большая часть бизнеса Google строится так и иначе вокруг веба (Поиск, Gmail, YouTube, ChromeOS… twitter.com/i/web/status/1…
19:37С Microsoft всё тоже более-менее понятно. Её платформа Windows Phone умерла. Никто не хотел писать приложения под э… twitter.com/i/web/status/1…
19:38После того, как Microsoft Edge переехал на Chromium, Chromium получил доминирующее положение в вебе.
Почему это пл… twitter.com/i/web/status/1…
19:39Пользуясь доминантным положением, Google ни раз была замечена в пропихивании стандартов в вебе.
19:39То есть, по сути, у пользователя есть выбор между Safari и Safari.
19:47С одной стороны, если выйти на улицу и спросить первого встречного, нужно ли ему, например, Web USB API или Web HID… twitter.com/i/web/status/1…
20:30С другой стороны, Chromium заявляет, что не добавляет никакие API просто так от нечего делать (это, на самом деле,… twitter.com/i/web/status/1…
20:30Разгадка кроется в том, кого понимать под "пользователями".
20:31Кто эти пользователи, которые просят Web API?
Разработчики!
Конечным пользователям и бизнесу в целом всё равно, ч… twitter.com/i/web/status/1…
20:31PWA — это вообще про разработчиков и developer experience (DX).
20:32Подумайте сами: основные идеи PWA были заложены инженерами, термин PWA был придуман инженером, PWA продвигаются Dev… twitter.com/i/web/status/1…
20:33Это мы, как разработчики, хотим писать на веб-технологиях и иметь все эти API, как у других платформ, в веб-платфор… twitter.com/i/web/status/1…
20:33Это объясняет различия в политике команд Google Chrome, Microsoft Edge и Samsung Internet, у которых есть целая арм… twitter.com/i/web/status/1…
20:34При этом нельзя отрицать пользу Project Fugu для конечных пользователей.
Во время пандемии многие пользовались вид… twitter.com/i/web/status/1…
20:34Так в чём же принципиальная разница между Web API для доступа к камере и микрофону и Web API для других аппаратных… twitter.com/i/web/status/1…
20:35# Четверг 42 твита
Ах да, чуть не забыл, ещё я — соавтор проекта Far Cry Beta Restoration Project:
11:13Кто помнит Far Cry 1? pic.twitter.com/32dXN9SmPB
Нас в команде 4 человека и мы занимаемся тем, что по крупицам восстанавливаем, как игра выглядела до релиза.
Я отв… twitter.com/i/web/status/1…
11:14Зачем мы это делаем? Just for fun!
11:14Например, недавно удалось раздобыть pre-alpha demo, которую показывали на выставке E3 в 2002 году (за 2 года до релиза!).
11:15Игре уже почти 20 лет, а она до сих пор занимает особое место в моём сердце. )
11:15Помню, как перед Новым годом с 2003 на 2004 год отец купил компьютер. И вот уже до боя курантов оставались считанны… twitter.com/i/web/status/1…
11:15А на 23 февраля мать подарила мне журнал Computer Gaming World, Russian Edition (был такой журнал о компьютерных иг… twitter.com/i/web/status/1…
11:16На одном из дисков к этому журналу как раз и была демо-версия Far Cry 1, представляющая из себя один уровень из игр… twitter.com/i/web/status/1…
11:16Помню, что на видеокарте ATI Radeon 9200 SE на стандартных, средних настройках графики игра представляла из себя вы… twitter.com/i/web/status/1…
11:16Ах да, весь интерфейс был на английском, а интернета у нас тогда ещё не было. Приходилось искать каждое слово в бум… twitter.com/i/web/status/1…
11:17И вот мне удалось запустить игру. Это был просто взрыв мозга! 🤯
Помню, что вечером того дня долго, до глубокой ноч… twitter.com/i/web/status/1…
11:18Стоит ли говорить, что все мои мысли в школе были о том, как бы скорее вернуться домой и снова очутиться на виртуальном тропическом острове?
11:18Так продолжалось целую неделю, пока я не получил 11 двоек по различным предметам и отец не всыпал мне такого ремня,… twitter.com/i/web/status/1…
11:19На компьютер установили пароль и разрешали играть только по великим праздникам.
11:19Но я всё равно иногда включал компьютер, когда родители были на работе, заходил через F8 в безопасный режим и там б… twitter.com/i/web/status/1…
11:20В какой-то момент просто играть стало не так интересно и я стал ковырять файлы игры.
11:20Собственно, я с детства ломал все игрушки. Было интересно, как они устроены внутри. Наверное, надо было идти в пент… twitter.com/i/web/status/1…
11:21Я быстро обнаружил, что файлы с расширением *.pak являются обычными *.zip-архивами и легко открываются с помощью To… twitter.com/i/web/status/1…
11:21Так я увлёкся гейм-моддингом и программированием. )
11:22Lua – прикольный язык. На нём я в 9 классе написал читы для другой моей любимой игры — PainKilker (тоже, кстати, 20… twitter.com/i/web/status/1…
11:22Олды тут? pic.twitter.com/pDAlQccS91
О некоторых неочевидных проблемах, с которыми я столкнулся при разработке, запуске и эксплуатации в продакшене прог… twitter.com/i/web/status/1…
19:32До Mercury Development я несколько лет работал в сфере стартапов. Основная задача любого стартапа — быстро создать… twitter.com/i/web/status/1…
19:33Так, например, для одного стартапа я разработал первое в России коммерческое PWA и TWA (Trusted Web Activity), собр… twitter.com/i/web/status/1…
19:34Позже приложение было переписано на LitElement + Apollo Client на фронтенде и GraphQL (Prisma + Apollo Server) на бэкенде.
19:35Есть исследования, что PWA помогают генерировать больше посещений, чем нативные приложения.
Например, на каждом ша… twitter.com/i/web/status/1…
19:37У меня же абсолютно противоположный опыт.
19:37Сразу после запуска PWA стали поступать вопросы от пользователей, как скачать и установить приложение. Я пытался об… twitter.com/i/web/status/1…
19:41Проблема заключается в том, что большинство пользователей не знают и не понимают, что такое PWA.
Пользователи прив… twitter.com/i/web/status/1…
19:41Пришлось упаковать PWA в Cordova. На дворе был 2017 год и никаких Trusted Web Activity ещё не существовало.
19:42После публикации в Google Play и App Store количество посещений резко возросло.
19:42А ещё магазины приложений предоставляют социальную информацию, которая может использоваться пользователями при прин… twitter.com/i/web/status/1…
19:43Кстати, чтобы пользователь установил PWA, он должен обязательно посетить сайт, чтобы увидеть предложение установки.… twitter.com/i/web/status/1…
19:44В том же Google Play или App Store пользователь может установить приложение впрок, запустив его, когда ему будет нужно.
19:44Другая проблема, с которой я столкнулся, заключается в том, что веб не поддерживает background geolocation — получе… twitter.com/i/web/status/1…
19:45Пришлось реализовывать background geolocation нативно. Здесь-то второй раз и пригодилась Cordova со своей концепцией гибридных приложений.
19:46Кстати, Cordova не поддерживает service workers. Поэтому, чтобы получившиеся гибридные iOS- и Android-приложения мо… twitter.com/i/web/status/1…
19:47Получение push-уведомлений тоже пришлось реализовывать нативно.
19:47Поэтому появление Trusted Web Activity (TWA) для Android стало настоящим спасением.
19:47Но и с TWA не всё так радужно. )
Дело в том, что в TWA нет нормального способа передавать данные между веб- и нати… twitter.com/i/web/status/1…
19:50# Пятница 48 твитов
Ещё немного underhood (подковёрных игр и того, как всё устроено под капотом на самом деле). 👇
12:38Google сейчас довольно активно продвигает TWA (Trusted Web Activity).
На самом деле, TWA — это костыль, который ре… twitter.com/i/web/status/1…
12:39Мне больше нравится подход Samsung:
12:39“Introducing Progressive Web Apps to Samsung Galaxy Store” link.medium.com/tEhINGT200
* магазин приложений Samsung Galaxy Store позволяет публиковать PWA "как есть" по URL без необходимости вообще что-… twitter.com/i/web/status/1…
“Introducing Progressive Web Apps to Samsung Galaxy Store” link.medium.com/tEhINGT200
12:40
Good job, @pwabuilder team! 👏@MicrosoftStore What about publishing PWA without having to generate AppX at all, ju… twitter.com/i/web/status/1…
Надеюсь, Microsoft Store тоже пойдёт по такому же пути и разрешит публиковать PWA по URL. 🤞
Good job, @pwabuilder team! 👏
@MicrosoftStore What about publishing PWA without having to generate AppX at all, ju… twitter.com/i/web/status/1…
12:40
Glad to see that @samsunginternet team have implemented the idea I proposed just 8 months ago! 🥳… twitter.com/i/web/status/1…
Кстати, эту идею в своё время команде Samsung Internet подкинул я:
Glad to see that @samsunginternet team have implemented the idea I proposed just 8 months ago! 🥳… twitter.com/i/web/status/1…
12:41
WebAPKs coming to Samsung Internet @samsunginternet
* браузер Samsung Internet при установке PWA автоматически генерирует APK-файл, что также позволяет глубоко интегри… twitter.com/i/web/status/1…
WebAPKs coming to Samsung Internet @samsunginternet
medium.com/samsung-intern… pic.twitter.com/NqVcNrfGhU
12:41
Кстати, если вы вдруг не знали, установка PWA в Chrome на Android — это не просто добавление иконки на экран.
12:42При установке браузер отправляет URL веб-манифеста PWA на так называемый minting server, и из Google Play на устрой… twitter.com/i/web/status/1…
12:43Вот только Google не даёт доступ к своему minting server другим браузерам.
Поэтому PWA в сторонних браузерах типа… twitter.com/i/web/status/1…
12:44Samsung Internet спасает то, что у Samsung вместо Google Play есть свой Galaxy Store, который и генерирует WebAPK.… twitter.com/i/web/status/1…
12:44Теоретически, по такому же пути могла бы пойти Xiaomi, у которой на Android тоже есть свой магазин приложений.
12:44Вангую, что в будущем магазины приложений станут не нужны. Поисковики (тот же Google или Bing) станут магазинами (в… twitter.com/i/web/status/1…
12:45А пока для упаковки PWA в легковесные оболочки для публикации в магазинах приложений можно использовать онлайн-серв… twitter.com/i/web/status/1…
12:46Кстати, под капотом для упаковки PWA в Android-приложение PWABuilder использует консольную утилиту Bubblewrap, подд… twitter.com/i/web/status/1…
12:46Впервые идею создать генератор TWA из PWA команде Google Chrome предложил я:
12:47Также пользователь может скопировать любой текст на экране и перевести на другой язык, изменить масштаб страницы, о… twitter.com/i/web/status/1…
Помните, я говорил, что PWA имеют все преимущества веб-платформы?
Также пользователь может скопировать любой текст на экране и перевести на другой язык, изменить масштаб страницы, о… twitter.com/i/web/status/1…
15:46
Но PWA на мобильных устройствах, пытаясь мимикрировать под нативные приложения, теряют часть этих уникальных возмож… twitter.com/i/web/status/1…
15:47Web provides some unique features out of the box such as "Find in page", "Translate page", etc, that native apps do… twitter.com/i/web/status/1…
Но я придумал, как решить эту проблему. 😉
Web provides some unique features out of the box such as "Find in page", "Translate page", etc, that native apps do… twitter.com/i/web/status/1…
15:47
Сейчас для всех запущенных PWA и WebAPK в Chrome отображается так называемое "постоянное уведомление" (persistent n… twitter.com/i/web/status/1…
15:47Моя идея заключается в том, чтобы расширить этот persistent notification таким образом, чтобы при клике по нему отк… twitter.com/i/web/status/1…
15:50На мой взгляд, было бы здорово иметь persistent notification с таким меню и для TWA, и в браузерах, отличных от Chr… twitter.com/i/web/status/1…
15:51* ставьте ⭐️ в crbug.com/974785 😉
15:51* ставьте 👍 в github.com/mozilla-mobile… 😉
15:51Следующая проблема заключается в том, что обычные пользователи не осознают, что PWA и TWA работают через браузер. Д… twitter.com/i/web/status/1…
16:27В случае с PWA это может быть ещё более-менее понятно, потому что пользователь посещает сайт и именно браузер предл… twitter.com/i/web/status/1…
16:27Пользователь устанавливает приложение из Google Play. Приложение запрашивает у него разрешение на доступ к геолокац… twitter.com/i/web/status/1…
16:28В вебе у вас есть, по сути, только один шанс спросить у пользователя разрешение на доступ к тому или иному Web API.… twitter.com/i/web/status/1…
16:28Но тут выясняется, что доступ к геолокации просто необходим для корректной работы этого приложения, без него прилож… twitter.com/i/web/status/1…
16:28Как думаете, сколько пользователей догадалось, что чтобы изменить своё решение, нужно идти в браузер?
Правильно: 0 (ноль)!
16:29Нужно глубоко в настройках браузера (а у каждого браузера свой UI) найти раздел с настройками сайтов, найти нужный… twitter.com/i/web/status/1…
16:29Я как евангелист PWA постоянно работаю с сообществом, собираю обратную связь о проблемах, с которыми сталкиваются р… twitter.com/i/web/status/1…
16:30* Включить permission delegation. Это когда обработка разрешений в TWA делегируется не браузеру, а нативной оболочк… twitter.com/i/web/status/1…
16:31The latest version of Bubblewrap significantly improves the UX by adding a new flag that adds to generated TWA a "S… twitter.com/i/web/status/1…
* Включить "Site Settings" app shortcut:
The latest version of Bubblewrap significantly improves the UX by adding a new flag that adds to generated TWA a "S… twitter.com/i/web/status/1…
16:31
Но я придумал, как решить эту проблему. 😉
Кстати, реализация этой идеи решает также и эту проблему. 😀
Но я придумал, как решить эту проблему. 😉
16:32
А один мой знакомый разрабатывал PWA для одного крупного известного порно-сайта. И вот там тот факт, что PWA работа… twitter.com/i/web/status/1…
17:35Кстати, порноиндустрия одна из первых, кто освоил технологию PWA.
У кого-то ещё остались сомнения, что порно — дви… twitter.com/i/web/status/1…
17:36Дело в том, что вся история поиска и просмотра из приложения сохраняется и доступна в браузере. Большинство пользов… twitter.com/i/web/status/1…
17:36В Chromium на десктопе при удалении PWA есть галочка «Также удалить данные».
Но вот на Android при удалении PWA, W… twitter.com/i/web/status/1…
17:37Кстати, при отметке этой галочки разрешения (permissions) не сбрасываются.
Об этом есть issue в баг-трекере Chromi… twitter.com/i/web/status/1…
17:40Starting today on Android, some users will get a richer PWA installation dialog on Twitter.
Кстати, недавно некоторым пользователям Google Chrome на Android в качестве A/B-теста стал доступен новый UI устано… twitter.com/i/web/status/1…
Starting today on Android, some users will get a richer PWA installation dialog on Twitter.
18:11
@codepo8 @henrylim96 @kennethrohde @diekus Shout out to @alexey_rodionov and @diekus for the inspiration
Идея отображать пользователям больше информации из веб-манифеста при установке PWA принадлежит мне и Диего Гонзалез… twitter.com/i/web/status/1…
@codepo8 @henrylim96 @kennethrohde @diekus Shout out to @alexey_rodionov and @diekus for the inspiration
18:11
Just visualized one of my ideas on how to improve the PWA install UX by exposing more fields from web app manifest… twitter.com/i/web/status/1…
А впервые визуализировал и предложил эту идею я:
Just visualized one of my ideas on how to improve the PWA install UX by exposing more fields from web app manifest… twitter.com/i/web/status/1…
18:12
Поля description и screenshots уже давно описаны в тексте спецификации W3C Web Application Manifest, но до этого ни… twitter.com/i/web/status/1…
18:12Если вы не попали в A/B-тест, то пощупать новый UI установки PWA всё равно можно, например, на сайтах… twitter.com/i/web/status/1…
18:12As a follow-up of my idea of improving the PWA install UX by exposing more fields from web app manifest, I've visua… twitter.com/i/web/status/1…
А недавно я предложил и визуализировал похожую идею, но уже для десктопной, а не мобильной версии браузера:
As a follow-up of my idea of improving the PWA install UX by exposing more fields from web app manifest, I've visua… twitter.com/i/web/status/1…
18:13
Голосуйте за эту идею, ставя ⭐️ в crbug.com/1168211, если хотите, чтобы она тоже была реализована. 🤞
18:13# Суббота 57 твитов
Думаю, на этом хватит промывать вам мозги прогрессивными веб-приложениями. 😂
Если тема PWA вам интересна, то рекомендую:
6:35* ознакомиться с github.com/andreylipattse…
6:36* вступить в чат t.me/pwa_ru
6:36* подписаться на @alexey_rodionov
6:37* подписаться на @webmaxru
Максим Сальников — самый активный в мире популяризатор PWA. Пишет статьи, выступает на… twitter.com/i/web/status/1…
6:37* подписаться на twitter.com/i/lists/100840…
6:38О Web Components. 👇
8:51В завершение недели собираю все треды о веб-компонентах в один.
Кажется, всё, что можно было рассказать о веб-компонентах, уже рассказал Сергей Куликов, когда вёл @jsunderhood. 😂… twitter.com/i/web/status/1…
В завершение недели собираю все треды о веб-компонентах в один.
8:51
Скажу лишь, что с теплотой вспоминаю времена Google Polymer, когда всё веб-приложение можно было построить целиком… twitter.com/i/web/status/1…
8:53Также мне очень нравится фреймворк A-Frame, поддерживаемый командой Mozilla, который позволяет создавать 3D-, VR- и… twitter.com/i/web/status/1…
8:54Вот пример WebXR PWA, построенного на A-Frame:
Hubs — это VRChat, созданный с использованием веб-технологий.
8:55I'm 90% sure @vuejs is just @polymer v1's younger, hotter cousin pic.twitter.com/qoTGDhAvaU
И, как говорится, всё новое ― это хорошо забытое старое. Нынешний Vue очень напоминает Polymer тех лет:
I'm 90% sure @vuejs is just @polymer v1's younger, hotter cousin pic.twitter.com/qoTGDhAvaU
8:55
На работе я использую сейчас React. Просто потому, что все проекты на React и вся команда использует React.
8:55Для личных проектов я использую Lit:
Если вы знакомы с React, то очень быстро освоите Lit… twitter.com/i/web/status/1…
8:56Very excited to announce that the first building block for progressive web apps (PWA) from my Progressive Web Compo… twitter.com/i/web/status/1…
Из интересного я разработал веб-компонент <pwa-install>:
Very excited to announce that the first building block for progressive web apps (PWA) from my Progressive Web Compo… twitter.com/i/web/status/1…
8:56
Это веб-компонент, помогающий реализовать различные паттерны установки PWA:
8:57В планах реализовать набор веб-компонентов на каждое Web API для построения прогрессивных веб-приложений:
webcomponents.org/collection/Flu…
8:57Также в своё время разрабатывал набор веб-компонентов для интеграции Apollo GraphQL Client с Polymer:
webcomponents.org/element/reach-…
8:58Сейчас вместо них рекомендую Apollo Elements от Benny Powers (@PowersBenny):
8:58Если тема Web Components вам интересна, то рекомендую:
9:54* ознакомиться с github.com/mateusortiz/we…
9:55* ознакомиться с arewebcomponentsathingyet.com
9:55* вступить в чат t.me/webcomponents_…
9:55* подписаться на @iamkulykov и @serhiikulykov
Сергей Куликов — эксперт Web Components и основной поставщик информа… twitter.com/i/web/status/1…
9:56О GraphQL. 👇
12:47GraphQL — самая революционная технология извлечения данных со времен AJAX. Так же как React изменил опыт создания п… twitter.com/i/web/status/1…
12:48На самом деле, всё, что я хотел бы рассказать вам о GraphQL, есть в моём докладе «Developer Experience (DX): Разраб… twitter.com/i/web/status/1…
12:49В этом докладе я рассказал об опыте интеграции и эксплуатации GraphQL в одном крупном проекте, какие проблемы решае… twitter.com/i/web/status/1…
12:50@jsunderhood Привет. Очень интересно было бы узнать про инструменты для GraphQL.
Вот о вкладе в экосистему GraphQL и поговорим, тем более, что здесь просили рассказать об инструментах для GraphQL.
@jsunderhood Привет. Очень интересно было бы узнать про инструменты для GraphQL.
12:51
Дело в том, что у GraphQL довольно высокий порог вхождения. Большая часть инструментов для GraphQL сфокусирована на… twitter.com/i/web/status/1…
12:51Так как я лид команды разработки и сам являюсь разработчиком, я очень пекусь о разработчиках и о developer experien… twitter.com/i/web/status/1…
12:52GraphQL Voyager — инструмент, который позволяет наконец-то увидеть тот самый граф в GraphQL.… twitter.com/i/web/status/1…
12:52Improved the developer experience of @GraphQL Voyager by implementing search in descriptions. 👨💻📝 Pull request:… twitter.com/i/web/status/1…
Для GraphQL Voyager я реализовал продвинутый поиск.
Поиск — просто необходимая возможность, если вы работаете с бо… twitter.com/i/web/status/1…
Improved the developer experience of @GraphQL Voyager by implementing search in descriptions. 👨💻
📝 Pull request:… twitter.com/i/web/status/1…
12:53
Improved the developer experience of @GraphQL Voyager by adding a new tab to enter endpoint URL.Pull request:… twitter.com/i/web/status/1…
А также реализовал возможность просто указать URL GraphQL-схемы и необходимые заголовки:
Improved the developer experience of @GraphQL Voyager by adding a new tab to enter endpoint URL.
Pull request:… twitter.com/i/web/status/1…
12:54
Just created a working proof-of-concept prototype of a tool that shows a visual diff between two GraphQL schemas.… twitter.com/i/web/status/1…
Также на основе GraphQL Voyager я разработал инструмент, который визуально отображает различия между двумя GraphQL-… twitter.com/i/web/status/1…
Just created a working proof-of-concept prototype of a tool that shows a visual diff between two GraphQL schemas.… twitter.com/i/web/status/1…
12:54
Также я активно участвовал в разработке GraphiQL Explorer.
Этот инструмент позволяет мышкой натыкать всегда валидн… twitter.com/i/web/status/1…
12:55My team at Apollo has been working on new software to help #GraphQL devs navigate schemas and write queries *much*… twitter.com/i/web/status/1…
My team at Apollo has been working on new software to help #GraphQL devs navigate schemas and write queries *much*… twitter.com/i/web/status/1…
12:56⚡️ New in the Explorer: inline and extract variables from your operations with one click ✨This is one we built si… twitter.com/i/web/status/1…
⚡️ New in the Explorer: inline and extract variables from your operations with one click ✨
This is one we built si… twitter.com/i/web/status/1…
12:56⚡️ New in the Explorer: inline/extract fragments ✨Building off our work to let you inline/extract variables, you… twitter.com/i/web/status/1…
⚡️ New in the Explorer: inline/extract fragments ✨
Building off our work to let you inline/extract variables, you… twitter.com/i/web/status/1…
12:57В какой-то момент я понял, что иметь 2 инструмента — один для работы с GraphQL, а другой для работы с кодом — IDE,… twitter.com/i/web/status/1…
12:57New version of vscode-graphiql-explorer released! Brings a few quality-of-life fixes, including making editing Grap… twitter.com/i/web/status/1…
Сделать именно так не получилось (потому что VSCode не позволяет кастомизировать меню автокомплита). Но получилось… twitter.com/i/web/status/1…
New version of vscode-graphiql-explorer released! Brings a few quality-of-life fixes, including making editing Grap… twitter.com/i/web/status/1…
12:58
Working on integrating @GraphQL Voyager by @APIs_guru into @code. 👨🔧The extension uses GraphQL Config by… twitter.com/i/web/status/1…
GraphQL Voyager внутри VSCode:
Working on integrating @GraphQL Voyager by @APIs_guru into @code. 👨🔧
The extension uses GraphQL Config by… twitter.com/i/web/status/1…
12:58
Также я разработал инструмент, который отображает GraphQL-схему в 3D:
graphql-3d.web.app pic.twitter.com/rEV4swpzRl
И инструмент, который отображает GraphQL-схему в VR:
Кстати, под капотом A-Frame (Web Com… twitter.com/i/web/status/1…
13:00Зачем? Just for fun! 😀
13:01Если тема GraphQL вам интересна, то рекомендую:
13:38* посмотреть youtu.be/i_rsfHMF3x4
13:39* вступить в чат t.me/graphql_ru
13:39* подписаться на @alexey_rodionov
13:39* подписаться на @nodkz
Павел Черторогов — самый активный адвокат GraphQL на территории СНГ. Выступает на конферен… twitter.com/i/web/status/1…
13:40Кстати, @nodkz ещё не был ведущим @jsunderhood. 😲 Непорядок! 😂
13:42Amazing thread with some cool GraphQL tools. I hope we can implement some of these in Relay (and release that to OS… twitter.com/i/web/status/1…17:22Также я активно участвовал в разработке GraphiQL Explorer.
Этот инструмент позволяет мышкой натыкать всегда валидн… twitter.com/i/web/status/1…
# Воскресенье 14 твитов
Кстати, ищу frontend-разработчиков в команду, кто будет вместе со мной решать сложные, но интересные инженерные зад… twitter.com/i/web/status/1…
10:02Напомню, я работаю лидом frontend-разработки в Mercury Development.
Это крупная компания родом из Самары с центрам… twitter.com/i/web/status/1…
10:03Мы расширяемся. Сейчас в Меркури работает более 500 квалифицированных специалистов. Текущая цель компании — вырасти… twitter.com/i/web/status/1…
10:03Все заказчики — исключительно зарубежные компании. В основном это перспективные стартапы из Кремниевой долины, полу… twitter.com/i/web/status/1…
10:03Вы точно сталкивались с нашими разработками в повседневной жизни. )
Например, мы разработали софт для озвучки Звёз… twitter.com/i/web/status/1…
10:04А ещё помогли создать фитнес-трекеры для Fitbit — компании, которую недавно купил Google.
10:04Помимо аутсорс-разработки у компании есть свой собственный продукт — стартап внутри компании — Eventicious.
Это —… twitter.com/i/web/status/1…
10:04Я как раз сейчас работаю в команде Eventicious.
Продукт интересный, лидер рынка приложений для мероприятий в России и Восточной Европе.
10:05В прошлом году приложения, созданные на Eventicious, использовалось более чем на 1000 мероприятиях, включая Нашеств… twitter.com/i/web/status/1…
10:05📣Всем спикерам📣Прием заявок на выступления на юбилейном @404fest X объявляется открытым!🐰
Жду ваши идеи захватыв… twitter.com/i/web/status/1…
Кстати, приём заявок на выступление на Фестивале 404 уже открыт. 😉
📣Всем спикерам📣
Прием заявок на выступления на юбилейном @404fest X объявляется открытым!🐰
Жду ваши идеи захватыв… twitter.com/i/web/status/1…
10:06
У меня всё. 😀
Надеюсь, эта неделя вам понравилась. 🤞
Подписывайтесь на меня. 🔔
Twitter: @alexey_rodionov
GitHub: git.io/alexey.rodionov
10:24Do you remember my proposal for adding description and screenshots from web app manifest to the PWA install UI on d… twitter.com/i/web/status/1…
А между тем, жизнь не стоит на месте. 😉
Do you remember my proposal for adding description and screenshots from web app manifest to the PWA install UI on d… twitter.com/i/web/status/1…
19:01
# Ссылки
github.com
- https://github.com/webmaxru/progressive-web-apps-logo
- https://github.com/webmaxru/progressive-web-apps-logo/issues/3
- https://github.com/khmyznikov/ios-pwa-wrap
- https://github.com/FluorescentHallucinogen/PainCheats
- https://github.com/GoogleChromeLabs/svgomg-twa/issues/59
- https://github.com/mozilla-mobile/fenix/issues/7651
- https://github.com/andreylipattsev/pwa-awesome-ru
- https://github.com/mateusortiz/webcomponents-the-right-way
- https://github.com/OneGraph/graphiql-explorer/issues/10
- https://github.com/zth/vscode-graphiql-explorer/pull/9
other
- https://mercdev.com/
- https://appleinsider.ru/app-store/ya-popolzovalsya-pwa-versiej-telegram-eto-prosto-uzhasno.html
- https://immersive-web.github.io/webxr-samples/tests/permission-request.html
- https://web.telegram.org/
- https://webk.telegram.org/
- https://webz.telegram.org/
- https://medium.com/dev-channel/why-progressive-web-apps-vs-native-is-the-wrong-question-to-ask-fb8555addcbb
- https://www.pluralsight.com/courses/publishing-progressive-web-apps
- https://habr.ru/p/521248
- https://habr.ru/p/515534
- https://capacitorjs.com/
- https://moddb.com/mods/brp/articles
- https://web.dev/google-search-sw/
- https://web.dev/promote-install/
- https://crbug.com/974785
- https://crbug.com/1168211
- https://airhorner.com/
- https://t.me/pwa_ru
- https://t.me/webcomponents_ru
- https://t.me/graphql_ru
- https://hubs.mozilla.com/
- https://lit.dev/
- https://www.webcomponents.org/collection/FluorescentHallucinogen/progressive-web-components
- https://www.webcomponents.org/element/reach-digital/polymer-apollo-client
- https://apolloelements.dev/
- https://arewebcomponentsathingyet.com/
- https://youtu.be/m9DHmTowLvI
- https://youtu.be/i4lBV8by8t4
- https://youtu.be/i_rsfHMF3x4
- https://bit.ly/graphql-dx
- https://graphql-3d.web.app/
- https://graphql-vr.web.app/
- https://vc.ru/tech/196785
- https://404fest.ru/
- http://designweekend.ru/
- https://git.io/alexey.rodionov