- What does marshmallow/boolean-group actually do?
- It is a Laravel Nova field that extends Nova's built-in Boolean Group field so that labels can contain HTML. Instead of plain-text labels, you can render formatted markup inside the admin panel form. It is a presentation-layer extension for Nova, not application runtime code, so it has no bearing on how your app evaluates booleans outside the Nova form.
- Do I need a Laravel Nova license to use this package?
- Yes. The package extends Nova's Boolean Group field and depends on Nova's asset registration and front-end build conventions. Without a Nova license and Nova running in production, this package is a non-starter regardless of quality. It is not a general-purpose boolean grouping library for plain Laravel apps.
- Which Nova versions does this package support — Nova 4 or Nova 5?
- The README does not publish a compatibility matrix, so check the composer constraint and the field's Vue component internals before committing. Nova 4 is Vue 2 and Nova 5 is Vue 3, and field components are tightly bound to one major's internals and asset build conventions. If you are on Nova 5 and the package targets Nova 4, your realistic options are forking and porting or building the field in-house.
- How do I install marshmallow/boolean-group in a Laravel Nova app?
- Install with composer require marshmallow/boolean-group, then use the field class in your Nova resource's fields() method in place of the native BooleanGroup field. Confirm whether a compiled dist asset is committed or whether the host app must run npm run nova:install, since committed assets that do not match your Nova build are a common breakage. Exercise it on a spike branch rather than adding a floating constraint to composer.json.
- Is rendering HTML in field labels safe?
- HTML labels are the entire point of the package, but rendering raw markup inside an authenticated admin surface raises XSS concerns if any label content is user-supplied. Keep labels developer-defined and static, and never interpolate untrusted input into them. Vetting the vendor code is part of adopting a package with no community validation.
- Does the field store flags in separate columns or a single JSON column?
- That is not evident from the README and must be verified from source, because it determines casting, validation, indexing, and whether values are queryable in Nova filters and metrics. If the field writes to a JSON blob, querying individual flags in Nova filters may be limited or impossible. Confirm the assumed cast and the resolve/fill behavior before you commit to the package.
- Is marshmallow/boolean-group actively maintained and safe to depend on?
- It lives in a personal namespace with zero stars, zero dependents, and a last release in December 2024, so there is no community validation or downstream signal that it works outside the author's app. Treat it as an internal extraction rather than a supported library. The recommended posture is vendor, don't depend: spike it, then copy the PHP field class and Vue component into your own codebase.
- Does the field support validation, nullable, sortable, and filterable behavior?
- Check whether resolveUsing and fillUsing are overridable and whether the field respects Nova's rules() and nullable semantics, since the PHP side is small but the silent failure modes live there. Also verify sortable() and filterable() support, because if the underlying values sit in a JSON column they may not be queryable in Nova. These details are not documented, so a source audit is required.
- What are the alternatives if I don't want to adopt this package?
- If Nova is in your stack, building the field in-house is roughly one to two engineer-days of work: one PHP field class, one Vue component, and tests. That often beats adopting an unvetted, single-maintainer package with no dependents. If you do not run Nova, the package does not apply at all, so use a plain array cast or a dedicated feature-flag library instead.
- How should I test this package before using it in production?
- There is no evident test coverage, and a Nova field is mostly Vue plus a resolve/fill pair, so exercise the hydrate and fill round trip yourself against a real resource with a representative flag set. Install it into a spike branch, confirm PHP 8.1+ and your Nova major version match, and check whether assets build cleanly. Only then decide between vendoring the code and building your own grouped boolean field.