Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Recaptcha Bundle Laravel Package

pwiejak/recaptcha-bundle

pwiejak/recaptcha-bundle integrates Google reCAPTCHA into Symfony applications, helping protect forms and endpoints from spam and automated abuse. It offers straightforward configuration, server-side verification, and simple service integration for adding reCAPTCHA checks to your project.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Despite the brief's framing, this is not a Laravel package — it is a Symfony bundle and a hard fork of EWZRecaptchaBundle, one of the long-standing community integrations for Google reCAPTCHA v2. It ships as a bundle with a DI extension, a form type (EWZRecaptchaType in the original, likely renamed or unchanged here), Twig helpers, and a validator constraint. Any evaluation must start by correcting the stack assumption: dropping this into a Laravel application means either running the Symfony Form/Validator/DI components standalone or, more realistically, vendoring a handful of classes — at which point you have taken on fork maintenance to save writing ~50 lines of HTTP and validation logic yourself.

Integration feasibility. For a Symfony application already using the Form component, feasibility is high in pure mechanical terms — the bundle pattern is standard, registration is a bundles.php entry plus a YAML config block, and the original's API surface is small and known. But that is feasibility against the upstream lineage, not against this artifact. There is no guarantee the fork is current: the original EWZRecaptchaBundle's own maintenance has been sporadic, and forks inherit their parent's abandonment timeline plus their own. Whether this fork tracks Symfony 6/7 deprecations, PHP 8.x typing, and the PSR/attribute-based configuration modernisation is unknown and must be verified before anything else.

Technical risk. Concentrated and unusually high for the amount of functionality involved:

  • Provenance risk. Zero stars, zero dependents, no release history cited. A fork with no consumers has no bug reports, no CVE triage, and no field-tested edge cases. You would be the first production user, effectively.
  • Supply-chain risk. Single-maintainer, low-visibility repository; Composer resolution would pull from Packagist under a fork namespace, and a compromised or abandoned personal fork is a genuine dependency-hygiene problem.
  • Compatibility risk. Google has been steering integrators toward reCAPTCHA Enterprise and v3 score-based flows. A v2-oriented bundle with a forked validator may not expose v3 (score thresholds, action names, token expiry handling) — which is where most current product requirements live.
  • Bus factor. One.
  • Value risk. The bundle's entire contribution is form-type plumbing and a validation constraint. The underlying call is a single POST to Google's siteverify endpoint. The build-vs-adopt math is weak here.

Key questions for the maintainer / repo inspection.

  1. What Symfony and PHP versions are declared in composer.json, and when was the last commit?
  2. Does it support reCAPTCHA v3 / Enterprise, or only v2 checkbox?
  3. What is the delta versus upstream EWZRecaptchaBundle — why does this fork exist, and is the divergence security-related?
  4. Are there tagged releases, a CHANGELOG, or CI configuration?
  5. How does the bundle handle network failure to Google's endpoint — fail-open or fail-closed?

Integration Approach

Stack fit. Poor against the stated Laravel target. Laravel's form and validation layers are unrelated to Symfony's; the bundle's value would not survive translation. If the real target is a Symfony service, fit is reasonable but generic — first-party or actively maintained alternatives exist, and reCAPTCHA Enterprise has an official Google client library that removes the need for a bundle entirely.

Migration path. Two viable routes:

  • Symfony service: trial the bundle in a non-production environment first, verifying it boots under the application's Symfony version. If it fails, the fallback is upstream EWZRecaptchaBundle, and the fallback to that is a hand-rolled service.
  • Laravel service: do not use this bundle. Implement siteverify directly behind a small service class and a validation rule, with the secret in the existing secrets manager.

Compatibility. Confirm three things before committing: Symfony minor-version support, reCAPTCHA API version (v2 vs v3), and PHP version constraints against your runtime. Any gap is a blocker, not a workaround candidate — this is a fork, so you cannot upstream a fix and expect it to land.

Sequencing. (1) Repository audit — commit recency, tests, CI, declared versions. (2) Spike in a throwaway branch confirming form rendering and server-side verification against a test key pair. (3) Decide adopt vs. build; given the package's profile, the honest default is build. (4) If adopted, pin the exact commit SHA rather than a version range, and record the decision and its rationale.

Operational Impact

Maintenance. You should assume you are the maintainer. A zero-star fork with no dependents will not receive fixes on any cadence you can depend on; patches become your team's responsibility, and every Symfony major upgrade becomes a manual rebase against a parent that may itself be stale. Budget ongoing effort, not a one-time integration cost.

Support. No community, no issue triage, no Stack Overflow corpus for this specific fork. The upstream project's documentation partially transfers, but only partially, and diverges further with each commit.

Scaling. Functionally a non-issue — reCAPTCHA verification is a single outbound HTTPS call per form submission and the bundle adds no state of its own. Operationally it is an issue: Google's endpoint becomes a third-party dependency in your critical path, and the bundle's error semantics determine whether an outage at Google locks users out of your forms. Verify fail-open behaviour explicitly, and add a timeout and a circuit breaker regardless of which implementation you pick.

Failure modes. (a) Google endpoint latency or outage blocking submissions; (b) stale bundle breaking on a Symfony upgrade during an unrelated deploy; (c) v2-only surface blocking a later migration to v3 score gating; (d) abandoned fork accumulating an unpatchable CVE in a transitive dependency; (e) silent validation bypass if the validator's failure path is misconfigured.

Ramp-up. Negligible for any developer familiar with Symfony forms — hours, not days. The cost is not learning the package; it is the standing obligation to own it. On the Laravel side, ramp-up is effectively zero because the recommended action is not to use it.

Recommendation. Do not adopt. The package under evaluation is a low-visibility fork of a sporadically maintained bundle, misaligned with the stated Laravel stack, and its entire capability set is reproducible in well under a day with a thin service wrapper and a first-party or official Google client. If a Symfony service genuinely benefits from a bundle, evaluate the maintained upstream first; if this fork offers a specific fix that motivated its existence, capture that diff as internal code rather than inheriting an unowned dependency.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle