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'
- Import directly as an ES module with TypeScript support:
Support for Custom/Predefined Extensions:
- Pass custom regexes or predefined extensions as a list to
UAParser()
- Pass custom regexes or predefined extensions as a list to
Support for CLI Parsing:
- Parse a user-agent directly from the command line using
npx ua-parser-js "[User-Agent]"
- Parse a user-agent directly from the command line using
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
- Added
New Browser Property:
- Added
browser.type
to identify additional browser types:crawler
,cli
,email
,fetcher
,inapp
,library
,mediaplayer
- Added
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 nameisAppleSilicon()
: Detects Apple Silicon device propertiesisBot()
: Checks if the browser is a botisChromeFamily()
: 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 ElectronisFromEU()
: Detects if current browser's timezone is from an EU countryisFrozenUA()
: Checks if the user-agent matches a frozen/reduced user-agent patternisStandalonePWA()
: 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
tolibrary
- 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
- Breaking change: rename
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
- Add new method:
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 nameisElectron()
to check if current window is running inside ElectronisFromEU()
to check if current window is from an EU (European Union) countryisStandalonePWA()
to check if current window is a standalone PWA
- Rename
isChromiumBased()
toisChromeFamily()
- Update
isAppleSilicon()
to also checks for WebGL renderer info
- Add new method:
ua-parser-js/extensions
submodule:- Restore
Bots
as a compilation of all these browser types:cli
,crawler
,fetcher
, andlibrary
- Restore
Version 2.0.0-beta.3
- Breaking:
- AR/VR devices moved to new device type:
xr
- New property in
browser
:type
- AR/VR devices moved to new device type:
- New features:
- Parse directly from command line using
npx ua-parser-js
- Extensions can be passed as a list to
UAParser()
- Parse directly from command line using
- 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 intocrawler
/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 inua-parser-js/helpers
submodule - Add
MediaPlayers
&Modules
inua-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.