> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fingerprint.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrating from FingerprintJS v2 to Fingerprint

> Update from FingerprintJS Open-Source version 2 to Fingerprint

How to update from [FingerprintJS Open-Source v2](https://github.com/fingerprintjs/fingerprintjs/tree/v2) to Fingerprint:

1. Sign up on [dashboard.fingerprint.com/signup](https://dashboard.fingerprint.com/signup), create an account, and get a public API key.

2. Change the `@fingerprintjs/fingerprintjs` or `fingerprintjs2` package to `@fingerprint/agent`. If you use NPM, run:

   <CodeGroup>
     ```bash NPM theme={"theme":"github-dark-dimmed"}
     npm remove @fingerprintjs/fingerprintjs fingerprintjs2 @types/fingerprintjs__fingerprintjs @types/fingerprintjs2
     npm install @fingerprint/agent
     ```

     ```bash Yarn theme={"theme":"github-dark-dimmed"}
     # Don't mind the "This module isn't specified in a package.json file" error
     yarn remove @fingerprintjs/fingerprintjs fingerprintjs2 @types/fingerprintjs__fingerprintjs @types/fingerprintjs2
     yarn add @fingerprint/agent
     ```
   </CodeGroup>

   And replace the package name in your JavaScript/TypeScript code:

   <CodeGroup>
     ```javascript JavaScript theme={"theme":"github-dark-dimmed"}
     import Fingerprint2 from '@fingerprintjs/fingerprintjs' // [!code --]
     import Fingerprint2 from 'fingerprintjs2' // [!code --]
     import Fingerprint from '@fingerprint/agent' // [!code ++]
     ```
   </CodeGroup>

   If you use a CDN, switch to our CDN:

   <CodeGroup>
     ```html HTML theme={"theme":"github-dark-dimmed"}
     <script src="https://cdn.jsdelivr.net/npm/fingerprintjs2@2/dist/fingerprint2.min.js"></script> <!-- [!code --] -->
     <!-- [!code ++:4] -->
     <script type="module">
       const Fingerprint = await import('https://fpjscdn.net/v4/PUBLIC_API_KEY')
       const fp = Fingerprint.start()
     </script>
     ```
   </CodeGroup>

3. Replace `requestIdleCallback` with `Fingerprint.start`. The function returns an agent object. The agent has a `get` method that you will use instead of calling `Fingerprint2.get` directly:

   <CodeGroup>
     ```javascript JavaScript theme={"theme":"github-dark-dimmed"}
     requestIdleCallback(() => { // [!code --]
       Fingerprint2.get(result => { // [!code --]
         // Handle the result // [!code --]
       }) // [!code --]
     }) // [!code --]
     const fp = Fingerprint.start({ apiKey: 'PUBLIC_API_KEY' }) // [!code ++]
     fp.get().then(result => { // [!code ++]
       // Handle the result // [!code ++]
     }) // [!code ++]
     ```
   </CodeGroup>

4. Add the public API key to the `Fingerprint.start()` configuration:

   <CodeGroup>
     ```javascript NPM/Yarn theme={"theme":"github-dark-dimmed"}
     FingerprintJS.load() // [!code --]
     Fingerprint.start({ apiKey: 'PUBLIC_API_KEY' }) // [!code ++]
     ```

     ```txt CDN theme={"theme":"github-dark-dimmed"}
     Put the key to the agent script URL:
     https://fpjscdn.net/v4/YOUR_PUBLIC_KEY

     For example:
     https://fpjscdn.net/v4/token
     https://fpjscdn.net/v4/token/iife.min.js
     ```
   </CodeGroup>

5. Use the visitor identifier directly (the raw components aren't provided):

   <CodeGroup>
     ```javascript JavaScript theme={"theme":"github-dark-dimmed"}
       fp.get().then(result => {
        const values = result.map(function (component) { return component.value }) // [!code --]
        const visitorId = Fingerprint2.x64hash128(values.join(''), 31) // [!code --]
        const visitorId = result.visitor_id // [!code ++]
       })
     ```
   </CodeGroup>

6. Remember that the support of Internet Explorer 10 and older has been dropped. Some old browsers like Internet Explorer 11 and Android Browser 4.1 require a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) polyfill. See the [browser support guide](/docs/browser-and-device-support#browsers) to get a list of the supported browsers.

***
