Skip to content
On this page

UAParser.js Changelog

Migrating from v1 to v2

What's Breaking:

  • Licensing Changes:

    • UAParser.js is now licensed under AGPLv3 for open-source use, with PRO Licenses available for commercial/proprietary use
  • Browser Detection on Mobile Devices:

    • "Chrome" => "Mobile Chrome"
    • "Firefox" => "Mobile Firefox"
  • OS Detection:

    • "Mac OS" => "macOS"
    • "Chromium OS" => "Chrome OS"

What's New:

  • Support for ES Modules & TypeScript:

    • Import directly as an ES module with TypeScript support: import { UAParser } from 'ua-parser-js'
  • Support for Custom/Predefined Extensions:

    • Pass custom regexes or predefined extensions as a list to UAParser()
  • Support for CLI Parsing:

    • Parse a user-agent directly from the command line using npx ua-parser-js "[User-Agent]"
  • Enhanced Detection with Client Hints:

    • withClientHints(): Improves detection accuracy by leveraging client hints
  • Enhanced Detection with Feature Detection:

    • withFeatureCheck(): Refines detection results using feature detection
  • Simple Comparison for Detection Results:

    • is(): Enables easy comparison checks against the detection result
  • Detailed Result Output:

    • toString(): Returns the detection result in form of a full-name string
  • New Device Type:

    • Added xr to identify AR/VR devices
  • New Browser Property:

    • Added browser.type to identify additional browser types:
      • crawler, cli, email, fetcher, inapp, library, mediaplayer
  • New Submodules:

    • 'ua-parser-js/enums': Provides constants for these specific properties:

      • browser.name, browser.type, cpu.architecture, device.type, device.vendor, engine.name, os.name
    • 'ua-parser-js/extensions': Predefined extensions for various use cases:

      • Bots, Crawlers, CLIs, Emails, ExtraDevices, Fetchers, InApps, Libraries, Mediaplayers
    • 'ua-parser-js/helpers': Provides utility methods to extend detection functionality:

      • getDeviceVendor(): Guesses the device vendor based on its model name
      • isAppleSilicon(): Detects Apple Silicon device properties
      • isBot(): Checks if the browser is a bot
      • isChromeFamily(): Checks if the browser is Chrome-based (uses Blink engine) — e.g., New Opera, New Edge, Vivaldi, Brave, Arc, etc.
      • isElectron(): Detects if current window is running within Electron
      • isFromEU(): Detects if current browser's timezone is from an EU country
      • isFrozenUA(): Checks if the user-agent matches a frozen/reduced user-agent pattern
      • isStandalonePWA(): Detects if current window is a standalone PWA

Version 2.0.0-rc.3

  • Add support for Headers object
  • Add new device: Advan, Cat, Energizer, Honor, IMO, Micromax, Smartfren
  • Add new engine: Servo
  • ua-parser-js/extensions submodule:
    • Breaking change: rename module to library
    • Add new email clients: Evolution, KMail, Kontact
    • Add new bots: 360Spider, Archive.org Bots, CCBot, DataForSeoBot, DuckAssistBot, Exabot, Google Bots, Meta Bots, MojeekBot, PerplexityBot, PetalBot, TurnitinBot, Yeti, YisouSpider

Version 2.0.0-rc.2

  • Fix incorrect import path in ESM files
  • Add new browser: 115, SlimBoat, Slimjet, LibreWolf
  • Improve browser detection: 2345, 360, Dragon, Iron, Maxthon
  • ua-parser-js/enums submodule:
    • Add Chromecast OS variants: Android/Fuchsia/Linux/SmartSpeaker
  • ua-parser-js/helpers submodule:
    • Add new method: isBot() to check if the browser is identified as a bot

Version 2.0.0-rc.1

  • Fix Python Request mistakenly identified as Meta Quest
  • Add new browser: Helio
  • Add new device: itel, Nothing, Pico, TCL
  • Add new engine: ArkWeb
  • Add new OS: OpenHarmony, Pico
  • Improve browser detection: Quark
  • Improve device detection: Xiaomi, Amazon Echo Show, Google Chromecast, Samsung Galaxy Watch
  • ua-parser-js/helpers submodule:
    • Add new method:
      • getDeviceVendor() to guess for a device vendor based on its model name
      • isElectron() to check if current window is running inside Electron
      • isFromEU() to check if current window is from an EU (European Union) country
      • isStandalonePWA() to check if current window is a standalone PWA
    • Rename isChromiumBased() to isChromeFamily()
    • Update isAppleSilicon() to also checks for WebGL renderer info
  • ua-parser-js/extensions submodule:
    • Restore Bots as a compilation of all these browser types: cli, crawler, fetcher, and library

Version 2.0.0-beta.3

  • Breaking:
    • AR/VR devices moved to new device type: xr
    • New property in browser: type
  • New features:
    • Parse directly from command line using npx ua-parser-js
    • Extensions can be passed as a list to UAParser()
  • Add new browser: Pico Browser, Twitter, Wolvic
  • Improve browser detection: DuckDuckGo, ICEBrowser, Klar, QQ, Sleipnir
  • Improve device detection: Oculus Quest & Oppo Pad
  • Update latest client hints spec: formFactor -> formFactors
  • In ua-parser-js/extensions submodule, bots divided into crawler / fetcher

Version 2.0.0-beta.2

  • Increase UA_MAX_LENGTH to 500
  • Add TypeScript declaration file in ua-parser-js/extensions submodule
  • Improve TypeScript module resolution
  • Add new methods in ua-parser-js/helpers submodule: isAppleSilicon() & isChromiumBased()
  • Fix misidentified WebView token as device model
  • Add new browser: Alipay, Klarna, Opera GX, Smart Lenovo Browser, Vivo Browser
  • Rename browser: Avant, Baidu, Samsung Internet, Sogou Explorer, Sogou Mobile, WeChat
  • Improve client-hints detection: Edge, Xbox

Version 2.0.0-beta.1

  • Update Client Hints Form-Factor
  • Provide in-package type definitions
  • Add new device: Ulefone
  • Improve device detection: Realme, Xiaomi Redmi

Version 2.0.0-alpha.3

  • Add withFeatureCheck() method
  • Add isFrozenUA() method in ua-parser-js/helpers submodule
  • Add MediaPlayers & Modules in ua-parser-js/extensions submodule
  • Fix issue with ESM import

Version 2.0.0-alpha.2

  • Fix browser result always returning Chromium when using withClientHints()
  • Fix infinite-loop when await-ing withClientHints() in non-client-hints browser

Version 2.0.0-alpha.1

  • Initial work on new major version

Version 0.7.38 / 1.0.38

  • Fix error on getOS() when userAgentData.platform is undefined
  • Add new browser: Opera GX, Twitter
  • Improve browser detection: DuckDuckGo
  • Improve device detection: OPPO Pad, Oculus Quest

Version 0.7.37 / 1.0.37

  • Fix misidentified WebView token as device model
  • Increase UA_MAX_LENGTH to 500
  • Add new browser: Alipay, Klarna, Smart Lenovo Browser, Vivo Browser
  • Add new device: Ulefone
  • Improve device detection: Realme, Xiaomi Redmi
  • Rename browser: Avant, Baidu, Samsung Internet, Sogou Explorer, Sogou Mobile, WeChat

Version 0.7.36 / 1.0.36

  • Add new browser: Snapchat
  • Add new devices: Infinix, Tecno
  • Improve device detection: Amazon Fire TV, Xiaomi POCO
  • Improve OS detection: iOS

Version 0.7.35 / 1.0.35

  • Fix result from user-supplied user-agent being altered
  • Add new browser: Heytap, TikTok
  • Add new engine: LibWeb
  • Add new OS: SerenityOS
  • Improve browser detection: Yandex
  • Improve device detection: iPhone, Amazon Echo
  • Improve OS detection: iOS

Version 0.7.34 / 1.0.34

  • Fix Sharp Mobile detected as Huawei Tablet
  • Fix IE8 bug
  • Add new devices : Kobo e-Reader, Apple Watch, and some new SmartTV devices
  • Add new OS : watchOS
  • Improve browser detection : Kakao, Naver, Brave
  • Improve device detection : Oculus, iPad
  • Improve OS detection : Chrome OS
  • Using navigator.userAgentData as fallback for device.type & os.name

Version 0.7.33 / 1.0.33

  • Add new browser : Cobalt
  • Identify Macintosh as an Apple device
  • Fix ReDoS vulnerability

Version 0.7.32 / 1.0.32

  • Add new browser : DuckDuckGo, Huawei Browser, LinkedIn
  • Add new OS : HarmonyOS
  • Add some Huawei models
  • Add Sharp Aquos TV
  • Improve detection Xiaomi Mi CC9
  • Fix Sony Xperia 1 III misidentified as Acer tablet
  • Fix Detect Sony BRAVIA as SmartTV
  • Fix Detect Xiaomi Mi TV as SmartTV
  • Fix Detect Galaxy Tab S8 as tablet
  • Fix WeGame mistakenly identified as WeChat
  • Fix included commas in Safari / Mobile Safari version
  • Increase UA_MAX_LENGTH to 350

Version 0.7.31 / 1.0.2

  • Fix OPPO Reno A5 incorrect detection
  • Fix TypeError Bug
  • Use AST to extract regexes and verify them with safe-regex

Version 0.7.30 / 1.0.1

  • Add new browser : Obigo, UP.Browser, Klar
  • Add new device : Oculus, Roku
  • Add new OS: Maemo, HP-UX, Android-x86, Deepin, elementary OS, GhostBSD, Linspire, Manjaro, Sabayon
  • Improve detection for Sony Xperia 1ii, LG Android TV, and some more devices
  • Improve detection for ARM64 CPU
  • Improve detection for Windows Mobile, Netscape, Mac on PowerPC
  • Categorize PDA as mobile
  • Fix Sharp devices misjudged as Huawei
  • Fix trailing comma for ES3 compatibility
  • Some code refactor

Version 0.7 / 1.0

Version 1.0.x is basically the equivalent of version 0.7.x (mirror/duplicate). See #536 for the reason behind this confusion.

Version 0.8

Version 0.8 was created by accident. This version is now deprecated and no longer maintained, please update to version 0.7 / 1.0.

Licensed under the MIT License.