- How do I install tapp/filament-form-builder?
- The package is not yet on Packagist, so you must add a VCS repositories entry pointing at https://github.com/TappNetwork/Filament-Form-Builder in your composer.json first. Then run composer require tapp/filament-form-builder:"^4.0". Publish the migrations with php artisan vendor:publish --tag="filament-form-builder-migrations" and run php artisan migrate. Views, translations, and the config file can be published separately with their own tags.
- What PHP, Laravel, and Filament versions does this package support?
- The current 4.x line requires PHP 8.2+, Laravel 11.0+, and Filament 4.x or 5.x. Older applications are excluded by design, so check your platform before adding the dependency. If you are still on Filament 3, you need the separate 1.x branch of the package instead, which has its own documentation.
- Does my application need to already use Filament to use this form builder?
- Yes. This is a Filament-native plugin, not a framework-agnostic form library, and public form delivery is implemented as Filament pages rather than a controller and view layer. It assumes a three-panel topology: an admin panel, a guest panel for unauthenticated users, and a frontend panel for authenticated users. If your admin is custom Livewire, Nova, or plain Blade, adopting this package effectively means adopting Filament itself.
- How does multi-tenancy work, and when should I configure it?
- Multi-tenancy is first-class but must be configured before you publish and run the migrations, because the migrations conditionally add tenant columns. Enabling tenancy afterwards requires manual schema surgery, so treat it as a bootstrap-time decision and an explicit checklist gate. The README warns about this ordering directly above the migration instructions.
- Why are the form styles missing on my front end?
- Filament's CSS classes are purged by Tailwind unless the package views are included in your content scan. Add ./vendor/tapp/**/*.blade.php to the content array in your tailwind.config.js and rebuild your assets. This is a common day-one issue and is not automatic.
- How do I restrict access to private entries and exports?
- You must define a policy method with the exact signature viewEntries(User $user, FilamentForm $form) in your application. If that method is missing, the package does not restrict entry viewing or export, which is a fail-open behavior. Because authorization fails silently rather than throwing, back this with an automated test instead of relying on code review.
- Can I export form submissions to CSV?
- Yes. Responses can be exported to .csv, which is handled through the maatwebsite/excel dependency. That dependency pulls in PhpSpreadsheet, so make sure the zip, gd, and mbstring PHP extensions are available in your environment. Exports are also subject to the same private-entry policy checks as viewing.
- Can I embed the forms in an existing site or change the form URLs?
- Form delivery happens through Filament pages, so embedding is limited to the configurable route URIs (by default /forms/{form} and /entries/{entry}) and the blockRedirect Livewire prop. The three plugin classes let you separate admin, guest, and authenticated frontend surfaces. Teams wanting forms inside a marketing site or SPA should validate these seams before committing.
- What happens if I edit a form after submissions already exist?
- Editing a form after entries exist causes schema drift, which is why each form has a locked flag. Locking is opt-in per form and defaults to false, so data integrity depends on operator discipline. Enable locking on any form that is already collecting production submissions.
- Is this package mature enough for production use?
- Treat it as adopt with a fork plan rather than adopt and forget. It has a small audience, a single-org provenance, and no independent evidence of large-scale production usage, so budget for pinning versions and maintaining a fork. Compatibility risk is also real: each Filament major will likely require a package major and a migration on your side.