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

Voyager Forms Laravel Package

pvtl/voyager-forms

Voyager Forms adds a drag-and-drop form builder and submission management to Laravel's Voyager admin. Create dynamic forms, define fields, publish them, and review entries from the dashboard without custom code.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. pvtl/voyager-forms is an admin module for Voyager, the BREAD-based Laravel admin panel. Architecturally it is a database-driven form builder: administrators define forms and fields in the admin UI, definitions live as rows (not code), and submissions are captured in the host application's schema. That fits a specific profile: a Laravel monolith already standardized on Voyager, a small team, and low-complexity public forms (contact, enquiry, lead capture) that non-developers need to edit without a deploy. It does not fit if forms are a product surface requiring conditional logic, multi-step flows, payments, or integrations — those are outside what a 2020-era Voyager module credibly covers.

Integration feasibility. Mechanically simple: Composer install, register the Voyager module/service provider, run migrations, and the module surfaces in the admin menu. The effort is not in wiring; it is in the compatibility gate. Last release was April 2020, which puts it in the Laravel 6/7 era. Any target on Laravel 9+ should be assumed incompatible until proven otherwise. More importantly, the real dependency is Voyager itself, whose own Laravel/PHP support is community-driven and uneven — that, not this package, is the binding constraint on the platform's upgrade path.

Technical risk. High, and mostly unmanaged by upstream:

  • Archived, no security response channel. No patches for XSS, mass assignment, upload handling, or dependency CVEs.
  • Abandoned transitive dependencies. Packages of this vintage commonly pull in form/HTML helpers that are themselves unmaintained; composer audit should be treated as a gate, not a formality.
  • Schema ownership inversion. Form definitions are data, not code — they can't be reviewed, diffed, or rolled back with the application. Untested field types and validation rules stored as strings are a latent production-surprise surface.
  • Migration collisions. Module migrations write into the host DB and can conflict with Voyager's own tables or naming conventions.
  • Rendering trust. Admin-authored labels/help text/option markup rendered to public users is a stored-XSS risk if escaping is inconsistent.

Key questions for the team.

  1. What Laravel, PHP, and Voyager versions are actually in play, and when is the next Laravel upgrade?
  2. Is Voyager a strategic commitment or already legacy? (If legacy, this package inherits that expiry date.)
  3. Do submissions land in package-owned tables or app-owned tables we can migrate away from?
  4. Does notification delivery go through a queue with retries, or inline mail()?
  5. What are the spam/abuse controls, and are they maintained?
  6. What is the PII retention and export story for submitted data?
  7. Who owns a fork if we adopt, and what is the budget for it?

Integration Approach

Stack fit. Good for a Voyager-based Laravel monolith with an ops-light team. Poor for API-first/headless, SPA or mobile front-ends (the module renders Blade views and expects server-side POST/CSRF), and poor for any org that wants form definitions versioned in source control.

Migration path. Two distinct cases:

  • Greenfield: do not adopt. Build forms in-app with native Laravel validation plus Blade/Livewire, or use a hosted form vendor for purely marketing-facing forms. Both avoid a niche-on-niche dependency.
  • Already in production: move to containment. Vendor the package (fork into the repo or a private VCS), pin the version, snapshot the schema, and write an exit plan before the next Laravel upgrade forces the issue.

Compatibility work. Audit Composer constraints against the target framework; run composer outdated and composer audit; run migrations against a production-shaped copy of the DB; confirm the Voyager version is pinned and that no other module touches the same tables. Treat PHP 8.x behavior as unverified until exercised.

Sequencing. A four-step path with an explicit decision gate:

  1. Spike (2–3 days). Install into a throwaway app on the target stack; exercise the full loop — create form → publish → submit → notify → export → delete form (verify cascade/orphan behavior).
  2. Decision gate. Adopt-as-is / fork-and-maintain / replace. Write the reasoning down; this is the artifact that survives staff turnover.
  3. If fork: add CI running lint, migrations, and one end-to-end submission test; pin PHP/Laravel; name an owner and a review cadence.
  4. If replace: inventory live forms and submission volume, define an export and a parallel-run window, then retire the module rather than leaving it dormant in the codebase.

Operational Impact

Maintenance. The package is a liability by default — there is no upstream to fix anything. Cost resolves to one of two modes: freeze and hope (near-zero effort, rising risk, unquantified until an incident) or own a fork (roughly 0.1–0.2 FTE steady-state, spiking sharply at each framework upgrade). The fork cost is capped by Voyager's own trajectory; if Voyager stalls, the fork buys time rather than a future.

Support. No vendor, no SLA, community-only. Operationally this means an internal runbook is mandatory: how to add a field type, how to diagnose a missing notification, how to recover from a bad migration, who can edit forms. Without it, knowledge concentrates in whoever installed it.

Scaling. Fine for low-volume admin-managed forms. Pressure points are predictable: email dispatch must be queued or submission latency and silent failures follow; file uploads need explicit storage limits and validation; submissions sharing the primary database become a noisy-neighbor risk under load; and the export/reporting path is unverified at volume.

Failure modes to instrument for.

  • Silent notification failure (mail misconfiguration, no queue, no retry, no alert).
  • Spam floods with no maintained captcha/honeypot integration.
  • Drift between form definitions in the DB and what the code expects.
  • Stored XSS via unescaped admin-authored markup.
  • Orphaned or duplicated submissions when a form or field is deleted.
  • Hard upgrade dead-ends when Voyager or PHP moves past the pinned version.

Ramp-up. Steeper than the code size suggests: a developer must learn Voyager's conventions and this module's conventions on top of them. Budget about a week for a mid-level Laravel developer to be productive, and treat bus-factor as a first-class risk — the realistic worst case is that the original implementer leaves and the next upgrade becomes an unplanned rewrite.

Verdict. Archived status, a 2020 release date, and a decaying host framework make this a legacy asset, not a component to invest in. Recommendation: no new adoption; for existing installs, pin, fork, document, and fund an exit — ideally timed to the next Laravel upgrade rather than triggered by an incident.

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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core