Перейти к содержанию

Совместимость браузеров

Требования применяются к browser-части frontend-приложений профилей CSR, SSR, SSG и edge по frontend/rendering-profiles.md. Уровни обязательности определены в корневом README.md.

FE-COMP-001. Объявленная матрица поддержки браузеров

Уровень: MUST

Применяется к: целевой среде выполнения приложения

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

Обоснование

Объявленная матрица делает результат transpilation, polyfill и проверки однозначным и согласованным между разработчиком, CI и поставкой.

Проверка

  • review машинно-читаемой декларации матрицы;
  • проверка использования матрицы bundler, transpiler и полифиллами;
  • проверка согласованности матрицы между инструментами.

Исключения

Поддержка конкретного браузера по требованию заказчика должна быть явно отражена в матрице.

FE-COMP-002. Соответствие сборки объявленной матрице

Уровень: MUST

Применяется к: выходным файлам сборки

Bundler и transpiler должны быть настроены на объявленную по FE-COMP-001 матрицу. Polyfill должен включаться для API браузера, отсутствующего в целевых версиях, но используемого приложением. Запрещено использовать синтаксис или API браузера, недоступные в объявленной матрице, без соответствующей transpilation или polyfill.

Обоснование

Рассогласование настроек сборки и матрицы приводит к неработающему приложению у части пользователей.

Проверка

  • сборка с проверкой target и polyfill;
  • статический анализ использования API, требующего polyfill;
  • запуск приложения в представительном браузере из нижней границы матрицы.

Исключения

Не допускаются.

FE-COMP-003. Feature detection и контролируемая деградация

Уровень: MUST

Применяется к: использованию API браузера, необязательного для основного сценария

Приложение должно определять доступность возможности через feature detection, а не через разбор user agent. При отсутствии возможности приложение должно предоставлять определённый откат, эквивалентный путь либо ясное для пользователя сообщение.

Запрещено молчаливо ломать основной сценарий при отсутствии необязательной возможности.

Обоснование

User agent ненадёжен, а молчаливая неработоспособность ухудшает результат пользователя и затрудняет диагностику.

Проверка

  • тест отключения возможности в целевом браузере;
  • review использования feature detection;
  • проверка отступного пути или сообщения.

Исключения

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

FE-COMP-004. Обратно совместимое изменение матрицы

Уровень: MUST

Применяется к: изменению действующей матрицы поддержки браузеров

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

Обоснование

Сужение матрицы лишает часть пользователей работоспособного приложения и требует осознанного решения.

Проверка

  • review diff матрицы и оценки затронутых пользователей по FE-COMP-005;
  • проверка плана коммуникации и отката;
  • тест основного сценария в граничном браузере новой матрицы.

Исключения

Экстренное отключение поддержки небезопасного браузера выполняется по процедуре инцидента.

FE-COMP-005. Контроль соответствия матрицы реальным пользователям

Уровень: SHOULD

Применяется к: данным о браузерах реальных пользователей

При наличии репрезентативных данных проекту следует периодически сопоставлять матрицу с распределением браузеров пользователей по данным RUM из FE-OBS-001. Существенное расхождение должно рассматриваться при следующем изменении матрицы; отдельный ADR только для периодического пересмотра не требуется.

Обоснование

Матрица без сверки с реальной аудиторией приводит либо к потере пользователей, либо к избыточным затратам на transpilation и polyfill.

Проверка

  • сопоставление распределения браузеров из RUM с матрицей;
  • проверка даты последней доступной сверки;
  • review существенного расхождения при изменении матрицы.

Исключения

До появления репрезентативных RUM-данных применяется объявленная проектом матрица без дополнительного источника статистики.