Чем больше я с ним работаю, тем больше он мне напоминает IE.

Если вы спросите разработчика, что он чувствует, когда слышит IE (Internet Explorer), наиболее частый ответ - боль. И я не исключение. Работаю веб-разработчиком более десяти лет. За это время у меня было много разных проектов, в которых нам приходилось поддерживать IE. Я знаю это уныние, когда браузер не поддерживает некоторые общие для остальных браузеров функции. Или когда он отображает элементы в неправильных местах. И самое ужасное, когда нужно отлаживать неожиданное поведение.

К счастью, в обычной жизни я использую MacBook Pro с M1. Мне нравится использовать программное обеспечение Apple, потому что оно быстрое, энергоэффективное и красивое. Safari - одно из приложений Apple. И мне хочется, чтобы он нравился, но чем больше я с ним работаю, тем больше он мне напоминает IE. Вот почему так важно выделять проблемы, которые касаются каждого из нас. Для некоторых из них я предложу решения.

Поддержка прогрессивных веб-приложений

Поддержка PWA, точнее ее отсутствие, в настоящее время является одним из самых критических препятствий. Вы знаете, что такое PWA? Это веб-приложение, которое вы можете открыть в браузере и установить локально. Он будет выглядеть как обычное приложение, установленное из магазина приложений, с возможностью запуска в автономном режиме. Теоретически это можно сделать даже сейчас (на iPhone), но Apple не дает вам всего списка ограничений:

  • Нельзя хранить больше 50 Мб
  • Нет доступа по Bluetooth
  • Веб-ресурс для доступа к диалоговому окну собственного общего доступа недоступен
  • Без фоновой синхронизации и веб-push-уведомлений
  • Нет баннера веб-приложения для приглашения пользователя установить приложение
  • Вы не можете настроить заставку

Эти ограничения делают технологию бесполезной. Apple хочет контролировать рынок и разрешить пользователям устанавливать «настоящие» приложения только через App Store.

В Safari на Mac этого вообще нельзя делать.

Веб-push-уведомления

Эта тема была в списке ограничений PWA, но заслуживает отдельного разговора.

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

Мессенджеры - лучший пример. В настоящее время мессенджер Telegram или FB может уведомлять пользователей о новом сообщении только при открытии сайта с переключением заголовка и звуком. Если пользователь сворачивает браузер с приглушенным звуком, очевидно, что он пропустил сообщение.

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

Поведение при прокрутке

Apple очень гордится производительностью и энергоэффективностью Safari. И это небезосновательно!

Чтобы добиться такой хорошей производительности, они реализовали множество оптимизаций. Один из них - блокировка обновлений DOM во время кинетической прокрутки. Возможно, это не единственная оптимизация, но после этого у пользователей начались лаги при прокрутке. Самая известная проблема - прокрутка комментариев на странице видео YouTube. Есть обсуждения на официальном форуме поддержки и MacRumors.

Чтобы решить эту проблему, вам необходимо установить расширение UserScripts и добавить несколько стилей CSS.

Но это не единственное место, где существует эта проблема. Я вижу какие-то проблемы с прокруткой на многих разных сайтах, таких как музыка на YouTube, Facebook, Reddit и других, где к событию прокрутки добавлено множество функций.

Это плата за быструю прокрутку, поэтому я надеюсь, что Apple найдет лучший баланс.

YouTube

Когда мы начали говорить о YouTube, возможно, вы заметили проблему, когда некоторые эскизы или аватары не загружаются. Вы можете найти много разных тем по этой проблеме в обсуждениях Apple (например, здесь и здесь).

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

Есть два варианта, как очистить кеш в Safari:

  1. Нажмите Shift на клавиатуре, одновременно нажимая кнопку Обновить в Safari.
  2. Нажмите Command (⌘) + Option () + R на клавиатуре.

Выбирайте все, что хотите.

Фавиконы

Вы видели значок Instagram в Safari на Mac? Почему-то он черно-белый.

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

Расширения

До 2018 года в Safari был свой фреймворк для создания расширений для браузеров. Вот почему в App Store гораздо меньше расширений. Только после 2018 года они начали использовать WebExtensions Api как Chrome. Это огромный шаг вперед для разработчиков расширений, поскольку основной API одинаков во всех основных браузерах. Но время прошло, и есть большая разница в количестве расширений по сравнению с другими браузерами.

Стандартизация медиаформатов

Вы, наверное, все знаете форматы изображений jpeg и png. Они старые (с 1992 года) и тяжелые, поэтому в 2017 году технологические гиганты решили разработать более эффективные медиаформаты. Apple выпустила HEIC (высокоэффективное кодирование изображений), а Google реализовал WebP. Но почему-то не сошлись во мнении, какой из них лучше. Chrome поддерживает только WebP, а Safari уважает только HEIC. Только в середине 2020 года Apple добавила поддержку WebP в Safari.

Это история об изображениях, но то же самое и о видео. Google разработал формат WebM для видео, и даже сейчас (январь 2021 г.) Safari его не поддерживает.

В 2019 году ИТ-гиганты объединились и начали работу над самым современным и бесплатным видеокодеком - AV1. Apple, Google, Netflix и многие другие (список впечатляющий) основали компанию Alliance for Open Media. Эти компании поделились своими технологиями и патентами, чтобы создать кодек будущего. Кодек готов. Netflix уже использует его в своих приложениях, но Safari также не поддерживает его.

Как видите, Safari - довольно консервативный браузер, и у Apple есть свои интересы, которые не всегда совпадают с пожеланиями пользователей.

Заключение

Safari - быстрый, энергоэффективный, возможно, даже безопасный браузер. Но у компании, которая стоит за этим браузером, есть своя стратегия. Конечно, основная цель этой стратегии - заработок. Предоставление пользователям возможности устанавливать приложения в обход App Store - невыгодная идея. Возможно, такое же объяснение справедливо для использования всех популярных медиаформатов. Но эти проблемы блокируют развитие технологий и создают дополнительные проблемы для разработчиков.

Спасибо за внимание!