- Does carljanzell/filament-page-builder render pages on the frontend, or only provide the admin editor?
- The package is explicit that it stores page content as ordered typed blocks, but the provided overview does not state that it ships a first-party Blade renderer. Plan on owning a block-to-view rendering layer, and treat that layer, not the plugin, as the real frontend deliverable. Verify the current README and source before committing to the integration.
- How do I install and register the page builder in a Laravel Filament panel?
- Install it with Composer, then register the plugin in your Filament PanelProvider. You also need a nullable JSON column on the model plus a cast so the ordered block payload is read and written correctly. After that the builder is usable from the admin panel.
- Which Filament and PHP versions does filament-page-builder support?
- Version 0.3.1 targets Filament 3, while version 0.4.2 requires Filament 4.12.6 or newer, or Filament 5.x, along with PHP 8.3 or newer. The 4.12.6 floor excludes earlier Filament 4 minors, which matters if another plugin pins your panel to an older release. Pin your Filament major and choose the package branch deliberately.
- What database schema and model cast does the page builder need?
- The package persists page content as ordered, typed blocks in a single JSON column. Add a nullable JSON column to your pages table and cast it to an array or JSON on the Eloquent model. This design is simple for page authoring but does not support querying individual block fields.
- How do I add custom block types to the page builder?
- The package is designed around defining custom block types, but the exact registration API is not covered in the provided excerpt. Review the README and source for how block classes are registered and versioned. Give each block type a stable key and a schema_version so stored JSON can be migrated later.
- Can I migrate existing Laravel pages to the block builder without changing URLs?
- Yes, migration is brownfield-friendly because the storage unit is one nullable JSON column. Add the column, backfill legacy pages as a single rich-text block so existing URLs render unchanged, and run the new builder only for newly authored pages. Freeze the legacy editor at cutover rather than attempting block-level conversion of historical content.
- Is this page builder a good fit for block-level search, localization, or content aggregation?
- It is a poor fit if your roadmap includes block-level search, content aggregation across pages, per-block localization, or relational integrity between blocks and other entities. Those requirements force application code around the JSON blob or a later re-modeling effort. Confirm early that this is a page-authoring tool, not a content platform.
- How should I handle images and media inside page builder blocks?
- The provided material does not specify whether media is handled through Filament file uploads, Spatie Media Library, or raw paths. Check the package source and your chosen block implementations before designing an editorial workflow. Whichever approach you use, store stable references in the block JSON and avoid baking in raw filesystem paths.
- What are the production risks of using this package, including the Filament SPA navigation issue?
- This is a single-maintainer package with 14 stars and zero dependents, so field-proven installs are limited. Version 0.4.2 fixed a Livewire SPA-navigation interaction where a confirm dialog could be bypassed, so audit your panel's spa() setting before rollout. Also verify release metadata against the actual tag history, since the vendor name differs from the repository owner and the stated last-release date is future-dated.
- How do I test that stored block JSON still renders correctly after changes?
- Add contract tests that load stored JSON fixtures and assert each block type renders the expected HTML. Include a schema_version key in the stored payload and test migrations whenever a block's shape changes. Run these tests against your pinned Filament major before upgrading the package or the panel.