edalzell/statamic-features
A lightweight Statamic addon for defining and managing feature flags. Toggle features via configuration, check availability in your templates, and roll out functionality safely across environments. Ideal for gradual releases, beta access, and environment-specific behavior.
This v1.0.0 release positions the package as a bridge between laravel-features feature modules and Statamic’s extension surfaces. From a TPM perspective, the value is packaging discipline: a feature can own its Statamic tags, fieldtypes, modifiers, scopes, actions, widgets, dictionaries, subscribers, update scripts, blueprint/fieldset namespaces, routes, and control-panel assets in one place. That is a meaningful architectural fit for teams already using Laravel, Statamic, and a feature-module pattern.
Integration feasibility depends heavily on stack alignment. If the product already uses laravel-features and Statamic, the release is directly relevant and reduces custom bootstrapping. If not, adopting this package implies adopting both laravel-features conventions and Statamic-specific lifecycle assumptions. The route-loading support for routes/web.php, routes/cp.php, and routes/actions.php is operationally useful but also increases the importance of route ownership, ordering, and conflict testing. CP asset registration and publishing, including Vite builds, is similarly valuable but introduces build-pipeline and publish-path concerns.
Primary technical risks are coupling and maturity. A v1.0.0 release that registers many extension types through another package’s extension API will be sensitive to upstream changes in laravel-features, Statamic, and Laravel. The release notes do not show deprecations or breaking changes, but they also do not establish long-term support, version constraints, or backward-compatibility policy. Key questions include: which Laravel, Statamic, PHP, and laravel-features versions are supported; whether registration order is deterministic; how route and asset publishing conflicts are resolved; whether feature discovery is cached; and what the failure behavior is when a feature’s Statamic classes, routes, or Vite manifest are missing.
Stack fit should be evaluated first. This package is appropriate only where Statamic is a first-class part of the Laravel application and where feature modularity is already a desired pattern. For teams using a monolith with ad hoc Statamic registrations, it may still be useful, but the migration effort is not just package installation: it is a code-organization change. For teams without laravel-features, the package should not be adopted casually because it adds a second abstraction layer over Statamic bootstrapping.
The migration path should start with a single low-risk feature, not a broad refactor. Inventory existing Statamic registrations, route files, blueprint/fieldset namespaces, and CP assets. Map each to the package’s expected feature structure. Confirm whether existing routes/web.php, routes/cp.php, and routes/actions.php can be moved without changing URL semantics or middleware assumptions. For assets, identify whether current CP assets are published manually, through Statamic config, or through Vite, and validate the package’s resources/cp and statamic.* options against that setup.
Compatibility validation should precede sequencing. Pin and test against the exact Laravel, Statamic, PHP, laravel-features, and Vite versions in use. Run route caching, config caching, and production asset builds. Then sequence: proof-of-concept feature, CI coverage for registration and routes, asset publishing validation, documentation of the feature convention, and only then migration of additional features. Avoid combining this migration with unrelated Statamic upgrades.
Maintenance ownership must be explicit. The package reduces boilerplate but creates a central integration point for Statamic registration, routes, and CP assets. A TPM should assign ownership for version upgrades, upstream compatibility checks, and feature-template documentation. Support expectations should be set: v1.0.0 is an initial release, so teams should expect to validate edge cases themselves rather than assume mature operational guarantees.
Scaling impact is moderate. Per-feature registration can improve maintainability, but it can also increase bootstrapping and discovery overhead if many features are loaded. Route caching and asset publishing must be tested at realistic feature counts. CP asset builds, especially Vite, add build-pipeline dependencies and can fail independently of PHP deployment. Failure modes include missing or misordered Statamic registrations, route conflicts, stale published assets, missing Vite manifests, namespace collisions for blueprints/fieldsets, and update scripts running in the wrong order.
Ramp-up requires developers to understand both Statamic extension points and laravel-features conventions. The package is not a substitute for Statamic knowledge. A practical ramp-up plan is to document the feature directory contract, provide one reference feature, add CI checks for route and asset publishing, and require a smoke test of CP routes and asset loading in staging. Operationally, this release is worth evaluating as a standardization layer, but production adoption should be gated on compatibility testing and a clear support model.
How can I help you explore Laravel packages today?