fruitcakestudio/recaptcha
Laravel integration for Google reCAPTCHA. Adds validation rules, Blade directives and middleware to protect forms and routes from bots and spam, with support for reCAPTCHA v2 and v3 plus configurable keys, score thresholds and error messages.
Architecture fit
siteverify endpoint: a service provider, a config file for site/secret keys, a Blade/helper surface for rendering the widget, and a custom recaptcha validation rule. Its architectural footprint is small and non-invasive — it does not touch persistence, queues, or the request lifecycle beyond validation.Http client and a Rule object would be better owned, better tested, and version-current.Integration feasibility
composer require, publish config, add keys to env, register the provider if auto-discovery is absent, attach the rule to form requests. Estimated effort: under a day for a spike.config(), container bindings, Str/Arr helpers) break.illuminate/support or guzzlehttp/guzzle to ranges that conflict with current versions, forcing --ignore-platform-reqs or a fork.Technical risk
| Risk | Severity | Likelihood | Notes |
|---|---|---|---|
| Unmaintained / no security patches | High | Certain | Last commit ~2017; no CVE response path |
| No reCAPTCHA v3 or Enterprise support | High | Certain | Blocks modern risk-scoring strategy |
| Laravel version incompatibility | Medium | High | Untested beyond ~5.4/5.5 |
| Secret key handling posture | Medium | Medium | Verify no logging/echo of secret |
| Google API deprecation of v2 | Medium | Low-Medium | Still live, but roadmap risk |
| Single-maintainer abandonment | High | Certain | Already realized |
Key questions
Stack fit
Migration path
CaptchaVerifier contract with a single verify(string $token, ?string $ip): Result method. Bind the package's behavior behind it, or skip the package entirely and implement the contract directly against siteverify.Compatibility
illuminate/support, illuminate/validation, and guzzlehttp/guzzle. A conflict here is the most likely hard stop.providers entry (and that the entry is removed cleanly if reverted).Rule/ValidationRule contracts; older string-based rule resolution still works but lacks type safety and testability.php artisan config:cache) is safe — a common failure point for packages that read env at runtime.Sequencing
Maintenance
Support
Scaling
Failure modes
Ramp-up
.env), alerting on verification failure rate, and an internal owner.TPM recommendation: Do not adopt as a long-term dependency. The 0.17 score and zero dependents are consistent with what the code shows: a thin, useful-in-2017 wrapper that is now a lifecycle liability for a security-adjacent control. Either implement the verifier in-house behind a stable contract, or adopt a maintained alternative that supports reCAPTCHA v3 and current Laravel versions. If a short-term bridge is required, fork, vendor, pin, and schedule its replacement.
How can I help you explore Laravel packages today?