Skip to content

Hue-OwO/PlatformInfo

 
 

Repository files navigation

PlatformInfo

A simple, powerful library for comparing users' browsers and devices. It's small, taking up about 5 kb before gzip.

It does things you would expect

  • OS type
  • OS version
  • Browser type
  • Browser version

... but also has more useful features

  • CPU architecture (Including differentiating Intel and Apple silicon Macs)
  • Dealing with iPads using macOS user agents
  • OS and Browser version comparisons built in
  • Manually specifying a user agent to use instead of fetching the user's

How to use it?

You can use PlatformInfoStandalone.js as a standalone JavaScript file, or PlatformInfo.js to integrate it as an ES module with build systems like Webpack and Rollup.

import { PlatformInfo } from "PlatformInfo.js";

let platform = new PlatformInfo;

console.log(platform.architecture);
// ---> amd64

Limitations

  • Does not work on browsers that don't support ECMAScript 5. This includes browsers like Internet Explorer 8 and really old versions of current browsers. Internet Explorer 11 does work, however.
  • When an iPad is spoofing a Mac user agent, it uses a macOS version number. However, when calling getOSVersion, it will instead return the Safari version number, which will have the same major version number but may have a differing minor version number.
  • Apple Silicon detection is flaky on Safari (Mac) 14 and later, and can be impeded by browser extensions. It is recommended if you have a download page to continue making both versions available for users.
  • iOS 10 and earlier report architecture as "arm", as there is no way to differentiate between 32 and 64 bit on that platform.
  • Android and Windows Mobile/Phone do not disclose architecture
  • There is no way to differentiate 32 and 64 bit OS X (macOS). It uses the OS version and browser version to guess if it's x86 or amd64

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 91.0%
  • HTML 9.0%