Bowser — это небольшая JavaScript‑библиотека для определения веб‑браузера, его версии, движка и характеристик платформы на основе строки user‑agent. Библиотека предоставляет удобный программный интерфейс для получения имени браузера, номера версии, движка рендеринга и флагов, указывающих на особенности платформы или устройства, такие как мобильность, наличие WebView или конкретная операционная система. Bowser распространён в средах разработки фронтенда как инструмент для адаптации поведения к особенностям конкретных браузеров и для обеспечения совместимости при разном уровне поддержки веб‑стандартов.
Проект появился как лёгкая альтернатива более тяжёлым и универсальным решениям, ориентированная на простоту интеграции и минимальный объём кода. Архитектура библиотеки фокусируется на распознавании ключевых признаков в user‑agent и предоставлении их в виде структурированных свойств и методов, что позволяет разработчику принимать условные решения в рантайме без глубокого анализа строк вручную. Если какие‑то подробные сведения о происхождении или авторстве отсутствуют в общедоступных источниках, это не препятствует описанию её типичных возможностей и сценариев применения на основании известной функциональности подобных инструментов.
- Определение браузера: возвращает имя браузера (например, Chrome, Firefox, Safari, Edge) и основную версию.
- Определение движка: выявляет движок рендеринга (например, Blink, Gecko, WebKit) и его версию при доступных данных.
- Платформенные флаги: выявляет операционную систему и устройство (Windows, macOS, Linux, Android, iOS, мобильное/десктопное).
- Флаги окружения: сообщает о запуске в WebView, headless‑режиме или встроенных оболочках.
- Простое API: предоставляет методы и свойства для быстрого доступа к результатам детекции без разбора user‑agent вручную.
- Лёгкий размер: оптимизирована для минимального влияния на размер сборки и производительность страницы.
- Обратная совместимость: учитывает распространённые вариации строк user‑agent и особенности мобильных и десктопных платформ.
- Гибкость интеграции: может использоваться как самостоятельный скрипт или в составе сборки с современными инструментами фронтенд‑разработки.