Compare Versions - @fingerprintjs/fingerprintjs
npm / @fingerprintjs/fingerprintjs / Compare Versions
✨ Improvements
- Resolved #1088 . For Firefox, the fingerprints between normal and incognito modes are now stable. However, it cannot be guaranteed when Enhanced Tracking Protection is enabled.
- Resolved #1131
- As with v3, collection of usage statistics can be disabled. See docs/api.md for instructions.
🧹 Maintenance
- chore: Updated
README.mdto reference v5 instead of v4, ensuring documentation reflects the latest version and usage examples.
🚀 Release Notes
⚠️ Breaking Change
- Build Target Updated: The TypeScript compilation target has been changed from ES5 to ES2018.
This may affect compatibility with older environments that do not support ES2018 features. Please ensure your runtime environment supports ES2018 before upgrading.
✨ Other Changes
- License Update: The project license has been changed from BUSL-1.1 to MIT, making it more permissive and open for community use and contribution.
- Fix an error occurring when
navigator.vendoris undefined (#1082)
-
Stop supporting old browsers:
- Safari 12
- Firefox 88 and older
- Chrome 72 and older
They cover 0.06% of all usages according to the Fingerprint Pro statistics. FingerprintJS won't stop working in these browsers immediately, we just won't check in them. See the list of currently supported browsers in the browser support guide.
-
Added
window.Intl.DateTimeFormat().resolvedOptions().localeas a new entropy source, enhancing user environment insights.
- Fix the unstable visitor identifier in Samsung Internet 26 and newer
- Add
unsupportedfield to thewebGlExtensionsentropy source (#1027)
- fix: An unwanted
Feature policy 'Payment' check failed...console error in cross-origin iframes in Safari (#1017)
- Optimize the performance by tweaking the event loop releasing (#1014)
- fix: A console warning regarding
AudioContext(#1009)
This release will change fingerprints for some visitors.
- Add a new "AudioContext baseLatency" entropy source (#1004)
- Revert audio fingerprint to the version from v4.1.0 (#1007)
handleApplePayErroris no longer exported from the Node package (#1005). It was used for internal purposes.
- fix: A minus sign missing in the "timezone" entropy source fallback (#986)
- fix: The geometry and text images in the "canvas" entropy source are swapped (#990). They were swapped mistakenly in v4.1.0.
- fix: WebGL console warning in Chrome 121 and Safari 17.4 (#983)
- fix: An empty OS notification is shown in some cases (#969)
-
Add a new "reduced transparency" entropy source (#956)
-
A new algorithm for audio fingerprint, which withstands Safari's anti-fingerprinting (#957)
-
Increase the accuracy of Chromium Android detection (#965)
-
Stop supporting old browsers:
- iOS 11
- Firefox 74 and older
- Chrome 64 and older
They cover 0.05% of all usages according to the Fingerprint Pro statistics. FingerprintJS won't stop working in these browsers immediately, we just won't check in them. See the list of currently supported browsers in the browser support guide.
-
Prepare for Safari 17 (#951)
Safari 17 introduces anti-fingerprinting measures in private mode: some fingerprint components change. That made FingerprintJS produce different fingerprints. Unfortunately, we had to disable the entropy sources in Safari 17 for now to keep the fingerprints stable, because there is no apparent way to restore the original components. We keep looking for ways to get stable entropy from these sources.
- Improve the performance by optimizing the MurmurHash3 implementation (#931)
- Add new entropy sources:
Breaking
- ⚠️ The license switch from MIT to BSL 1.1. All the reasons and implications of the license change are explained in our blog post
- Unexpected entropy source errors are saved as is instead of coercing to a
{ message: any }object
See the migration guide to learn how to upgrade from v3 to v4.
- Update the DOM blocker filters (#920)
- Optimize by simplifying the entropy source handling under the hood (#902)
- fix: An unhandled rejection in the audio entropy source (#893)
-
Add a video card entropy source (#730)
-
Add a
pdfViewerEnabledentropy source (#795)This is a modern replacement for the
pluginsentropy source. Exclude thepluginsfingerprint component if you need more stability. -
Add an
architectureentropy source that can tell x86/64 from other CPU architectures (#864) -
Stop supporting old browsers:
- Internet Explorer 11
- iOS 10
- Firefox 66 and older
- Chrome 56 and older
- Samsung Internet 4
- Android Browser 4.4
They cover 0.05% of all usages according to the Fingerprint Pro statistics. FingerprintJS won't stop working in these browsers immediately, we just won't check in them. See the list of currently supported browsers in the browser support guide.
- Stabilize the canvas entropy source in Samsung Internet (#812)
- fix: The list of DOM blockers isn't removed during treeshaking (#805)
-
Obfuscate the inappropriate selectors in the distributive code of the library (#803)
Note: this change is for automated analyzers and beginner security researches. FingerprintJS doesn't put any ads, links or other content on your website. You can learn how we use advertisement selectors in a blog post.
- Update the DOM blocker filters (#787)
- fix: Unhandled promise rejection may occur in some cases
- fix: The library triggers a console error message unless the page Content Security Policy allows
unsafe-inlineforstyle-src(#737) - Reduce the number of monitoring requests sent by the library copies installed from NPM (#746)
- Reduce the number of monitoring requests sent by the library copies installed from NPM (#722)
Important:
- Add an AJAX request that collects installation statistics. The request is performed only by version installed from NPM. See the documentation is you want to turn it off. (#709)
Miscellaneous:
- Move some top level declarations to improve tree-shaking (#700)
- Actualize the environment detection functions (#701)
- Actualize the list of supported browsers (#713)
- fix: An indefinite setTimeout loop in Firefox (#717)
- Actualize the list of DOM blockers (#719)
- Add a new result field: confidence score (#689). The confidence score field tells how much the agent is sure about the visitor identifier. See the API reference for more details.
- Actualize the list of DOM blockers
- Fix an error that occurs in Firefox Add-ons (#684)
- Handle missing
iframe.contentWindow.document, for example in JSDOM (#686)
The visitor identifiers are compatible with version 3.2.0.
- Make the entropy sources start running in load function (#678). It will make
getrun much faster when some time passes between callingload()andget(). See an example in the quick start guide.
The visitor identifiers are compatible with version 3.1.0.
- fix:
get()function never completes in WeChat built-in browser on iOS 13 (#645) - Handle not numeric screen resolutions (#670)
- Actualize the list of DOM blockers
- Improve the TypeScript compatibility
- fix:
get()function never completes in iOS WeChat built-in browser (#645)
- Make the entropy sources run in parallel (#622)
- Update the set of entropy sources. It will change fingerprint for all visitors. The documented JS API stays the same.
- Replace the
availableScreenResolutionentropy source withscreenFramethat is more stable (#585) - Combine the
timezoneandtimezoneOffsetsources into a single source becausetimezoneOffsetgives no entropy whentimezoneis available - Stabilize the canvas entropy source (#574)
- Split the canvas image into 2 images (https://github.com/fingerprintjs/fingerprintjs/issues/583#issuecomment-792758292, https://github.com/fingerprintjs/fingerprintjs/issues/103#issuecomment-809881647)
- Distinguish cases where hardware concurrency is unavailable and where it's known to equal 1
- Enable the
pluginsentropy source in IE - Remove the following entropy sources because they give no entropy in combination to other sources:
pluginsSupport,productSub,emptyEvalLengthanderrorFF - Fix the incorrect
platformvalue when desktop mode is requested in an iOS browser (#609) - Replace the
chromesource with thevendorFlavorssource that checks many vendor-specific variables (#621) - Add a DOM blockers entropy source (387eb8384c10c180d54a7f9cc58df4630c71becb)
- Add a set of CSS media query entropy sources (d1c3ccf0b29f8753c9c9e71b487567c14b66f9c8)
- Add a math entropy source (8e3a6a8d6ddfc431279b2652dde064ce5894b118)
- Add a font preferences entropy source (5306b58842ec9534acf65ac0746a6b5d361d5239)
- Replace the
- fix: Canvas fingerprint depends on the script encoding (#588)
- Improve the audio entropy source performance (3201a7d61bb4df2816c226d8364cc98bb4235e59)
- Encapsulate the fonts entropy source so that it doesn't affect and isn't affected by the page style (#635)
- Return the version together with the visitor identifier (db55bedfde7cfd50a0ad756bbeef7b2d831505c9)
- Actualize the productSub component TypeScript type (the component value is
undefinedin IE) - Make FingerprintJS work in server side rendering environments like Next.js and Gatsby (#610)
- Fix cookie
SameSiteattribute warning in Firefox (#601)
- Handle cases where
navigator.deviceMemoryis a string - fix:
load()takes a huge time to run in some conditions
- Increase stability of the audio component (#581)
- Support elder browsers like IE 11, Chrome 42 and Firefox 48 (a Promise polyfill is required, see the browser support guide to learn more) (#577)
- Handle cases where
new Date().getTimezoneOffset()returns a string (#577) - fix: The
timezoneOffsetcomponent changes due to DST shifts (#577)
The library has been rewritten in TypeScript from scratch, has got a modular code structure and various shipping formats.
- See the readme to get familiar with the new installation methods and the new API.
- See the migration guide to learn how to migrate to from version 2 to version 3.
- The wiki has moved to the
v2branch.
- Fix the WebGL error in IE10 (#611)