Add bot protection to your custom sign-up flow
Clerk provides the ability to add a CAPTCHA widget to your sign-up flows to protect against bot sign-ups. The <SignUp /> component handles this flow out-of-the-box. However, if you're building a custom user interface, this guide will show you how to add the CAPTCHA widget to your custom sign-up flow.
Enable bot sign-up protection
- In the Clerk Dashboard, navigate to the Attack protection page.
- Enable the Bot sign-up protection toggle.
To render the CAPTCHA widget in your custom sign-up form, you need to include the <View nativeID="clerk-captcha" /> element by the time you call signUp.create(). This element acts as a placeholder onto which the widget will be rendered.
If this element is not found, the SDK will transparently fall back to an invisible widget in order to avoid breaking your sign-up flow.
The following example shows how to support the CAPTCHA widget:
<View>
<Text>Sign up</Text>
<TextInput
autoCapitalize="none"
keyboardType="email-address"
value={emailAddress}
onChangeText={setEmailAddress}
placeholder="Enter email address"
/>
<TextInput
secureTextEntry
value={password}
onChangeText={setPassword}
placeholder="Enter password"
/>
{/* Clerk's CAPTCHA widget */}
<View nativeID="clerk-captcha" />
<Pressable onPress={handleSubmit}>
<Text>Continue</Text>
</Pressable>
</View>For custom flows on Expo web, customize the CAPTCHA widget by passing dataSet to the <View nativeID="clerk-captcha" /> element. React Native Web renders these values as data-cl-* attributes.
<View
nativeID="clerk-captcha"
dataSet={{ clTheme: 'dark', clSize: 'flexible', clLanguage: 'es-ES' }}
/>Feedback
Last updated on