runn/validation
A Laravel validation package that extends the framework's built-in validator with additional rules and helpers, making it easier to define and reuse custom validation logic across your application's forms and requests.
Architecture fit
runn/validation is not a Laravel package. It is a framework-agnostic PHP validation and sanitization library from the Runn Me! family — no service provider, no facade, no publishable config, no Validator contract implementation, no Laravel-aware exception type. Any assessment that treats it as a drop-in Laravel validation replacement is misframed.
The realistic fit is narrow but legitimate: a domain-layer invariant checker sitting behind Laravel's HTTP boundary. Laravel's FormRequest/Validator remains responsible for request shape, auth-scoped rules, and user-facing messages; runn/validation would own sanitization and business-rule validation inside a bounded context, where its value-object and contract-oriented design is a better conceptual match than Laravel's string-keyed rule arrays. That is a hexagonal/DDD posture, and it only pays off if the team has already committed to that layering. In a conventional Laravel CRUD codebase this library adds a second validation vocabulary with no offsetting benefit.
Integration feasibility
Composer install is trivially feasible; everything after that is bespoke work:
MessageBag/ValidationException so the existing exception handler and front-end error rendering keep working.lang/ files.Rough order of magnitude: low single-digit engineer-weeks for a production-grade adapter with tests — not because the library is complex, but because none of it exists.
Technical risk
This is where the package fails as a default choice:
Key questions
composer.json? Does it install cleanly on our PHP/Laravel target?Stack fit
Installable in any Composer project on a supported PHP version. Architecturally it belongs in the domain/application layer, consumed by domain services and value objects, never by controllers. The HTTP edge keeps FormRequest; the domain edge gets a thin Validator port implemented by a RunnValidationAdapter. This keeps the dependency swappable — the single most important design decision given the maintenance risk.
Migration path
Do not migrate. There is no migration path from Laravel's validator to this library, and attempting one trades a supported, documented, localized, well-understood component for an unsupported one. The only defensible adoption is greenfield, incremental, and contained: introduce the library in one new bounded context where domain-level sanitization is genuinely needed, behind the port above, and leave every existing FormRequest untouched.
Compatibility
Three checks gate any further work:
composer why-not runn/validation against the current lockfile — confirm no PHP constraint conflict with the Laravel version in use.Sequencing
Validator port, error-to-MessageBag translation, localization, boundary tests.Maintenance
Treat the package as vendored code we own. Realistic steady state: a fork in our VCS, a named internal owner, and a standing commitment to patch PHP-version and security issues ourselves. If the organization cannot fund that, do not adopt. The 0-dependents figure means no upstream community will absorb this work.
Support
None. No vendor, no active community, no security disclosure process, no issue-triage SLA. Escalation is internal, full stop. Budget an SME who understands the library's idioms — that person is a single point of failure until a second engineer is trained.
Scaling
Runtime cost is negligible and not a scaling concern: validation is per-request, CPU-bound, and dominated by whatever rules are configured. The scaling risk is organizational, not technical — the number of bounded contexts depending on an unmaintained library grows monotonically while the maintenance capacity does not. Cap adoption explicitly (e.g., "no more than two contexts") or the dependency footprint will outgrow the willingness to replace it.
Failure modes
Ramp-up
Moderate for a small library. Engineers familiar with Laravel's validator will need a mental model shift to contract/object-oriented validation, and the thin, partly non-English documentation slows the first week. Estimate 3–5 days to productive, plus the adapter work before anyone can ship. Weigh that against the alternative: a hand-rolled domain validator using Laravel's own rule objects, which ramps in hours, carries no license obligation, and is fully owned — for most teams that is the better trade, and this package's low readiness score is the reason why.
How can I help you explore Laravel packages today?