@captchafox/vue

11,908 8
Install
npm install @captchafox/vue
Latest Version:1.7.0
Vue:3
License:MIT
Last Updated:Jul 4, 2026
Links: GitHub  ·  npm
Maintainer: tgrassl

@captchafox/vue

NPM version

Installation

Install the library using your prefered package manager

npm install @captchafox/vue
yarn add @captchafox/vue
pnpm add @captchafox/vue
bun add @captchafox/vue

Usage

<script setup lang="ts">
import { CaptchaFox } from '@captchafox/vue';
</script>

<template>
  <CaptchaFox sitekey="sk_11111111000000001111111100000000" />
</template>

(Optional) Register it for the whole app (e.g. main.ts)

import { CaptchaFox } from '@captchafox/vue';
import App from './App.vue';

const app = createApp(App)
    .component('CaptchaFox', CaptchaFox);
    .mount('#app');

Props

Prop Type Description Required
sitekey string The sitekey for the widget. ✅
lang string The language the widget should display. Defaults to automatically detecting it.
mode inline|popup|hidden The mode the widget should be displayed in.
start none|auto|focus Controls when the verification begins. Defaults to none.
theme light | dark | ThemeDefinition The theme of the widget. Defaults to light.
nonce string Randomly generated nonce.
i18n object Custom i18n configuration.
hideClose boolean Hides the close button and prevents users from closing the widget modal.
onVerify function Called with the response token after successful verification.
onFail function Called after unsuccessful verification.
onError function Called when an error occured.
onExpire function Called when the challenge expires.
onClose function Called when the challenge was closed.

Using the verification callback

<script setup lang="ts">
import { CaptchaFox, CAPTCHA_RESPONSE_KEY } from '@captchafox/vue';

const handleVerify = (token: string) => {
  // do something with the token here (e.g. submit the form)
  const formData = {
    // your form data
    [CAPTCHA_RESPONSE_KEY]: token
  };
};
</script>

<template>
  <CaptchaFox sitekey="sk_11111111000000001111111100000000" @verify="handleVerify" />
</template>

Using v-model

<script setup lang="ts">
import { CaptchaFox, CAPTCHA_RESPONSE_KEY } from '@captchafox/vue';

// contains response token after successful verification
const token = ref<string>();
</script>

<template>
  <CaptchaFox sitekey="sk_11111111000000001111111100000000" v-model="token" />
  <pre>{{ token }}</pre>
</template>

Interacting with the instance

<script setup lang="ts">
import { CAPTCHA_RESPONSE_KEY, CaptchaFox, CaptchaFoxInstance } from '@captchafox/vue';
import { ref } from 'vue';

const captchafox = ref<CaptchaFoxInstance | null>(null);

const triggerAction = async () => {
  // execute the captcha
  try {
    const token = await captchafox.value?.execute();
  } catch {
    // unsuccessful verification
  }
};
</script>

<template>
  <CaptchaFox ref="captchafox" sitekey="sk_11111111000000001111111100000000" />
  <button @click="triggerAction">Action</button>
</template>

You can find more detailed examples in the GitHub repository.

Related Packages

vue

The progressive JavaScript framework for building modern web UI.

588,019,132 54,801
vue
@vueuse/shared
372,738,348 22,398
@vueuse/core

Collection of essential Vue Composition Utilities

367,188,523 22,398
@vitejs/plugin-vue

The official plugin for Vue SFC support in Vite.

333,357,380 686
eslint-plugin-vue

Official ESLint plugin for Vue.js

266,364,830 4,591

Version History

Version Released License
1.7.0 MIT
1.6.0 MIT
1.5.0 MIT
1.4.0 MIT
1.3.0 MIT