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 →