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

Filament Form Builder Laravel Package

packstub/filament-form-builder

A drag-and-drop form builder for Filament that lets you create dynamic, database-driven forms with a visual editor. Design reusable form schemas, manage fields and submissions from your admin panel, and render forms anywhere in your Laravel app without repetitive code.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package is a Filament/Livewire-centric dynamic form builder: fields are defined as JSON, rendered through both a Blade renderer and a Livewire renderer, and surfaced in the Filament panel (submissions table, filters, details view). It fits applications already standardized on Filament for admin/back-office surfaces; it is a poorer fit for teams without Filament or Livewire in their stack.
  • v1.4.0 confirms a deliberate "soft dependency" pattern: packstub/filament-rating is auto-detected and never required, and the persisted score is unchanged. This is architecture-friendly — presentation-only coupling, no data migration, reversible by uninstalling the optional package.
  • The new detailEntry() extension point on field types gives vendors/in-house teams a supported hook to render custom field details without forking. Treat this as a public API surface and pin expectations accordingly.
  • Choices-in-columns stores layout in the field's JSON options, not in schema. That keeps definitions portable and avoids per-field migrations, but makes the JSON definition a de facto schema that must be versioned and validated.

Integration feasibility

  • Low-friction install: Composer package, config/migrations for submission storage, field definitions authored as JSON. No per-field database migrations — a significant feasibility advantage for teams that iterate on forms frequently.
  • Optional rating package is additive and detected at runtime; installing or removing it changes only presentation. Feasible to ship without it and pilot it separately.
  • Responsive behavior (four columns down to one on small screens) is handled in-package across both renderers and the panel, so no custom CSS work is implied for basic use.

Technical risk

  • Medium — renderer parity. Blade, Livewire, and panel renderers must stay behaviorally identical (columns, star input, details entries). Parity bugs are the most likely defect class and the hardest to spot in code review; require visual regression coverage.
  • Low/Medium — cross-database sorting. The numeric star-column sort (10 after 9) is explicitly handled for MySQL and Postgres. Confirm the same holds for SQLite/MariaDB if those are in your matrix; string-vs-numeric casting is a classic divergence.
  • Low — soft dependency drift. Detection-based integration means the combination "rating package installed, older/newer version" may be under-tested. Pin and test the supported version range.
  • Low — JSON definition drift. Column layout only exists in definitions saved after the feature ships; older definitions render with defaults. Harmless, but document the behavior.
  • Low — docs/screenshot churn. README restructuring and new screenshots improve onboarding but add a maintenance surface; screenshots silently rot across UI changes.
  • Unknown — extension API stability. detailEntry() is new; no stated deprecation policy for field-type extension points.

Key questions

  • Which Filament, Livewire, Laravel, and PHP versions are supported, and is there a published compatibility matrix?
  • Is the Blade renderer viable standalone (no Filament panel), or is Filament a hard dependency for submissions/filters?
  • What is the version constraint and test coverage for packstub/filament-rating, and what happens on a version mismatch (silent fallback vs. error)?
  • Is the field-definition JSON schema versioned? How are definitions validated on save/import?
  • Are there automated tests asserting Blade/Livewire/panel output parity, and database-matrix tests for the numeric sort?
  • What is the license, release cadence, and maintainer/bus-factor profile?
  • Does detailEntry() carry a backward-compatibility commitment?

Integration Approach

Stack fit

  • Best fit: Laravel + Filament + Livewire applications that need configurable, non-developer-authored forms with submissions stored and reviewed in the admin panel.
  • Acceptable fit: Laravel + Livewire applications using only the Blade/Livewire renderers, if the panel features are not required.
  • Poor fit: non-Filament admin stacks, heavily customized front-end frameworks, or teams unwilling to treat JSON definitions as versioned artifacts.

Migration path

  • Greenfield: install, publish config/migrations, define fields as JSON, wire renderers, optionally add the rating package.
  • Brownfield: introduce for new forms only; do not retrofit existing hardcoded forms in the same release. Existing definitions remain valid — the columns setting is additive and defaults to current behavior.
  • The rating integration is explicitly reversible: install to evaluate, uninstall to revert, with no stored-data change. Use this as a low-risk pilot.

Compatibility

  • Gate on the Filament major version first; that constraint typically drives everything else.
  • Pin the optional rating package to a tested range and include a CI job with it both present and absent.
  • Verify the numeric star sort on every database you support, not just MySQL/Postgres.
  • Confirm that the JSON column option is ignored gracefully by any older package versions still running in other environments during a rolling deploy.

Sequencing

  1. Week 1 — compatibility spike. Verify Filament/Livewire/PHP versions in a scratch app; build one form with radio/checkbox columns and confirm responsive collapse.
  2. Week 2 — renderer parity check. Same definition through Blade, Livewire, and panel; capture screenshots; file parity gaps early.
  3. Week 3 — pilot one low-risk form in staging with submissions table, filters, and details view.
  4. Week 4 — optional rating evaluation. Install packstub/filament-rating, confirm star input/column/filter, then test uninstall to prove reversibility.
  5. Week 5+ — production rollout form by form; establish a definition-review step (JSON diff review) as part of the change process.

Operational Impact

Maintenance

  • Low day-to-day burden: no per-field migrations, JSON-based definitions, and an additive release with no breaking changes or deprecations in v1.4.0.
  • Ongoing costs are (a) tracking Filament/Livewire upgrades, (b) keeping the optional rating package within a tested range, and (c) refreshing docs/screenshots when contributing upstream.
  • Treat field-definition JSON as code: review, version, and back up alongside application changes.

Support

  • Improved onboarding surface: shorter feature list, field-type table under "Building a form," and screenshots for the rating input, star column, and multi-column choices reduce first-line support load.
  • Expect user questions about column layout on small screens (intentional single-column collapse) and about why stars appear/disappear (optional package presence) — document both.
  • detailEntry() shifts custom-field rendering support from "fork the package" to "use the extension point," which reduces support escalations if documented well.

Scaling

  • Definitions are small JSON documents; negligible storage or compute cost.
  • The real scaling concern is the submissions table: average score plus full star distribution per row can become an aggregation hotspot at high submission volumes. Plan indexes on score/submission foreign keys and watch query counts on list views.
  • Rating is presentation-only, so it adds no write-path load beyond rendering.

Failure modes

  • Optional package absent or mismatched → falls back to non-star rendering; degraded but not broken. Verify the mismatch path explicitly.
  • Renderer divergence → a form looks correct in preview but wrong in the panel (or vice versa). Mitigate with shared fixture definitions and screenshot-based checks.
  • Definition skew during rolling deploys → older package versions ignoring the columns key; cosmetic only, but confirm no validation rejects unknown keys.
  • Numeric sort regression on an untested database → star column misorders (10 before 9). Add a DB-matrix test.
  • Extension-point drift → custom detailEntry() implementations breaking on upgrade; pin versions and read changelogs.

Ramp-up

  • Individual developer: roughly 1–2 days to install, define a form, and render it in the panel; an additional half-day for the optional rating integration.
  • Team: budget one sprint for the compatibility spike, pilot form, parity verification, and definition-review process. The docs restructure materially shortens this versus a typical form-builder evaluation.
  • Recommend a written internal standard for field-definition JSON (naming, layout options, validation) before broad rollout, so the stored definitions stay consistent as adoption grows.
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