Подводные камни In-app браузеров



Когда вы открываете ссылки в каких-нибудь нативных приложениях соц. сетей, они часто норовят открывать даже не WebView, а какую-то свою обёртку над WebView, которая имеет полный контроль над вашей страницей. Поль Эш-Лоран объясняет, почему такие обёртки — зло.



1. У них меньше функций, чем у браузеров. Просто потому, что операционные системы в принципе ограничивают WebView из соображений приватности и безопасности.



2. В In-app браузерах у вас вообще нет контроля над собственным кодом. Если какой-нибудь Cakebook решит вставить туда свой скрипт для «улучшения пользовательского опыта», то вы ничего с этим сделать не сможете.



3. Неконсистентный для пользователя UI/UX. Дизайнеры таких браузеров считают важным сделать что-то «удобнее оригинала», но забывают, что в основном пользователи сидят именно в обычных браузерах, поэтому там привычно. А сила привычки очень велика.



В 2022 году был скандал вокруг того, что Meta добавляет отдельный скрипт на каждую открываемую веб-страницу в своих приложениях, который отслеживает буквально каждое мельчайшее действие на странице. К сожалению, в 2023 году дело против Meta по этому кейсу было закрыто. TikTok делает так же. И не только они. Недавно Twitter/X зачем-то стал открывать страницы в первый раз в какой-то поделке, похожей на браузер, а во второй раз — в WebView.



Так и что с этим делать? Мы не контролируем собственные сайты?



В статье предлагается посмотреть на https://inappbrowser.com/ и https://inappdebugger.com/, которые помогают детектить, открывается сайт в обычном браузере или в In-app браузере. Плюс показывают код, который был внезапно вставлен на страницу извне.



Для Android можно использовать префикс intent: в ссылках. Так операционная система будет понимать, что вы хотите открыть именно дефолтный браузер в системе, а не In-app.



Также для любых ОС, если вы хотите сберечь пользовательские данные, можно задетектить, что страница открыта в In-app браузере, и вывести для пользователя инструкцию, как открыть страницу в нормальном браузере. Увы, требует дополнительной разработки, причём поди ещё угадай, какую инструкцию составить. Тот же Twitter очень дерзко в своём In-app браузере в принципе не даёт опции открыть в дефолтном браузере.



https://frontendmasters.com/blog/the-pitfalls-of-in-app-browsers/