Official React Native client for FingerprintJS PRO. 100% accurate device identification for fraud detection.

Overview

FingerprintJS

FingerprintJS PRO React Native

Official React Native module for 100% accurate device identification, created for the FingerprintJS Pro Server API.

This module can be used in a React Native application to call the native FingerprintJS Pro libraries and identify devices.

FingerprintJS Pro is a professional visitor identification service that processes all information server-side and transmits it securely to your servers using server-to-server APIs.

Retrieve an accurate, sticky and stable FingerprintJS Pro visitor identifier in an Android or an iOS app. This library communicates with the FingerprintJS Pro API and requires an api key.

Native libraries used under the hood:

Quick start

1. Add @fingerprintjs/fingerprintjs-pro-react-native to your application via npm or yarn:

npm install @fingerprintjs/fingerprintjs-pro-react-native --save

or

yarn add @fingerprintjs/fingerprintjs-pro-react-native

Make sure you have updated iOS dependencies:

cd ios && pod install

Usage

import React, { useEffect } from 'react';
import FingerprintJS from '@fingerprintjs/fingerprintjs-pro-react-native';

... 

useEffect(() => {
  async function getVisitorId() {
    try {
      FingerprintJS.init('PUBLIC_API_KEY', 'REGION'); // Region may be 'us', 'eu', or 'ap'
      const visitorId = await FingerprintJS.getVisitorId();
    } catch (e) {
      console.error('Error: ', e);
    }
  }
  getVisitorId();
}, []);

Additional Resources

License

This library is MIT licensed.

Comments
  • What is the benefit of using this over the unique device ID?

    What is the benefit of using this over the unique device ID?

    What is the benefit of using this over the unique device ID?

    react-nativ-device-info returns a unique device ID for both iOS and Android:

    iOS: This is IDFV or a random string if IDFV is unavaliable. Once UID is generated it is stored in iOS Keychain and NSUserDefaults. So it would stay the same even if you delete the app or reset IDFV. You can carefully consider it a persistent, cross-install unique ID. It can be changed only in case someone manually override values in Keychain/NSUserDefaults or if Apple would change Keychain and NSUserDefaults implementations. Beware: The IDFV is calculated using your bundle identifier and thus will be different in app extensions. android: Prior to Oreo, this id (ANDROID_ID) will always be the same once you set up your phone.

    https://github.com/react-native-device-info/react-native-device-info#getuniqueid

    ✅ = ID does not change ❌ = ID does change

    image

    opened by SMJ93 5
  • feat: change `FingerprintJsProAgent` constructor interface

    feat: change `FingerprintJsProAgent` constructor interface

    BREAKING CHANGE: In previous version FingerprintJsProAgent constructor had several position arguments. In new version it is one params argument of type FingerprintJsProAgentParams. Type FingerprintJsProAgentParams will be used instead of type FingerprintJsProProviderOptions.

    released on @test released 
    opened by ilfa 4
  • iOS: Error when adding endpoint in init

    iOS: Error when adding endpoint in init

    Getting this error when using the endpoint parameter in FingerprintJS.init:

    index.bundle?platfor…&minify=false:27518 Exception '-[__NSCFString isFileReferenceURL]: unrecognized selector sent to instance 0x60000387a130' was thrown while invoking init on target RNFingerprintjsPro with params (
        ------, (hiding the real key here)
        us,
        "\"https://google.com\""(hiding the real domain)
    )
    

    Tried using different domains as well, no luck

    bug 
    opened by liplylie 3
  • does this work with expo?

    does this work with expo?

    basically title. i was trying to implement it, following the example too and this error is all i am getting

    RNFingerprintjsPro init error:  [TypeError: null is not an object (evaluating 'reactNative.NativeModules.RNFingerprintjsPro.init')] 
    
    
    opened by djixadin 2
  • chore(deps): bump minimatch from 3.0.4 to 3.1.2

    chore(deps): bump minimatch from 3.0.4 to 3.1.2

    Bumps minimatch from 3.0.4 to 3.1.2.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies released on @test released 
    opened by dependabot[bot] 2
  • bump minimatch from 3.0.4 to 3.1.2 in /TestProject

    bump minimatch from 3.0.4 to 3.1.2 in /TestProject

    ⚠️ Dependabot is rebasing this PR ⚠️

    Rebasing might not happen immediately, so don't worry if this takes some time.

    Note: if you make any changes to this PR yourself, they will take precedence over the rebase.


    Bumps minimatch from 3.0.4 to 3.1.2.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies released on @test released 
    opened by dependabot[bot] 2
  • chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2

    chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 in /TestProject

    chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 in /TestProject

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Introduce E2E tests

    Introduce E2E tests

    It might be a little bit far stretched, but I'm wondering if we should introduce some E2E tests for our library? As far as I see, we don't have any tests yet.

    Since we are using native modules under the hood, unit tests won't make much sense here. We could use https://github.com/wix/detox/ for it, and add tests to the TestProject - even simple checking like if the visitorId is being rendered.

    WDYT?

    opened by TheUnderScorer 0
Releases(v2.1.0)
  • v2.1.0(Nov 18, 2022)

  • v2.1.0-test.1(Nov 16, 2022)

  • v2.0.0(Sep 27, 2022)

    2.0.0 (2022-09-27)

    ⚠ BREAKING CHANGES

    • In previous version FingerprintJsProAgent constructor had several position arguments. In new version it is one params argument of type FingerprintJsProAgentParams. Type FingerprintJsProAgentParams will be used instead of type FingerprintJsProProviderOptions.
    • getData method of the useVisitorData hook now returns answer of type VisitorData instead of simple visitorId string type.

    Features

    • add extendedResponseFormat configuration flag (2add6cc)
    • add getVisitorData method to the react-native agent (16b4378)
    • better error reporting (f011cb7)
    • change FingerprintJsProAgent constructor interface (1b8aab9)
    • send integration info (f52e2cf)
    • support linkedId param for identification requests (e8557db)
    • update android agent to the latest version (4051a7b)
    • update iOS agent to 2.1.3 (14a0e42)
    • update iOS agent to the latest version (a33d160)
    • update iOS agent to v2.1.1 (f4541f2)
    • update iOS native agent to 2.1.2 to return support of iOS 12 (20c7342)
    • update react-native to 0.70.1 (22b8d33)

    Bug Fixes

    • async code example (e0bd804)
    • change substitution literal in .husky/commit_msg (2267a30)
    • error description (c82c45b)
    • expand Tags type (08e6a73)
    • generate iOS Metadata even if linkedId is nil (858ac51)
    • getVisitorId error handling (c2971cd)
    • pass correct linkedId type to the android library (68fa2e4)
    • tag functionality for new iOS library (be590e6)

    Documentation

    • README: add documentation badge (62a3df1)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-test.4(Sep 23, 2022)

    2.0.0-test.4 (2022-09-23)

    ⚠ BREAKING CHANGES

    • In previous version FingerprintJsProAgent constructor had several position arguments. In new version it is one params argument of type FingerprintJsProAgentParams. Type FingerprintJsProAgentParams will be used instead of type FingerprintJsProProviderOptions.

    Features

    • change FingerprintJsProAgent constructor interface (1b8aab9)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-test.3(Sep 23, 2022)

  • v2.0.0-test.2(Sep 19, 2022)

Owner
FingerprintJS
Fraud detection API for the Internet
FingerprintJS
React Native On-Device Machine Learning w/ Google ML Kit

React Native ML Kit React Native On-Device Machine Learning w/ Google ML Kit Supported Modules Module Android iOS Image Labeling ✅ ✅ Identify Language

Ahmed Mahmoud 148 Dec 29, 2022
Sceneform React Native AR Component using ARCore and Google Filament as 3D engine. This the Sceneform Maintained Component for React Native

Discord Server Join us on Discord if you need a hand or just want to talk about Sceneform and AR. Features Remote and local assets Augmented Faces Clo

SceneView Open Community 42 Dec 17, 2022
With react-native-update-in-app library you can easily implement in-app updates in your React Native app using CDN or any other file server

React Native In-App update With react-native-update-in-app library you can easily implement in-app updates in your React Native app using CDN or any o

Nepein Andrey 7 Dec 21, 2022
ZerotierFix - An unofficial Zerotier Android client patched from official client

Zerotier Fix An unofficial Zerotier Android client patched from official client. Features Self-hosted Moon Support Add custom planet config via file a

KAAAsS 830 Jan 8, 2023
Hate, hate, hate, for Google and its crashtastic Pixel 6 Pro.

OpenCamera hack for Pixel 6 Pro The Pixel 6 Pro is an expensive phone. There seem to be a significant number of people whose P6Ps crash -- hard -- try

Cameron Kaiser 35 Nov 11, 2022
React native wrapper for Jitsi Meet SDK Library that rely on the native view (Activity / ViewController)

react-native-jitsi-meet-sdk React native wrapper for Jitsi Meet SDK Library. This Library implements the Jitsi SDK with a native activity on the Andro

null 7 May 2, 2022
An awesome native wheel picker component for React Native.

⛏️ react-native-picky An awesome native wheel picker component for react-native. Features Supports multiple columns ✅ Supports looping ✅ Native Androi

null 28 Dec 4, 2022
Official Elasticsearch Java Client

Elasticsearch Java Client The official Java client for Elasticsearch. Note: this project is still a work in progress. This client is meant to replace

elastic 230 Jan 8, 2023
Catogram - Experimental telegram client based on official Android sources

Catogram Experimental telegram client based on official Android sources Features: Message translator TGX Style of context menu VKUI Icons and inbuilt

null 188 Dec 17, 2022
Free and 100% open source Progressive Java Runtime for modern Java™ deployments supported by a leading OpenJDK contributor

BellSoft Liberica JDK is a build of OpenJDK that is tested and verified to be compliant with the Java SE specification using OpenJDK Technology Compat

null 195 Dec 22, 2022
API REST feita 100% em Java com Spring

API REST feita 100% em Java com Spring

M4TH3US17 2 May 8, 2022
100+ Spring Boot Articles, Tutorials, Video tutorials, Projects, Guides, Source code examples etc

YouTube Channel - Spring Boot Tutorial Subscribe for future video and updates Spring Boot Tutorial on YouTube Newly published spring boot tutorials (2

Ramesh Fadatare 1.2k Jan 2, 2023
There is no good reason to render the hotbar at 100+ fps

FasterGUI Render the HUD and screens at a lower framerate to speed up what's really important: the worldrendering. Renders the HUD at a lower fixed fr

tr7zw 124 Dec 22, 2022
EssentialClient is a client side mod originally forked from Carpet Client for 1.15.2 that implements new client side features

EssentialClient EssentialClient is a client side only mod originally forked from Carpet Client for 1.15.2 that implements new client side features. Th

null 62 Jan 3, 2023
ReDoSHunter: A Combined Static and Dynamic Approach for Regular Expression DoS Detection

ReDoSHunter ReDoSHunter is a combined static and dynamic approach for regular expression DoS detection. LATEST NOTE (updated at 2021.09.13): ReDoSHunt

Yeting Li 43 Dec 23, 2022
Dynamic detection of likely invariants

This is the distribution of the Daikon invariant detector, Daikon version 5.8.11, released November 2, 2021. If you are working with a Daikon distrib

null 159 Dec 28, 2022
Document scanner with border detection, perspective correction and custom crop/resize

react-native-document-scanner Preview iOS Android Both Platform Use version >=1.4.1 if you are using react-native 0.48+ $ yarn add https://github.com/

Augusto Pinheiro 53 Nov 10, 2022
BungeeCord/Spigot plugin that fixes Multi-world detection by simulating mod presence on the server side

Companion for map mods Unofficial BungeeCord and Spigot (Paper) companion plugin for Xaero's Minimap (and their World Map), JourneyMap and VoxelMap. T

Artur Khusainov 3 Sep 18, 2022
Get device location by telephony (SIM card) or settings without using GPS tracker.

react-native-device-country Get device location by telephony (SIM card) or settings without using GPS tracker Installation yarn add react-native-devic

dev.family 46 Nov 29, 2022