Browser Compatibility Data
Browser Compatibility Data (данные о совместимости веб-браузеров, также известные как «таблицы совместимости» или «матрицы поддержки») — это структурированная информация о том, какие веб-технологии (HTML-элементы, CSS-свойства, JavaScript-API, HTTP-заголовки и другие функции) поддерживаются различными версиями браузеров на разных операционных системах и устройствах. Данные являются критическим элементом веб-разработки, позволяя разработчикам принимать обоснованные решения о выборе технологий и обеспечивать корректное отображение сайтов для максимальной аудитории.
История
Проблема несовместимости браузеров возникла практически одновременно с появлением первых графических веб-браузеров в начале 1990-х годов. В эпоху «войн браузеров» (середина — конец 1990-х) между Internet Explorer и Netscape Navigator различия в поддержке HTML и JavaScript были настолько значительными, что разработчикам приходилось создавать отдельные версии сайтов для каждого браузера. В этот период данные о совместимости распространялись неформально — через форумы, личные сайты разработчиков и списки рассылки.
Первым систематизированным источником данных о совместимости стал проект QuirksMode (основан в 2000 году), где публиковались сравнительные таблицы поддержки CSS и DOM. В 2005 году появился сайт Can I Use, который к концу 2000-х стал де-факто стандартом для проверки совместимости веб-технологий. В 2010-х годах крупные браузерные вендоры (Google, Mozilla, Microsoft, Apple) начали публиковать собственные данные о поддержке функций в форматах, пригодных для машинной обработки.
В 2016 году Mozilla инициировала проект Browser Compatibility Data (BCD) — открытый репозиторий на GitHub, который структурирует данные о совместимости для всех основных браузеров. В 2020-х годах BCD стал основой для документации MDN Web Docs, а также используется инструментами автоматической проверки совместимости (например, Lighthouse, Autoprefixer).
Структура и формат данных
Данные о совместимости обычно организованы в виде иерархической структуры, где каждый узел соответствует определённой веб-технологии. В репозитории BCD используется формат JSON, где для каждой функции указываются:
- Браузеры и версии: минимальная версия браузера, в которой функция поддерживается (например, Chrome 49, Firefox 52).
- Статус поддержки: флаги (например,
partial,preview,deprecated,experimental). - Платформы: десктопные и мобильные версии, планшеты, серверные окружения (Node.js, Deno).
- Примечания: информация о багах, альтернативных реализациях, необходимости префиксов (например,
-webkit-,-moz-,-ms-). - Ссылки: на спецификации W3C, отчёты о багах, обсуждения в сообществе.
Пример структуры для CSS-свойства display: flex (сокращённо): ``json { "css": { "properties": { "display": { "flex": { "support": { "chrome": { "version_added": "21", "prefix": "-webkit-" }, "firefox": { "version_added": "20" }, "ie": { "version_added": "10", "prefix": "-ms-" }, "safari": { "version_added": "6.1", "prefix": "-webkit-" } } } } } } } ``
Источники данных
Основные источники
- Can I Use (caniuse.com) — крупнейший коммерческий проект, собирающий данные о поддержке HTML5, CSS3, SVG, JavaScript API. Данные обновляются вручную командой проекта на основе официальных релизов браузеров и тестирования.
- MDN Browser Compatibility Data (BCD) — открытый репозиторий на GitHub (github.com/mdn/browser-compat-data), поддерживаемый сообществом разработчиков. Данные верифицируются через автоматические тесты и ревью.
- Web Platform Tests (wpt.fyi) — проект W3C, содержащий автоматизированные тесты для проверки соответствия браузеров спецификациям. Результаты тестов используются как первичный источник для BCD.
- Официальные релизные заметки браузеров — Google Chrome (chromium.org), Mozilla Firefox (developer.mozilla.org), Apple Safari (developer.apple.com), Microsoft Edge (docs.microsoft.com). Вендоры публикуют списки новых API и изменений в поддержке.
- StatCounter / NetMarketShare — данные о доле рынка браузеров, используемые для оценки актуальности информации о совместимости (например, если браузер имеет долю менее 1%, его поддержка может не учитываться).
Дополнительные источники
- Kangax Compatibility Tables (github.com/kangax/compat-table) — таблицы для ECMAScript (JavaScript).
- Node.js Compatibility (nodejs.org/en/docs/es6) — данные о поддержке современных возможностей JavaScript в среде выполнения Node.js.
- Igalia Web Platform Tests — результаты тестирования браузеров на соответствие спецификациям CSS Grid, Flexbox, Web Components.
Применение в веб-разработке
Выбор технологий
Разработчики используют данные о совместимости для принятия решений о том, какие функции можно безопасно использовать в проекте. Например, если целевая аудитория использует браузеры не старше двух лет, можно применять CSS Grid, который поддерживается во всех современных браузерах, но не в Internet Explorer 11. Для принятия решения используются инструменты:
- Can I Use — веб-интерфейс с фильтрацией по версиям браузеров.
- Browserslist — конфигурационный файл (например,
> 1%, last 2 versions, not dead), который задаёт целевые браузеры. Данные о доле рынка берутся из StatCounter. - Autoprefixer — PostCSS-плагин, автоматически добавляющий вендорные префиксы на основе данных Can I Use.
- Lighthouse — инструмент аудита, проверяющий, используются ли устаревшие или неподдерживаемые функции.
Тестирование и отладка
Данные о совместимости используются в системах автоматического тестирования (Selenium, Puppeteer, Playwright) для выбора браузеров и версий для прогона тестов. Например, если в BCD указано, что свойство aspect-ratio не поддерживается в Safari до версии 15, тесты для этого свойства запускаются только в Safari 15+.
Сборка и оптимизация
Современные сборщики (Webpack, Vite) интегрируются с данными о совместимости для:
- Удаления полифиллов для функций, поддерживаемых во всех целевых браузерах.
- Транспиляции JavaScript (Babel) на основе целевых версий браузеров.
- Выбора оптимальных CSS-свойств (например, использование
gapвместоmarginдля флексбоксов, если целевые браузеры поддерживаютgap).
Ограничения и критика
Неполнота данных
Данные о совместимости не всегда отражают реальное поведение браузеров. Например, функция может быть указана как поддерживаемая, но иметь скрытые баги или отличаться в реализации. Особенно это касается редко используемых API и старых версий браузеров. По данным исследования 2020 года, около 15% записей в BCD содержали ошибки, связанные с неправильной версией поддержки или отсутствием информации о частичной поддержке.
Зависимость от источников
Данные Can I Use и BCD обновляются с задержкой в несколько недель после выхода новых версий браузеров. Для экспериментальных функций (например, CSS container queries в Chrome 105) информация может отсутствовать до официального релиза. Кроме того, данные о мобильных браузерах (Samsung Internet, Opera Mini, UC Browser) часто менее точны, чем о десктопных.
Субъективность классификации
Статус «частичная поддержка» (partial) не имеет строгого определения. Разные проекты трактуют его по-разному: в Can I Use это означает, что функция работает, но с ограничениями, а в BCD — что реализация неполная или содержит баги. Это может вводить в заблуждение разработчиков, особенно новичков.
Проблемы с устаревшими браузерами
Данные о поддержке в Internet Explorer 11, который перестал обновляться в 2022 году, остаются в BCD, но не обновляются. Аналогичная ситуация с браузерами на базе устаревших движков (например, Edge Legacy на EdgeHTML). Разработчики могут ошибочно полагать, что функция, помеченная как поддерживаемая в IE11, работает корректно, хотя на практике могут быть баги, не зафиксированные в данных.
Будущее
Развитие данных о совместимости связано с автоматизацией сбора информации. Проект Web Platform Tests (WPT) стремится к тому, чтобы результаты тестов автоматически обновляли BCD. В 2023 году Mozilla и Google начали интеграцию WPT с BCD, что позволяет сократить задержку обновления данных до нескольких дней. В 2024 году появились прототипы инструментов, использующих машинное обучение для анализа логов браузеров и выявления скрытых несовместимостей.
Также наблюдается тенденция к унификации форматов: в 2022 году W3C опубликовала черновик спецификации Web Platform Features, которая предлагает единый реестр для всех веб-технологий с автоматической верификацией через WPT. Ожидается, что к 2026 году этот реестр заменит разрозненные источники данных.
Источники
- MDN Web Docs — Browser Compatibility Data (BCD) — документация репозитория.
- Can I Use — описание методологии сбора данных.
- Web Platform Tests — официальный сайт проекта W3C.
- StatCounter Global Stats — данные о доле рынка браузеров.
- «The State of Browser Compatibility Data» — отчёт Mozilla за 2022 год.
- «Automating Browser Compatibility Data Collection» — доклад на конференции Chrome Dev Summit 2023.
- W3C Draft — Web Platform Features Registry (2022).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →