- What's breaking:
- Licensed under AGPLv3 (open-source) or PRO License (commercial)
- Browser detection on mobile device:
"Chrome" => "Mobile Chrome"
,"Firefox" => "Mobile Firefox"
- OS detection:
"Mac OS" => "macOS"
,"Chromium OS" => "Chrome OS"
- What's new:
- New device type:
xr
, to identify AR/VR devices - New browser property:
browser.type
, to identify the type of the browser:crawler
,cli
,email
,fetcher
,inapp
,mediaplayer
,module
- New methods in result object (all of
get*()
return value):- Support for client hints:
withClientHints()
- Support for feature detection:
withFeatureCheck()
- Utility for easy comparison:
is()
- Utility to print full-name:
toString()
- Support for client hints:
- Parse directly from command line using
npx ua-parser-js
- Extensions can be passed as a list to
UAParser()
- Support for ES module & TypeScript
import { UAParser } from 'ua-parser-js'
- Provided Enums submodule
'ua-parser-js/enums'
- Provided Extensions submodule
'ua-parser-js/extensions'
- Provided Helpers submodule
'ua-parser-js/helpers'
:getDeviceVendor()
to guess for a device vendor based on its model nameisAppleSilicon()
to check if the device has Apple Silicon Mac device propertiesisBot()
to check if the browser is identified as a botisChromeFamily()
to check if the browser is Chrome-based / has Blink engine (i.e: New Opera, New Edge, Vivaldi, Brave, Arc, etc.)isElectron()
to check if current window is running inside ElectronisFromEU()
to check if current window is from an EU (European Union) countryisFrozenUA()
to check if a user-agent string match with the reduced/frozen user-agent patternisStandalonePWA()
to check if current window is a standalone PWA
- New device type:
--
- 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:
- 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:clis
,crawlers
,fetchers
, andmodules
- Restore
- 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
- 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
- Update Client Hints Form-Factor
- Provide in-package type definitions
- Add new device: Ulefone
- Improve device detection: Realme, Xiaomi Redmi
- Add
withFeatureCheck()
method - Add
isFrozenUA()
method inua-parser-js/helpers
submodule - Add
MediaPlayers
&Modules
inua-parser-js/extensions
submodule - Fix issue with ESM import
- Fix browser result always returning Chromium when using withClientHints()
- Fix infinite-loop when await-ing withClientHints() in non-client-hints browser
- Initial work on new major version
- 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
- 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
- Add new browser: Snapchat
- Add new devices: Infinix, Tecno
- Improve device detection: Amazon Fire TV, Xiaomi POCO
- Improve OS detection: iOS
- 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
- 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
- Add new browser : Cobalt
- Identify Macintosh as an Apple device
- Fix ReDoS vulnerability
- 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
- Fix OPPO Reno A5 incorrect detection
- Fix TypeError Bug
- Use AST to extract regexes and verify them with safe-regex
- 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 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 was created by accident. This version is now deprecated and no longer maintained, please update to version 0.7 / 1.0.