tomatophp/filament-form-builder
Filament Form Builder for Laravel lets you create dynamic forms in Filament with a drag-and-drop builder, reusable fields, and stored submissions. Manage forms and entries from your admin panel without writing code.
Scope note: No prior assessment exists for this package, so this evaluation is derived from the v5.0.1 release note alone. It is provisional until package identity, version support matrix, and current pinned version are confirmed.
Architecture fit. The package follows standard Laravel package conventions: a service provider registers a view namespace and publishes assets. The defect is that the provider registered and published a resources/views directory the distributed artifact does not contain. This is most likely vestigial scaffolding from a package skeleton (where the views directory is created but empty and then excluded from the Composer archive or .gitattributes export) or a case where view templates were removed without deregistering the namespace. Registering a namespace that resolves to nothing is not itself a runtime error — it only surfaces when a consumer walks all registered view paths, which is exactly what view:cache does. That makes this a build-time-only defect with an outsized blast radius in modern Laravel pipelines.
Integration feasibility. v5.0.1 is a patch release confined to service provider registration; no public API, config schema, or published asset contract is described as changed. Integration should be a drop-in composer update with no application code changes. The main compatibility question is whether removing the view registration breaks anything that consumed it: if any host app published views to resources/views/vendor/{package} or called view('{package}::…'), those calls would now fail. Given the package does not ship views, that surface should be empty, but it should be verified against the actual package, not assumed.
Technical risk. Low. The upgrade risk is a patch bump with a narrow, well-understood fix. The residual risk is what else shares the same root cause — if the provider was generated from a skeleton, other load*From or publishes calls may also point at unshipped paths (translations, config, migrations). The secondary risk is supplier quality: a defect that only manifests in php artisan optimize indicates the release pipeline does not smoke-test the package against a clean Laravel skeleton running the standard deploy optimization steps.
Key questions.
view:cache alone, or also config:cache, route:cache, event:cache (i.e., does it abort optimize entirely or partially)?optimize behavior?view:cache, manually created vendor view directories) that must be unwound?Stack fit. Standard Laravel package surface: Composer-installed, auto-discovered service provider, artisan publish tags. Fits any Laravel app on a supported PHP version. The relevant environmental detail is that Laravel 11+ folded view:cache into php artisan optimize, which is why a dormant provider defect became a hard deploy failure rather than a cosmetic warning.
Migration path. Upgrade via Composer constraint bump to ^5.0.1 (or 5.0.*). If the team pinned to 5.0.0 or added a workaround, remove the workaround in the same change so the pipeline exercises the real code path. For teams coming from 4.x, treat this as a normal major-version upgrade and read the 5.0.0 upgrade notes separately — this release note does not describe that surface.
Compatibility. Confirm PHP constraint, Laravel version range, and that no dependency versions moved (a patch release should carry none). Confirm the provider no longer registers the missing directory and, if views are genuinely part of the package's future, that they are shipped and included in the Composer archive rather than excluded by export rules.
Sequencing.
php artisan optimize then optimize:clear.view:cache and view:clear in CI, cold, with a cleared bootstrap/cache.vendor:publish --provider=... --dry-run (or in a throwaway checkout) to confirm the publish set is what you expect.mkdir -p resources/views/vendor/...).Maintenance. Near-zero ongoing cost. One upgrade ticket plus workaround cleanup. The durable action item is a regression guard: add php artisan optimize to the package's own CI matrix against a clean Laravel skeleton, or, if this is a third-party dependency, add view:cache to your own smoke suite so provider-level path defects fail in your CI rather than in a deploy.
Support. Expected support volume post-upgrade is low; incident volume should drop for any team whose deploys were failing. Teams that "fixed" the problem by skipping view:cache will not have an incident to close, so they need to be told the workaround is now removable — otherwise the latent cost (uncompiled views) persists indefinitely and gets attributed to the package.
Scaling. No runtime or throughput impact. The affected code path executes only at build/deploy time. The indirect scaling effect matters: if view:cache was skipped as a workaround, views compile lazily on first request, adding cold-start latency and per-instance CPU on every autoscaled container — a real cost at high replica counts, invisible on a single long-lived server. Restoring view:cache is the actual performance win here.
Failure modes.
artisan optimize — hard block, no partial rollout if the step precedes traffic shift.optimize partially applied caches before failing, a container can ship with some caches warm and others not; treat cache state as atomic and always run optimize:clear before optimize.resources/views/vendor/{package} directories after upgrade — harmless but confusing during incident triage.Ramp-up. Effectively zero for anyone comfortable with Composer and artisan. The knowledge worth transferring is not the fix but the deploy-hook contract: which artisan commands run, in what order, and what a partial cache state looks like. That belongs in the package's own docs and in your deploy runbook, not in tribal memory.
How can I help you explore Laravel packages today?