alexey_rodionov

10 мая 2021

# Понедельник 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:46

PWA — это веб-приложения, которые применяют стратегию прогрессивного улучшения (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:49

App Store изначально не планировался, а в течение первого года существования устройства родной SDK не был доступен.

7:50

Кстати, у PWA есть одобренный сообществом логотип: github.com/webmaxru/progr….

Впервые на то, что у технологии нет св… twitter.com/i/web/status/1…

7:50
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…

Он через 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:16

PWA работают на устройствах любого форм-фактора, на любой архитектуре и ОС, где есть браузер и доступ в интернет. О… twitter.com/i/web/status/1…

16:16

А единая кодовая база снижает стоимость разработки и дальнейшей поддержки.

16:16

* PWA выглядят и работают как нативные приложения:

16:17

PWA глубоко интегрируются в операционную систему, запускаются через иконку на главном экране, получают 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

Результаты тестов меня не обрадовали.

Ожидание / реальность: pic.twitter.com/8EtadjGGYJ

11:33

Снимать каждый раз шлем, чтобы разрешить или запретить доступ к тому или иному 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

14:41

Потому что PWA ещё только в начале пути. Интерес к PWA только растёт, спрос на разработку только появился.

14:51

Потому что мышление людей ещё не перестроилось.

Раньше веб представлял из себя набор отформатированных документов (страниц).

15:30

Сейчас веб — это полноценная платформа, причём самая большая (она больше, чем все остальные платформы вместе взятые… twitter.com/i/web/status/1…

15:31

Из-за ошибок в продвижении и позиционировании технологии на рынке на ранних этапах.

Многие до сих пор думают, что… twitter.com/i/web/status/1…

16:03

Во-первых, это не так:

medium.com/dev-channel/wh…

16:05
PWA работают на устройствах любого форм-фактора, на любой архитектуре и ОС, где есть браузер и доступ в интернет. О… 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:25

Safari и 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:27
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…

На фоне этого особенно иронично смотрится предложение 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:29
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…

До этого 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

Всё намного прозаичнее:

habr.ru/p/521248

habr.ru/p/515534

19:36

Но не стоит думать, что 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:31

PWA — это вообще про разработчиков и 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:

moddb.com/mods/brp/artic…

11:13

Кто помнит Far Cry 1? pic.twitter.com/32dXN9SmPB

11:14

Нас в команде 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:22

Lua – прикольный язык. На нём я в 9 классе написал читы для другой моей любимой игры — PainKilker (тоже, кстати, 20… twitter.com/i/web/status/1…

11:22

В 2015 Google закрыла Google Code и я перенёс проект на GitHub:

github.com/FluorescentHal…

11:23

О некоторых неочевидных проблемах, с которыми я столкнулся при разработке, запуске и эксплуатации в продакшене прог… 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:38

Google сейчас довольно активно продвигает 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

medium.com/samsung-intern… pic.twitter.com/NqVcNrfGhU

* браузер 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:44

Samsung 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 предложил я:

github.com/GoogleChromeLa…

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:47
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…

Но я придумал, как решить эту проблему. 😉

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

А у пользователя может быть установлено несколько браузеров.

Какой именно из них открывать?

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:31
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…

* Включить "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
Но я придумал, как решить эту проблему. 😉

twitter.com/alexey_rodiono…

Кстати, реализация этой идеи решает также и эту проблему. 😀

Но я придумал, как решить эту проблему. 😉

twitter.com/alexey_rodiono…

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:40
Starting 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:12
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…

А недавно я предложил и визуализировал похожую идею, но уже для десктопной, а не мобильной версии браузера:

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.mozilla.com

Hubs — это VRChat, созданный с использованием веб-технологий.

8:55
I'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:

lit.dev

Если вы знакомы с React, то очень быстро освоите Lit… twitter.com/i/web/status/1…

8:56
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…

Из интересного я разработал веб-компонент <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:

web.dev/promote-instal…

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):

apolloelements.dev

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:47

GraphQL — самая революционная технология извлечения данных со времен AJAX. Так же как React изменил опыт создания п… twitter.com/i/web/status/1…

12:48

На самом деле, всё, что я хотел бы рассказать вам о GraphQL, есть в моём докладе «Developer Experience (DX): Разраб… twitter.com/i/web/status/1…

12:49

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

Слайды:

bit.ly/graphql-dx

12:50

В этом докладе я рассказал об опыте интеграции и эксплуатации 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:52

GraphQL Voyager — инструмент, который позволяет наконец-то увидеть тот самый граф в GraphQL.… twitter.com/i/web/status/1…

12:52
Improved 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:55

Все мои идеи собраны в этом треде:

github.com/OneGraph/graph…

12:55

Многие мои идеи из этого треда также были реализованы в Apollo Studio:

Например:

12:56
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…

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:57
New 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:

github.com/zth/vscode-gra…

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

12:59

И инструмент, который отображает GraphQL-схему в VR:

graphql-vr.web.app

Кстати, под капотом 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:42
Amazing 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…

Также я активно участвовал в разработке GraphiQL Explorer.

Этот инструмент позволяет мышкой натыкать всегда валидн… twitter.com/i/web/status/1…

17:22

# Воскресенье 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.

vc.ru/tech/196785

10:04

Помимо аутсорс-разработки у компании есть свой собственный продукт — стартап внутри компании — Eventicious.

Это —… twitter.com/i/web/status/1…

10:04

Я как раз сейчас работаю в команде Eventicious.

Продукт интересный, лидер рынка приложений для мероприятий в России и Восточной Европе.

10:05

В прошлом году приложения, созданные на Eventicious, использовалось более чем на 1000 мероприятиях, включая Нашеств… twitter.com/i/web/status/1…

10:05

Фестиваль 404 (#404fest):

404fest.ru

10:05

Дизайн-выходные (Digital Weekend):

designweekend.ru

10:06
📣Всем спикерам📣

Прием заявок на выступления на юбилейном @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:24
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…

А между тем, жизнь не стоит на месте. 😉

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

other