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

Jsformvalidator Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for "validation parity." The core job-to-be-done is unchanged: one source of truth for validation rules, enforced server-side in Symfony Forms and mirrored client-side in JS. This package decides that for you — you buy the parity layer instead of hand-maintaining duplicate rule sets. Every new field or constraint change currently touches two codebases; that avoided cost is the business case.
  • Whether to promote a pilot out of "experimental." 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.
  • Platform upgrade sequencing (roadmap input). 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.
  • Version-line and maintenance-budget decision. The release notes explicitly say Symfony 5.4/6.4/7.x users should stay on the 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.
  • Payment / identity-form roadmap (new capability). The added 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.
  • Complex/nested form UX. The improved parent-form queueing condition matters for embedded forms (address inside checkout, line items inside an order, sub-entities in an application). If your high-value forms are composites rather than flat, the earlier risk of child forms not being validated client-side is reduced — worth re-testing on exactly that form shape during a pilot.
  • Consistency and compliance framing. Rules declared once in form types lower the probability of client/server drift. That matters where inconsistent validation is a trust or compliance issue (financial inputs, KYC, healthcare intake), not just polish.
  • Engineering-quality signal for "we can carry this." The revival story is now backed by a stable release: PHPStan running clean in CI, enforced PHP and JS coverage gates with Cobertura reports, Dependabot across Composer/npm/Actions, a documented Nix dev environment alongside Docker, and green CI + CodeQL on the release commit (PHP 8.4/8.5/8.6, JS, Cypress). That supports a "maintainable, we can own it" position in architecture review.
  • Risk/exit decision. MIT license plus self-contained form-type integration and a JS validator keeps switching cost bounded. Still a reversible bet rather than a platform commitment.

When to Consider This Package

Adopt or pilot when most of the following hold:

  • You are actually on Symfony with Symfony Forms as the primary form abstraction. The entire value derives from Form types and constraints. On Laravel, or with Livewire/Inertia/API-first React forms, the derivation layer has no anchor and the value evaporates.
  • You are on, or about to move to, Symfony 8 / PHP 8.4+. 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.
  • You have meaningful form surface area and churn. Dozens of forms, or a handful of high-value ones (checkout, onboarding, applications) whose constraints change often. With two static forms, hand-written JS is cheaper.
  • Duplicate validation is a named pain. Engineers visibly maintain the same rule twice and drift bugs have shipped. That is the signal this removes a real cost.
  • You have checksummed or high-stakes inputs. Card numbers, SIRET, national IDs, account numbers — the new Luhn constraint is exactly the inline-feedback win that justifies the pilot form. Pick one of these as the pilot.
  • Your JS stack tolerates the package's client-side library. Verify the emitted JS and its runtime dependency against your bundler, CSP policy, and browser matrix before committing — still the most likely late-discovered blocker.
  • You have test capacity for the browser layer. Upstream runs Jest and Cypress e2e; your regression surface is generated-JS behavior, so budget browser-level tests, not just unit tests.
  • You accept small-project provenance. Stable versioning reduces the risk but does not change the fundamentals: small maintainer pool, no broad dependent base to prove battle-testing. Expect to own upgrades.

Look elsewhere when:

  • Stack mismatch (Laravel, Rails, Django, or a decoupled SPA). The value is framework-specific — and this release makes it more so, pinning to Symfony 8. In a Laravel product, the honest recommendation stands: skip the package and treat it as a reference implementation for constraint-to-rule derivation.
  • You are pinned below Symfony 8 in the near term. Staying on 1.7 means a legacy branch with no stated support window. Fine for a short bridge; not fine as an unowned long-term position.
  • You need client-side validation to be the security boundary. It never is. Server-side validation remains mandatory; redirect any "this closes a security gap" framing to request validation and hardening.
  • Your forms are already generated from a schema (JSON Schema / OpenAPI-driven forms) — you likely already have the single source of truth this provides, and adding it creates a second one.
  • Accessibility/i18n requirements exceed constraint-derived messages. If error copy is designed, localized content, auto-derived messages become a workaround-laden layer.

How to Pitch It (Stakeholders)

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.

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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource