@rozie-ui/captcha-vue

Idiomatic Vue CAPTCHA — Google reCAPTCHA (v2 + v3), hCaptcha, Cloudflare Turnstile & Friendly Captcha from one Rozie source.
1,288 1
Install
npm install @rozie-ui/captcha-vue
Latest Version:0.1.6
Vue:3
License:MIT
Last Updated:Oct 24, 2026
Links: GitHub  ·  npm
Maintainer: serpentblade

@rozie-ui/captcha-vue

Idiomatic vue Captcha — Cross-framework CAPTCHA / bot-protection widget wrapping Google reCAPTCHA v2, hCaptcha, and Cloudflare Turnstile. Compiled from one Rozie source. This package is generated; do not edit src/ by hand.

This package ships Captcha (the default export) alongside RecaptchaV3 (named export).

Install

npm i @rozie-ui/captcha-vue

Peer dependencies: vue.

Captcha

Usage

<script setup lang="ts">
import { ref } from 'vue';
import Captcha from '@rozie-ui/captcha-vue';

const token = ref('');
</script>

<template>
  <Captcha
    provider="recaptcha"
    sitekey="your-site-key"
    v-model:token="token"
    @verify="(e) => console.log('verified', e.token)"
  />
</template>

Props

Name Type Default Two-way (model) Required
provider String "recaptcha"
sitekey String — ✓
token String "" ✓
theme String "light"
size String "normal"
tabindex Number null
options Object {}

Events

Event Description
verify Fired when the user completes the challenge. Payload { token, provider }.
expire Fired when the verified token expires. Payload { provider }.
error Fired on a challenge or script-load failure. Payload { provider, error? }.

Imperative handle

This component exposes imperative methods (declared once in the Rozie source via $expose). Grab a handle with the native ref mechanism and call them directly:

<script setup>
import { ref } from 'vue';
const handle = ref();
</script>

<template>
  <Captcha ref="handle" />
</template>
Method Description
reset Reset the widget to its un-challenged state and clear the two-way token.
execute Programmatically run the challenge — drives invisible widgets (size="invisible").
getResponse Return the current response token on demand (e.g. just before form submit).

RecaptchaV3

Usage

<script setup lang="ts">
import { ref } from 'vue';
import { RecaptchaV3 } from '@rozie-ui/captcha-vue';

const captcha = ref();
const submit = async () => {
  const token = await captcha.value.execute('signup'); // fresh token for THIS action
  await fetch('/signup', { method: 'POST', body: JSON.stringify({ token }) });
};
</script>

<template>
  <form @submit.prevent="submit">
    <!-- … fields … -->
    <RecaptchaV3 ref="captcha" sitekey="your-site-key" action="signup" />
    <button type="submit">Sign up</button>
  </form>
</template>

Props

Name Type Default Two-way (model) Required
sitekey String — ✓
action String "submit"
token String "" ✓
executeOnMount Boolean false

Events

Event Description
error Fired on a load timeout, script error, or a rejected execute(). Payload { error? }.
verify Fired on a successful execute(). Payload { token, action }.

Imperative handle

This component exposes imperative methods (declared once in the Rozie source via $expose). Grab a handle with the native ref mechanism and call them directly:

<script setup>
import { ref } from 'vue';
const handle = ref();
// const token = await handle.value.execute('submit');
</script>

<template>
  <RecaptchaV3 ref="handle" sitekey="your-site-key" />
</template>
Method Description
execute Run a v3 challenge for the optional action (defaults to the action prop) and resolve with a fresh token; also writes the two-way token and emits @verify.

Related Packages

vue-captcha-switcher

A Vue.js component to switch between different CAPTCHA services.

6,051 61
@better-captcha/vue

Vue 3 wrappers for CAPTCHA providers that share the same lifecycle, render flow,...

4,385 80
vue-cloudflare-turnstile

A Vue 3 component wrapper for Cloudflare Turnstile. User-friendly (re)CAPTCHA al...

4,645 4
@rozie-ui/otp-vue

Idiomatic Vue headless WAI-ARIA one-time-code / PIN input (segmented cells, past...

1,472 1
@rozie-ui/popover-vue

Idiomatic Vue popover/tooltip wrapping @floating-ui/dom — one Rozie source compi...

2,266 1

Version History

Version Released Vue License
0.1.6 ^3.4 MIT
0.1.5 ^3.4 MIT
0.1.4 ^3.4 MIT
0.1.3 ^3.4 MIT
0.1.2 ^3.4 MIT