{"id":16191888,"url":"https://github.com/marsidev/react-turnstile","last_synced_at":"2025-05-14T08:09:28.564Z","repository":{"id":61569093,"uuid":"552579139","full_name":"marsidev/react-turnstile","owner":"marsidev","description":"Cloudflare Turnstile integration for React.","archived":false,"fork":false,"pushed_at":"2025-02-21T18:24:30.000Z","size":839,"stargazers_count":548,"open_issues_count":1,"forks_count":32,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-12T01:06:27.936Z","etag":null,"topics":["captcha","cloudflare","turnstile"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@marsidev/react-turnstile","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marsidev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["marsidev"]}},"created_at":"2022-10-16T22:25:20.000Z","updated_at":"2025-05-12T00:37:59.000Z","dependencies_parsed_at":"2023-02-11T03:15:48.729Z","dependency_job_id":"3541a118-bdd1-43c6-ac7c-17aa3dcbf257","html_url":"https://github.com/marsidev/react-turnstile","commit_stats":{"total_commits":268,"total_committers":12,"mean_commits":"22.333333333333332","dds":0.09328358208955223,"last_synced_commit":"9e2e5639987c453bdbe3714599c105cbde6ace13"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marsidev%2Freact-turnstile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marsidev%2Freact-turnstile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marsidev%2Freact-turnstile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marsidev%2Freact-turnstile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marsidev","download_url":"https://codeload.github.com/marsidev/react-turnstile/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101558,"owners_count":22014908,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["captcha","cloudflare","turnstile"],"created_at":"2024-10-10T08:07:25.167Z","updated_at":"2025-05-14T08:09:23.556Z","avatar_url":"https://github.com/marsidev.png","language":"TypeScript","funding_links":["https://github.com/sponsors/marsidev","https://paypal.me/marsigliacr"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n \u003ch1\u003eReact Turnstile\u003c/h1\u003e\n \u003cimg src=\"preview.png\" width=\"300\" alt=\"Cloudflare Turnstile widget\" /\u003e\n \u003cp\u003e\u003ca href=\"https://developers.cloudflare.com/turnstile/\"\u003eCloudflare Turnstile\u003c/a\u003e integration for React.\u003c/p\u003e\n \u003ca href=\"https://npm.im/@marsidev/react-turnstile\"\u003e\n  \u003cimg src=\"https://badgen.net/npm/v/@marsidev/react-turnstile?style=flat-square\" alt=\"npm version\" /\u003e\n \u003c/a\u003e\n \u003ca href=\"https://npm.im/@marsidev/react-turnstile\"\u003e\n  \u003cimg src=\"https://badgen.net/npm/dm/@marsidev/react-turnstile?style=flat-square\" alt=\"npm downloads\" /\u003e\n \u003c/a\u003e\n \u003ca href=\"https://packagephobia.com/result?p=@marsidev/react-turnstile\"\u003e\n  \u003cimg src=\"https://badgen.net/packagephobia/install/@marsidev/react-turnstile?style=square-flat\" alt=\"install size\" /\u003e\n \u003c/a\u003e\n \u003ca href=\"https://bundlephobia.com/package/@marsidev/react-turnstile\"\u003e\n  \u003cimg src=\"https://badgen.net/bundlephobia/min/@marsidev/react-turnstile?style=square-flat\" alt=\"bundle size\" /\u003e\n \u003c/a\u003e\n \u003c!-- \u003ca href=\"https://bundlejs.com\"\u003e\n  \u003cimg src=\"https://edge.bundlejs.com/?q=@marsidev/react-turnstile\u0026badge\u0026badge-style=flat-square\" alt=\"bundle size powered by bundlejs.com\" /\u003e\n \u003c/a\u003e --\u003e\n \u003ca href=\"https://github.com/marsidev/react-turnstile/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://badgen.net/github/checks/marsidev/react-turnstile/main?style=flat-square\" alt=\"CI status\"\u003e\u003c/a\u003e\n \u003cimg src=\"https://img.shields.io/badge/tested_with-playwright-3ea744.svg?style=flat-square\" alt=\"tested with playwright\" /\u003e\n \u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\" alt=\"PRs are welcome\" /\u003e\n\u003c/div\u003e\n\n## Features\n\n* 💪 Smart verification with minimal user interaction\n* 🕵️‍♀️ Privacy-focused approach\n* 💉 Automatic script injection\n* ⚡️ SSR ready\n* 💻 TypeScript support\n\n## [Docs](https://docs.page/marsidev/react-turnstile/) | [Demo](https://react-turnstile.vercel.app/)\n\n## Getting started\n\n1. [Follow these steps](https://developers.cloudflare.com/turnstile/get-started/) to obtain a free site key and secret key from Cloudflare.\n2. Install `@marsidev/react-turnstile` into your React project.\n\n ```bash\n npm i @marsidev/react-turnstile\n ```\n\n## Usage\n\n```jsx\nimport { Turnstile } from '@marsidev/react-turnstile'\n\nfunction Widget() {\n  return \u003cTurnstile siteKey='1x00000000000000000000AA' /\u003e\n}\n```\n\n\u003e Checkout [the docs](https://docs.page/marsidev/react-turnstile) for more examples and for a detailed info about the `Turnstile` props.\n\n\u003e Checkout [the demo](https://react-turnstile.vercel.app/) for a live example.\n\n## Contributing\n\nAny contributions are greatly appreciated. If you have a suggestion that would make this project better, please fork the repo and create a Pull Request. You can also [open an issue](https://github.com/marsidev/react-turnstile/issues/new).\n\n## Development\n\n* [Fork](https://github.com/marsidev/react-turnstile/fork) or clone this repository.\n* Install dependencies with `pnpm install`.\n* You can use `pnpm dev` to start the demo page in dev mode, which also rebuild the library when file changes are detected in the `packages/lib` folder.\n\n\u003e The library is written under the `packages/lib` folder, the demo page is under the `demos/nextjs` folder and the docs are under the `docs` folder.\n\n## Contributors\n\n\u003ca href=\"https://github.com/marsidev/react-turnstile/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=marsidev/react-turnstile\" alt=\"Contributors\" /\u003e\n\u003c/a\u003e\n\n## Credits\n\nInspired by\n\n* [nuxt-turnstile](https://github.com/danielroe/nuxt-turnstile)\n* [svelte-turnstile](https://github.com/ghostdevv/svelte-turnstile)\n* [react-google-recaptcha-v3](https://github.com/t49tran/react-google-recaptcha-v3)\n* [reaptcha](https://github.com/sarneeh/reaptcha)\n\n## Support\n\nIf you like this project, please consider supporting it through a [PayPal donation](https://paypal.me/marsigliacr). :blush:\n\n## License\n\nPublished under the [MIT License](./LICENCE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarsidev%2Freact-turnstile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarsidev%2Freact-turnstile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarsidev%2Freact-turnstile/lists"}