Socket
Socket
Sign inDemoInstall

@hcaptcha/react-native-hcaptcha

Package Overview
Dependencies
595
Maintainers
3
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hcaptcha/react-native-hcaptcha

hCaptcha Library for React Native (both Android and iOS)


Version published
Maintainers
3
Weekly downloads
5,771
decreased by-26.51%

Weekly downloads

Readme

Source

npm ci

react-native-hcaptcha

hCaptcha wrapper for React Native (Android and iOS)

Installation

  1. Install package:
  • Using NPM npm install @hcaptcha/react-native-hcaptcha
  • Using Yarn yarn add @hcaptcha/react-native-hcaptcha
  1. Import package: import ConfirmHcaptcha from '@hcaptcha/react-native-hcaptcha';

Full examples for expo and react-native, as well as debugging guides, are in MAINTAINER.md

Demo

See live demo in Snack.

Usage

See Example.App.js example in repo for a fully worked example implementation.

For users familiar with the hCaptcha JS API, calling show() in this wrapper triggers an hcaptcha.execute() call.

This means that if you are an Enterprise user with a 99.9% passive or purely passive sitekey configured, no additional work is required to get the expected behavior: either a visual challenge will be shown or a token will be returned immediately via onMessage, in accordance with your configuration.

Also, please note the following special message strings that can be returned via onMessage:

namepurpose
expiredpasscode response expired and the user must re-verify
errorthere was an error displaying the challenge
cancelthe user closed the challenge, or did not answer before session expired
openthe visual challenge was opened

Any other string returned by onMessage will be a passcode.

Handling the post-issuance expiration lifecycle

This extension is a lightweight wrapper, and does not currently attempt to manage post-verification state in the same way as the web JS API, e.g. with an on-expire callback.

In particular, if you do not plan to immediately consume the passcode returned by submitting it to your backend, you should start a timer to let your application state know that a new passcode is required when it expires.

By default, this value is 120 seconds. Thus, you would want code similar to the following in your app when handling onMessage responses that return a passcode:

this.timeoutCheck = setTimeout(() => {
   this.setPasscodeExpired();
   }, 120000);

Dependencies

  1. react-native-modal

  2. react-native-webview

Building on iOS

Required frameworks/libraries

Your app must have the following frameworks/libraries linked:

  • libswiftWebKit.tbd
  • JavaScriptCore.framework

Flipper version

You must have a recent version of flipper to build this app. If you have upgraded React Native recently, your Flipper version may be out of date. This will cause compilation errors.

Your Podfile should be updated to something like:

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable these next few lines.
  use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })
  post_install do |installer|
    flipper_post_install(installer)
  end

If you encounter build-time errors related to Flipper.

Localization

Make sure the value you pass to languageCode is the one the user has set in your app if you allow them to override the system defaults.

Otherwise, you should pass in the preferred device locale, e.g. fetched from getLocales() if using react-native-localize.

Notes

  • The UI defaults to the "invisible" mode of the JS SDK, i.e. no checkbox is displayed.
  • You can import Hcaptcha from '@hcaptcha/react-native-hcaptcha/Hcaptcha'; to customize the UI yourself.

Properties

NameTypeDescription
siteKey (required)stringThe hCaptcha siteKey
sizestringThe size of the checkbox, can be 'invisible', 'compact' or 'checkbox', Default: 'invisible'
onMessageFunction (see here)The callback function that runs after receiving a response, error, or when user cancels.
languageCodestringDefault language for hCaptcha; overrides phone defaults. A complete list of supported languages and their codes can be found here
showLoadingbooleanWhether to show a loading indicator while the hCaptcha web content loads
loadingIndicatorColorstringColor of the ActivityIndicator
backgroundColorstringThe background color code that will be applied to the main HTML element
themestring|objectThe theme can be 'light', 'dark', 'contrast' or a custom theme object (see Enterprise docs)
rqdatastringHcaptcha execution options (see Enterprise docs)
sentrybooleansentry error reporting (see Enterprise docs)
jsSrcstringThe url of api.js. Default: https://js.hcaptcha.com/1/api.js (Override only if using first-party hosting feature.)
endpointstringPoint hCaptcha JS Ajax Requests to alternative API Endpoint. Default: https://api.hcaptcha.com (Override only if using first-party hosting feature.)
reportapistringPoint hCaptcha Bug Reporting Request to alternative API Endpoint. Default: https://accounts.hcaptcha.com (Override only if using first-party hosting feature.)
assethoststringPoints loaded hCaptcha assets to a user defined asset location, used for proxies. Default: https://newassets.hcaptcha.com (Override only if using first-party hosting feature.)
imghoststringPoints loaded hCaptcha challenge images to a user defined image location, used for proxies. Default: https://imgs.hcaptcha.com (Override only if using first-party hosting feature.)
hoststringhCaptcha SDK host identifier. null value means that it will be generated by SDK
url (inline component only)stringThe url domain defined on your hCaptcha. You generally will not need to change this.
style (inline component only)ViewStyle (see here)The webview style
baseUrl (modal component only)stringThe url domain defined on your hCaptcha. You generally will not need to change this.
passiveSiteKey (modal component only)booleanIndicates whether the passive mode is enabled; when true, the modal won't be shown at all
hasBackdrop (modal component only)booleanDefines if the modal backdrop is shown (true by default)

Status

Fully functional, but additional releases will be made in the near term.

Changes within the same major release are expected to be additive, i.e. non-breaking.

License

MIT License. (C) 2021 hCaptcha.

Credits: Originally forked from xuho and filipepiresg's Google reCAPTCHA v2 work. (MIT license)

Keywords

FAQs

Last updated on 14 Mar 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc