fp/jsformvalidator-bundle
Symfony bundle that adds client-side JavaScript validation to forms. It generates rules from Symfony form constraints, supports AJAX checks, and helps keep front-end and back-end validation consistent while reducing unnecessary server requests.
1.8.0 is the first stable release on the Symfony 8 baseline — not another beta. If a pilot on 1.7.0-beta1 was carrying a "revisit when stable" caveat, this is the trigger to make the go/no-go call. Beta-version risk on the dependency decision is materially reduced; the early-adopter risk (small maintainer pool, no evidence of dependent growth) is not eliminated.1.8 requires PHP 8.4+, Symfony 8.0, Twig 3. That couples this dependency to your PHP/Symfony upgrade wave. Decision: is the Symfony 8 / PHP 8.4 migration already on the roadmap? If yes, 1.8 rides along at near-zero marginal cost. If no, you are pinning the 1.7 line and inheriting a version-split problem (see below) — a scheduling decision, not a library decision.1.7 line. That creates a two-track project: a stable Symfony 8 branch and a legacy-compatible branch with no stated support commitment. For a PM this is a real line item — "which branch are we on, who owns the upgrade, and what happens if 1.7 stops receiving fixes before we migrate?" Budget it, don't assume it away.Luhn client-side constraint (mirroring Symfony's LuhnValidator) means checksummed inputs — card numbers, SIRET, and similar identifiers — now get inline feedback in the browser instead of a round trip. This directly supports product bets on checkout conversion, KYC/onboarding completion, and fraud-adjacent data entry, where the submit-and-wait loop is most expensive. It also narrows the set of "we still need custom JS for this field" exceptions.Adopt or pilot when most of the following hold:
1.8 is the Symfony 8 baseline branch. If you are mid-migration, adopt ^1.8 and align the two workstreams. If Symfony 8 is not on your roadmap, you are adopting the 1.7 line deliberately, with a written upgrade trigger.Luhn constraint is exactly the inline-feedback win that justifies the pilot form. Pick one of these as the pilot.Look elsewhere when:
1.7 means a legacy branch with no stated support window. Fine for a short bridge; not fine as an unowned long-term position.To executives (one paragraph): This is a small, MIT-licensed library that removes a recurring, low-visibility engineering tax: keeping validation rules in sync between server and browser. Declare a rule once and users get immediate inline feedback — fewer submit-and-wait round trips, fewer confusing error states, fewer "the browser let me submit but the server rejected it" bugs. It has now reached its first stable release, so the earlier "we're on a beta" caveat is largely retired; the remaining cost is a small dependency plus an upgrade obligation tied to our PHP/Symfony version. The newest addition, checksum validation for card and identifier numbers, lands directly on our checkout/KYC forms, where the conversion case is easiest to measure. Strategic caveat on record: it is a Symfony bundle pinned to Symfony 8 / PHP 8.4+, so if our product is Laravel — or stuck on Symfony 6/7 for the next year — the decision is to copy the pattern, not install the package.
To engineering (summary): 1.8.0 is the first stable release of the Symfony 8 baseline: PHP 8.4+, symfony/* ^8.0, Twig 3, PHPUnit 13. New since the beta: a Luhn client-side constraint mirroring LuhnValidator, a fix to parent-form queueing (relevant if we use embedded form types), and routine dependency maintenance. The 1.7 line remains the path for Symfony 5.4/6.4/7.x — so confirm our branch before pinning, and write down the trigger for moving to 1.8. It still requires Symfony Forms as the foundation and adds a JS validator runtime; verify bundler and CSP compatibility early. Quality story is genuinely better than at revival: PHPStan clean in CI, enforced PHP/JS coverage gates with Cobertura, Dependabot across the stack, green CI and CodeQL on the release commit. But the maintainer pool is small and there's no broad dependent base — treat it as a supported-by-us dependency: pin ^1.8, add browser-level regression tests, assign an owner. MIT license keeps exit costs low.
The one-line ask: Approve converting the pilot into a supported dependency on a single high-traffic form — preferably a Luhn-bearing checkout or KYC field on the Symfony 8 branch — with a written go/no-go on generated-JS compatibility, CSP/bundler fit, and named maintenance ownership. Not a platform-wide rollout; and if we are not on Symfony 8, the answer is to lift the constraint-to-rule pattern into our own layer.
How can I help you explore Laravel packages today?