• fix: JS agent installed from jsDelivr makes a network request to fpnpmcdn.io that can be blocked by your Content Security Policy. This is a temporary fix, it will be reverted. Please switch to our CDN to avoid this problem in future.


  • A new CDN for the CDN installation methods. Follow this guide to update. The old CDN URLs pointing to jsDelivr continue working, but we recommend switching to our CDN to avoid excess network requests.
  • JS agent installed from NPM loads its code from our CDN in runtime. It guarantees that you always use the latest and the most accurate version of JS agent.
    • If you use a Content Security Policy, add the CDN domain to the CSP as described here (see the "NPM installation" tab).
    • If you do an HTML preconnect, consider preconnecting to the CDN too as described here (see the "NPM installation" tab).
  • Add firstSeenAt and lastSeenAt fields to JS agent responses. See more details in the useful timestamps guide.
  • New error types: ERROR_SCRIPT_LOAD_FAIL and ERROR_INSTALLATION_METHOD_RESTRICTED. See the error handling guide for more details.
  • A new load() option in the NPM package of JS agent: scriptUrlPattern. See more details in the JS agent guide.


  • fix: If your project uses TypeScript and has the TypeScript's isolatedModules option is enabled, JS agent causes an error: "TS2748: Cannot access ambient const enums"


  • Rename the token option of the load method of JS agent to apiKey. The token option keeps working for backward compatibility. Also rename some error constants (the old names work too):
  • fix: JavaScript agent triggers a console error message unless the page's Content Security Policy allows unsafe-inline for style-src


  • A new region: ap (Mumbai, India)


  • Improve incognito mode detection accuracy in Safari
  • Deprecate the ipResolution parameter because it affects nothing
  • The get() result's ipLocation field is marked is optional in the TypeScript declaration. The field could be undefined in fact, so this is a fix of the type declaration.
  • Actualize the list of supported browsers
  • A new error code for cases when the JS agent version is not supported: FingerprintJS.ERROR_UNSUPPORTED_VERSION
  • Decrease the JS agent code size by removing legacy parts
  • fix: An indefinite setTimeout loop in Firefox


  • Improve the tree-shaking capability
  • Confidence score calculations moved to server for increased accuracy (Pro version)


  • Improve the performance slightly


  • Improve identification time for visitors who use an ad blocker or an M1 Mac
  • Improve identification accuracy