Опубликовано: 7 ноября 2025 г.
Обеспечение совместимости браузеров для более чем 38 000 корпоративных клиентов по всей Японии — непростая задача. Когда Kintone ежедневно обеспечивает критически важные бизнес-процессы для более чем 1,5 миллиона приложений, каждое решение о поддержке браузера имеет значение.
Cybozu , ведущая японская компания по разработке программного обеспечения для коллективной работы, столкнулась с фундаментальной проблемой: как поддерживать единые веб-стандарты во всех продуктах, избегая при этом бремени обслуживания пользовательских матриц поддержки браузеров.
Решение? Внедрение Baseline в качестве стандарта разработки — шаг, который изменил подход к внедрению функций веб-платформы!
Задача: поддержка браузера с догадками
До выхода Baseline компания Cybozu придерживалась собственных критериев поддержки браузеров, основанных на журналах доступа и ручном отслеживании версий. Их стандартом была поддержка браузеров, охватывающих верхние 98% журналов доступа, а пользователям, чьи браузеры находились за пределами этого порога, показывался запрос на обновление .
Каждый квартал инженерные команды Cybozu тратили в общей сложности около часа на обновление критериев. Тем не менее, интеграция критериев с командой разработки проходила не так гладко, и часто возникали вопросы: когда можно использовать новые функции CSS? Когда можно удалить полифиллы для новых API JavaScript? И, собственно, какие функции можно использовать сейчас?
Разработчики не только не смогли обеспечить удобство и простоту использования пользовательских критериев Cybozu, но и поняли, что разработка на основе обнаружения пользовательских агентов и ручного отслеживания версий не сможет поспевать за скоростью развития современного Интернета.
Можно ли полагаться на строку User-Agent ?
Предыдущий подход Cybozu выводил названия и версии браузеров из строк User-Agent , а затем объединял эти результаты как «пользовательские» данные — но действительно ли это отражает реальность пользователей?
User-Agent — это заголовок HTTP-запроса, информация, которую любой клиент может выдать за что угодно. Журналы доступа к продукту содержат огромное количество запросов от ботов, поисковых роботов, злоумышленников и других источников. Некоторые клиенты намеренно отправляют старые строки User-Agent для различных целей, например, для сканирования уязвимостей. Следовательно, журналы доступа не могут отражать пользователей, которым должна предоставляться поддержка.
User-Agent не может отражать доступные функции
Версии браузеров не соответствуют функциям. Один и тот же номер версии может иметь разные возможности в зависимости от версии (стабильная/бета/разработка/канарская), флагов функций , экспериментов Finch или корпоративных политик . Более того, разные браузеры реализуют функции в разное время: CSS-вложение реализовано в Safari 16.5 (май 2023 г.), но в Chrome 112 (апрель 2023 г.). Строка User-Agent не указывает на доступность функции.
Обязанность поддерживать версии браузера самостоятельно
Обновления браузера — это не только новые функции: регулярные выпуски браузера включают критические обновления безопасности и исправления ошибок, а также новые возможности. При поддержке устаревших версий отказ от использования новых функций — не единственная проблема, это решение, которое напрямую влияет на безопасность пользователей. В корпоративных средах некоторые пользователи могут сталкиваться с обоснованными ограничениями. Например:
- Организации могут иметь строгие политики браузеров, запрещающие обновления.
- Устаревшее оборудование не поддерживает обновление современных браузеров.
- Пользователи в регулируемых отраслях с медленными процессами утверждения изменений.
Однако поддержка этих пользователей также означает, что они остаются уязвимыми .
Если инцидент безопасности произошёл из-за эксплуатации известной уязвимости в старой версии браузера, утверждение «поддержка этого браузера осуществлялась по запросу пользователей» не будет разумным. Если атака распространится на других пользователей, которые должным образом обновляют браузеры, разработчики и другие участники проекта несут ответственность за то, что не прекратили поддержку небезопасных браузеров.
Cybozu осознала, что такой подход создаёт риски для большинства пользователей, регулярно обновляющих свои браузеры. Поддержка браузеров исключительно на основе количества журналов не обеспечивает надлежащего уровня безопасности. Речь идёт не только об упущении новых функций, но и о невыполнении обязательств по защите пользователей.
Вопрос смещается с «Сколько пользователей использует эту версию?» на «Следует ли нам вообще поддерживать пользователей на основе версий браузеров?»
Почему Baseline — правильный ответ для Cybozu
Cybozu требовался новый подход, учитывающий не только эксплуатационные расходы на поддержание критериев поддержки браузеров, но и фундаментальные недостатки старой методологии. Baseline предоставил Cybozu именно это.
Внешне поддерживаемые, развивающиеся критерии
Вместо ручной ежеквартальной переоценки версий браузеров, Baseline предоставляет динамический ориентир , поддерживаемый группой сообщества W3C WebDX , а не отдельными компаниями, принимающими произвольные решения. Это означает, что критерии автоматически меняются с учётом информации от производителей браузеров и органов стандартизации.
Kintone больше не нужно самостоятельно управлять пороговыми значениями версий — Baseline развивается без каких-либо действий. Статус Baseline для функций даёт окончательный ответ на вопрос о доступности, и этот ответ обновляется по мере развития платформы.
Точность на уровне объектов
Вместо того чтобы пытаться отслеживать ситуацию отдельного браузера, Baseline применяет принципиально иной подход.
Базовый уровень «Широкодоступность» отражает доступность веб-функций в течение 30 или более месяцев в основных браузерах. Этот временной интервал был определен с целью « приблизительного учёта сигналов разработчиков, распространения новых версий браузеров с течением времени, оценки общей доли поддержки на рынке и суждений сообщества WebDX ». Устанавливая этот порог, базовый уровень устраняет необходимость отслеживания ненаблюдаемых индивидуальных ситуаций в браузерах.
С Baseline разработчики получают прямой ответ о доступности конкретной функции в разных браузерах. «Можно ли использовать запросы-контейнеры CSS?» — теперь на этот вопрос можно ответить. Разработчики могут мгновенно проверить статус Baseline на MDN или в других документах, не прибегая к перекрёстным ссылкам на матрицы совместимости.
Безопасность как основа дизайна
Приняв стандарт Baseline Widely available в качестве стандарта, Cybozu согласовала свою политику поддержки с временными рамками, которые естественным образом коррелируют с жизненными циклами поддержки производителей браузеров. Браузеры, которые продолжают активно поддерживаться, будут поддерживать все функции Widely available, а также получать критические обновления безопасности.
Критерии доступа, основанные на журналах, могли бы привязать поддержку к устаревшим браузерам, что лишило бы пользователей стимула к обновлению. Внедрение Baseline не только позволяет нам уверенно использовать современные функции, но и естественным образом приводит к необходимости обновления устаревших браузеров по мере развития веб-платформы.
Baseline не исключает уязвимые браузеры явно, но дает пользователям естественные стимулы обновлять свои браузеры.
Принятие базовой линии
Внедрение Baseline потребовало отказа от устаревшей системы управления версиями Cybozu. Это означало, что Cybozu нужна была уверенность в том, что Baseline будет работать без существенных недостатков. Знание того, какой процент пользователей это затронет, имело решающее значение для внедрения на корпоративном уровне.
Google Analytics Baseline Checker — это инструмент, который анализирует данные, экспортированные из Google Analytics, чтобы показать, какой процент пользователей поддерживает функции каждого базового года. Этот инструмент помог Cybozu оценить фактическое влияние выбора базовой цели на пользователей. После запуска Baseline Checker специалисты Cybozu обнаружили нечто примечательное:

Проверка Baseline Checker показала, что 98,8% пользователей Cybozu используют браузеры, поддерживающие целевой показатель Baseline Widely available . Это превышает предыдущий внутренний стандарт Cybozu, составлявший не менее 98% пользователей. На основе предоставленных данных можно проанализировать три ключевых момента:
- Ранее поддерживаемые браузеры не затронуты.
- Ранее неподдерживаемые браузеры : составляют примерно 0,8 %, которые соответствуют критериям базовой широкодоступности, но больше не отображают запрос на обновление браузера .
- Остальные браузеры продолжают получать запрос на обновление браузера, как и прежде.
В частности, это позволило исключить ложные срабатывания — около 0,8% пользователей, которым показывались необоснованные предупреждения, несмотря на использование совместимых браузеров. В то же время ложные срабатывания не могли быть вызваны предупреждениями для пользователей, которые ранее поддерживались.
Обладая этими данными, Cybozu может с уверенностью принять Baseline Widely available в качестве цели.
Влияние базовой линии на практике
Принять Baseline в качестве политики — это одно, но для её реализации требовалось разработать инструменты и процессы. Необходимо было гарантировать, что разработчики не смогут случайно использовать неподдерживаемые функции, не проверив статус Baseline вручную.
Статический анализ на основе конфигурации ESLint
@cybozu/eslint-config — это конфигурация на основе открытого исходного кода, используемая во всех продуктах Cybozu. Она поддерживалась, начиная с пресета css-baseline , который проверяет CSS-функции на соответствие Baseline во время сборки:
// eslint.config.mjs
import cybozuEslintConfigBaseline from '@cybozu/eslint-config/flat/presets/css-baseline.js';
export default [
...cybozuEslintConfigBaseline.map((config) => ({
...config,
files: ['**/*.css']
})),
];
Когда разработчики используют функции, которые еще не доступны в Baseline Widely, они немедленно получают обратную связь от ESLint:

Это предотвращает возникновение проблем совместимости в процессе производства. Разработчики могут принимать обоснованные решения на ранних этапах разработки: либо дождаться, пока функция станет широкодоступной, либо реализовать постепенное улучшение, точно зная, каких пользователей это коснётся. (Подробнее о поддержке CSS и базовых функций ESLint читайте здесь.)
Настройте транспайлеры для достижения базового уровня. Широко доступно.
Современные инструменты сборки начали поддерживать Baseline в качестве целевой версии. Например, Vite автоматически выбирает Baseline Widely Available в рабочей среде без дополнительной настройки. Browserslist теперь также поддерживает Baseline .
Использование различных настроек компилятора гарантирует, что наши JavaScript и CSS будут транспилироваться только при необходимости, избегая ненужных преобразований и полифиллов для функций, которые уже широко поддерживаются.
Исключить ручное обслуживание критериев и систему обнаружения браузера для получения отзывов пользователей
Наибольший выигрыш в плане поддержки был достигнут благодаря отказу от ручного отслеживания версий браузеров. Вместо ежеквартальных совещаний для обсуждения поддерживаемых версий браузеров Cybozu теперь использует общедоступный пакет @web-platform-dx/baseline-browser-mapping для ответа на эти вопросы.
Cybozu также разработала систему автоматического обнаружения браузеров, которая позволяет показывать пользователям устаревших браузеров предложения об обновлении.

Функция обнаружения браузера извлекает совместимые версии браузера непосредственно из пакета @web-platform-dx/baseline-browser-mapping .
Это происходит во время процесса сборки и генерирует предупреждающие баннеры, которые доступны всем командам разработчиков. По мере того, как окно Baseline Widely available расширяется и включает новые браузеры, наша система автоматически подхватывает изменения без необходимости ручного вмешательства.
Оптимизированная коммуникация
Одним из самых значительных, хотя и неожиданных, преимуществ стало то, как Baseline упростил взаимодействие между командами. Раньше для обсуждения совместимости браузеров требовались знания специфики компании: какие браузеры мы поддерживаем, какие версии и какие функции доступны сейчас. Новичкам требовалось время, чтобы изучить наши внутренние стандарты. С Baseline мы теперь опираемся на те же критерии совместимости, которые широко признаны в веб-сообществе.
Это также формирует общий язык как внутри наших инженерных команд, так и в более широком веб-сообществе. При обсуждении внедрения функций все ссылаются на одни и те же данные из одного источника, что устраняет необходимость объяснять внутренние политики или переводить их между различными фреймворками совместимости.
Инструменты разработки также не отстают: Visual Studio Code и панель «Стиль» в Chrome DevTools теперь напрямую отображают информацию о совместимости с базовыми версиями. Разработчикам больше не нужно постоянно проверять MDN или Can I use , чтобы убедиться, что функция безопасна для использования. Инструменты мгновенно информируют их об этом.
Сделайте так, чтобы продукт работал для всех с уверенностью
Благодаря Baseline мы смогли кардинально изменить наше отношение к совместимости браузеров: теперь мы не просто бремя, которым управляем, а основа, которой доверяем. Наша стратегия внедрения была сосредоточена на автоматизации на каждом этапе:
- Обратная связь во время разработки : статический анализ и карта базового состояния.
- Проверка во время сборки : транспиляторы автоматически ориентируются на базовую линию. Широко доступно.
- Обнаружение во время выполнения : предупреждения для пользователя о неподдерживаемых браузерах с использованием
baseline-browser-mapping. - Непрерывные обновления : автоматическая синхронизация с базовыми данными исключает необходимость ручного обслуживания.
Результаты говорят сами за себя:
- Ноль часов, потраченных на поддержку версии браузера.
- Охват пользователей свыше 98,8% поддерживается с уверенностью на уровне функций.
- Мгновенные и спонтанные ответы на часто задаваемые вопросы , которые дают ответ на вопрос «можно ли использовать эту функцию в этой версии браузера?»
- Общий словарь среди инженерных групп.
- Более четкий путь к внедрению функций побуждает команды обсуждать интеграцию новых функций и сроки удаления полифиллов, если это необходимо.
Организациям, рассматривающим внедрение Baseline, крайне важно понимать, как этот переход повлияет на ваших пользователей. Такие инструменты, как Google Analytics Baseline Checker, делают этот анализ более простым и наглядным. Убедившись в достоверности данных и приняв решение о внедрении Baseline, вы сможете использовать растущую экосистему Baseline для организации процесса разработки.
Веб-платформа стала мощнее, стабильнее, надежнее и развивается быстрее, чем раньше. Благодаря Baseline мы можем уверенно использовать её потенциал в производстве.
Ресурсы
- Оригинальная статья на японском языке:プロダクト開発の基準に Baseline を取り入れるまで - Cybozu Inside Out
- Конфигурация Cybozu ESLint:
@cybozu/eslint-configна GitHub - Проверка базового уровня Google Analytics: Проверка базового уровня Google Analytics
- Базовое сопоставление браузера:
@web-platform-dx/baseline-browser-mapping - Узнайте больше о Baseline: Baseline на MDN