anomaly/url_link_type-extension
A PyroCMS/Laravel addon that adds a URL link field type to the Streams platform, letting editors add and validate external links as a reusable field type in your modules and addons. Lightweight and simple to register.
Architecture fit
This is not a general-purpose Laravel package; it is an addon for the Streams Platform (anomaly/streams-platform) and specifically extends the Navigation module (anomaly/navigation-module) by registering an additional LinkType. Its entire surface area is one class implementing the Navigation link-type contract plus a form builder for capturing the URL, target, and label. That means architectural fit is binary: it is a clean, idiomatic fit if the host application is PyroCMS 3.x / Streams, and a non-starter otherwise. There is no standalone value to a conventional Laravel app — nothing here is reusable outside the addon contract.
Integration feasibility
Mechanically trivial if the ecosystem matches. Streams addons follow Laravel package conventions with auto-discovered service providers; the expected path is composer require anomaly/url_link_type-extension, confirm the provider registers, then verify the "URL" option appears in the Navigation module's link-type selector and persists to the links table. Realistically a half-day spike including staging verification. The friction is not the code — it is dependency resolution against a legacy Laravel/PHP constraint set.
Technical risk High, driven almost entirely by project health rather than code complexity:
anomaly/streams-platform long before this package is the blocker.javascript:-scheme risk. This must be verified in code, not assumed.Key questions
composer.json constrain, and does that match our lockfile today?target, rel="noopener", and per-link attributes, or is it a bare href only?Stack fit
Only viable inside a Streams Platform application: PHP 7.4–8.x, Laravel 5.4–8.x, Composer 2, and an existing anomaly/navigation-module install. Confirm the Navigation module is present and rendering before adding link types — this addon is a leaf dependency and adds no value without its parent module.
Migration path There is no migration path into this package from a non-PyroCMS stack, and no meaningful migration out of it either, because the artifact is one link type. The realistic decision is build-vs-buy: implementing an equivalent link type inside your own addon namespace is a few hours of work and eliminates the third-party dependency entirely. For a single-feature addon with zero upstream activity, in-house ownership is the lower-risk path and the one I would default to.
Compatibility
Pin the dependency explicitly and test resolution against a copy of the production composer.lock before committing. Expect the constraint graph (anomaly/streams-platform, anomaly/navigation-module, laravel/framework) to be the actual decision point. If resolution requires downgrading core packages, stop — the addon is not worth a core version regression.
Sequencing
Maintenance Effectively self-maintenance from day one. Budget for occasional composer drift and PHP-version bumps handled internally. The code volume is small enough that a fork is cheap to keep alive; the cost is ownership, not effort.
Support No vendor support, no issue traffic, no maintainer responsiveness to assume. Internal engineers are the support tier. Acceptable only because the blast radius is one navigation link type.
Scaling Runtime cost is negligible — link-type resolution runs per navigation render and should sit behind the Navigation module's existing caching. Watch for cache-key staleness when link records change; that is a Navigation module behavior, not this addon's, but it will surface here first as "the URL didn't update."
Failure modes
Ramp-up Low for any Laravel developer — the addon is a single small class. The real learning curve is Streams Platform conventions (addon registration, form builders, presenters, view namespaces), which is ecosystem knowledge, not package knowledge, and is required for the Navigation module anyway. Estimate one developer-day for a Laravel-fluent engineer with no prior Streams exposure to reach productive confidence.
Recommendation
Do not adopt as a standing dependency. The package solves a small problem correctly, but zero adoption, no maintenance signal, and a legacy version ceiling make it a liability rather than leverage. If the hosting application is already PyroCMS and the feature is needed, reimplement the link type in-house (a few hours) or vendor a reviewed copy — either is cheaper over the product lifecycle than depending on anomaly/url_link_type-extension.
How can I help you explore Laravel packages today?