Открыть сервис

Kangax Compatibility Tables

Kangax Compatibility Tables (также известные как «таблицы совместимости Kangax», «Kangax tables» или «Kangax compatibility data») — это неофициальный, но широко используемый в веб-разработке набор таблиц, демонстрирующих поддержку различных функций, API и возможностей веб-стандартов (HTML, CSS, JavaScript, SVG и других) в различных браузерах и их версиях. Созданы и поддерживаются российским веб-разработчиком и исследователем Юрием Кацером (известным под псевдонимом Kangax).

История

Проект был запущен в 2010 году как личный эксперимент Юрия Кацера, который хотел систематизировать данные о поддержке новых возможностей веб-платформ в браузерах. Первоначально таблицы существовали в виде статичных HTML-страниц, где для каждой функции (например, CSS-свойства border-radius или JavaScript-метода Array.prototype.includes) указывались версии браузеров, в которых она появилась, а также статус поддержки (полная, частичная, отсутствует).

В 2011 году проект был опубликован на GitHub под названием «kangax/compat-table» и стал открытым для сообщества. С этого момента таблицы начали активно пополняться данными от других разработчиков, а сам формат данных эволюционировал от простого HTML к структурированному JSON, что позволило автоматизировать обновление и интеграцию с другими инструментами.

К 2015 году таблицы Kangax стали одним из основных источников информации о совместимости веб-технологий, наряду с такими ресурсами, как Can I use и MDN Web Docs. В 2016 году проект был переписан на JavaScript с использованием фреймворка React, что позволило сделать интерфейс более интерактивным — появилась возможность фильтрации по браузерам, версиям и категориям функций.

Структура и содержание

Основные разделы

Таблицы Kangax охватывают следующие категории веб-технологий:

  • JavaScript (ES5, ES6/ES2015, ES2016+, ES.Next) — поддержка новых синтаксических конструкций, методов, классов, модулей, Promise, async/await и т.д.
  • CSS — поддержка свойств (flexbox, grid, custom properties), селекторов, псевдоэлементов, анимаций, трансформаций.
  • HTML5 — поддержка новых элементов (<video>, <audio>, <canvas>), атрибутов, API (Drag and Drop, History API, Web Storage).
  • SVG — поддержка элементов, атрибутов, фильтров, анимаций.
  • Web API — поддержка Fetch API, WebSocket, WebRTC, Service Workers, Geolocation, IndexedDB и других.
  • Node.js — поддержка возможностей JavaScript в среде выполнения Node.js (начиная с версии 0.10).

Формат данных

Каждая запись в таблице представляет собой объект JSON, содержащий:

  • name — название функции (например, «Array.prototype.includes»).
  • category — категория (например, «ES6»).
  • status — статус стандартизации (например, «finished» для завершённых, «proposal» для предложений).
  • browsers — объект с данными по каждому браузеру (Chrome, Firefox, Safari, Edge, Opera, IE, Node.js и др.), где для каждой версии указано:
  • true — полная поддержка,
  • false — отсутствие поддержки,
  • null — неизвестно,
  • partial — частичная поддержка (с указанием, что именно не работает),
  • flag — поддержка за флагом (например, в экспериментальных версиях).

Интерфейс

На сайте compat-table.github.io/compat-table отображается таблица, где строки — это функции, столбцы — браузеры, а ячейки окрашены в зелёный (поддерживается), красный (не поддерживается), жёлтый (частично) или серый (неизвестно). Пользователь может:

  • Выбрать конкретную версию браузера.
  • Отфильтровать функции по категориям.
  • Посмотреть детали по каждой функции (например, ссылки на спецификации, баг-трекеры, тесты).

Применение

Для веб-разработчиков

Основное назначение таблиц — помочь разработчикам определить, какие возможности веб-платформы безопасно использовать в проектах, а какие требуют полифиллов, транспиляции (например, с помощью Babel) или альтернативных решений. Например, если разработчик хочет использовать CSS Grid, он может проверить в таблице, какие версии браузеров его поддерживают, и принять решение о необходимости fallback-стилей.

Для тестирования и QA

Таблицы используются для составления тестовых сценариев: если функция помечена как «поддерживается» в определённом браузере, но на практике не работает, это может указывать на баг в браузере или ошибку в коде.

Для образовательных целей

Таблицы служат наглядным пособием для изучения эволюции веб-стандартов: можно увидеть, как постепенно браузеры внедряли новые возможности, начиная с экспериментальных версий и заканчивая полной поддержкой.

Критика и ограничения

Неполнота данных

Таблицы Kangax не охватывают все существующие веб-API и функции. Например, они не включают данные о поддержке CSS-свойств, которые не были стандартизированы, или о специфических API для мобильных браузеров (например, для iOS Safari или Android WebView). Также отсутствуют данные о производительности, багах и особенностях реализации.

Устаревание

Хотя проект обновляется сообществом, некоторые функции могут быть помечены как «не поддерживаемые» даже после того, как браузеры их внедрили. Это связано с тем, что данные вносятся вручную и могут запаздывать на несколько месяцев.

Отсутствие контекста

Таблицы показывают только факт поддержки, но не дают информации о том, насколько корректно реализована функция. Например, Array.prototype.includes может быть помечена как поддерживаемая в IE 11, но на самом деле она там отсутствует (ошибка в данных). Разработчикам рекомендуется перепроверять информацию через другие источники, такие как Can I use или MDN.

Зависимость от сообщества

Проект поддерживается добровольцами, и его будущее зависит от активности сообщества. В 2020 году Юрий Кацер объявил о прекращении активной разработки, но проект остаётся открытым для пулл-реквестов.

Связь с другими проектами

  • Can I use — более популярный, но менее детализированный ресурс, который также предоставляет данные о совместимости, но с акцентом на CSS и HTML, а не на JavaScript.
  • MDN Browser Compatibility Data — официальный проект Mozilla, который собирает данные о совместимости для документации MDN. В отличие от Kangax, он охватывает все веб-API и имеет более формализованный процесс обновления.
  • Babel — транспилятор JavaScript, который использует данные Kangax для определения, какие синтаксические конструкции нужно преобразовывать для поддержки старых браузеров.

Интересные факты

  • Псевдоним «Kangax» происходит от первых букв имени и фамилии Юрия Кацера (Kangax — Кацер, Юрий, Алексеевич, Геннадий, Александр, Х — произвольная буква).
  • Проект стал одним из первых, кто начал систематически собирать данные о поддержке ES6, когда стандарт ещё не был окончательно утверждён.
  • В 2014 году таблицы Kangax использовались в качестве основы для создания инструмента «ES6 Compatibility Table», который позже был интегрирован в Babel.
  • Несмотря на то, что проект официально не обновлялся с 2020 года, он продолжает использоваться разработчиками, так как данные по основным функциям (ES6, ES7) остаются актуальными.

Источники

  • Официальный репозиторий проекта на GitHub: kangax/compat-table
  • Сайт проекта: compat-table.github.io/compat-table
  • Статья Юрия Кацера «How to create a browser compatibility table» (2012)
  • Документация MDN по совместимости браузеров
  • Материалы конференций (например, доклад Kangax на JSConf 2015)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →