hautelook/templated-uri-bundle
Symfony bundle that adds support for RFC 6570 URI templates, letting you generate and expand dynamic URIs from route or link templates with named parameters. Useful for hypermedia APIs and consistent link generation.
Architecture fit. The category mismatch stands and is the headline finding: this is a Symfony Bundle, not a Laravel package. A bundle expects a Kernel, a DependencyInjection container, registration in config/bundles.php, and Symfony's RequestContext. Laravel has no bundle concept. The naming discrepancy also persists — the repository is goetas/TemplatedUriBundle while the dependency it wraps is hautelook/templated-uri-router, so the artifact you composer require and the code you audit are still two lineages. Release 3.5.0 does nothing to change this: the entire diff is a single dependency bump (hautelook/templated-uri-router to 4.0, PR #5). There are no new features, no Laravel affordances, no framework-agnostic entry point.
The architecturally relevant point remains that the value, if any, lives in the underlying library — an RFC-6570 URI Template router/generator — and Laravel's routing is built on symfony/routing, so component-level adjacency exists. The bundle wrapper adds nothing to a Laravel stack and should still be ignored entirely.
Integration feasibility. Low as shipped, though 3.5.0 introduces one genuinely new variable. Three viable paths, unchanged in order of preference:
rize/uri-template or league/uri for expansion-only needs; maintained, well-adopted, Laravel-native in usage.hautelook/templated-uri-router v4) and wrap it in a Laravel ServiceProvider. Still inherits that library's maintenance posture, but 4.0 may have modernized its PHP/symfony/routing constraints — worth a composer.json read before ruling it out.Technical risk. Still high, with one item downgraded and one new item added:
symfony/routing to ^4|^5 while Laravel 11/12 require ^7. The router 4.0 bump may have relaxed inner constraints, but the bundle's own composer.json constraint is what gates installation. Unverified either way.Key questions before any commitment (revised priority order):
composer.json constraints on PHP and symfony/routing as of 3.5.0, and can a Laravel 11/12 install resolve them cleanly?hautelook/templated-uri-router 4.0, and does 3.5.0 pin ^4.0 only or ^3|^4?RequestContext behave behind a load balancer / trusted proxy?Stack fit. Unchanged: component-level affinity via symfony/routing, framework-level incompatibility. Any integration is an adapter you write and own, not a package integration.
Migration path. Do not frame this as a migration; it is a spike-then-decide. The 3.5.0 release adds one step at the front and leaves the rest intact:
league/uri and stop.composer.json and resolve PHP plus symfony/routing constraints against the target Laravel version in a throwaway branch. If it does not resolve without --ignore-platform-reqs, the evaluation ends. This is now cheaper to run than before because the bump may have modernized the subtree.hautelook/templated-uri-router 4.0 release notes for breaking changes, dropped PHP versions, and changed namespace or API surface. Do not accept a bundle-level version bump as a proxy for a safe transitive upgrade.ServiceProvider binding the generator/matcher, plus a facade if ergonomics demand it. Keep it behind an interface so it can be swapped for league/uri later.route()/url() for every route where both are used — host, scheme, port, trailing slash.Compatibility. Assume breakage until proven otherwise. Verify PHP 8.2/8.3 support, symfony/routing v6/v7 alignment, symfony/deprecation-contracts noise under modern Laravel, and — critically — behavior under route:cache, where a router that does not participate in the compiled route collection will diverge between local and production.
Sequencing. Timebox the spike to roughly one week of engineering, with Step 2 and 3 consuming less than a day. The 3.5.0 release does not shorten the sequence, but it does make the first gate answerable without cloning anything unusual. Never sequence this as a hard dependency of a shipping feature; it is an optional capability layer.
Maintenance. Still treat this as fork-and-own, not dependency management. The 3.5.0 release is a mild positive — evidence of a live dependency-tracking reflex and a second contributor — but a single version bump after a multi-year gap is not a maintenance program. There is still no release cadence, no documented support window, no security process, and no evidence of a second reviewer with commit rights. Budget for a named owner, a vendored copy, and a documented patch process. Assume no upstream fixes on any timeline you would find acceptable.
Support. No vendor, no commercial backing, negligible community footprint. A dependency-only patch release does not change the 2 a.m. on-call calculus: Stack Overflow and issue history will not rescue you, and the documentation remains thin and Symfony-idiomatic.
Scaling. Unchanged and benign. Template expansion is stateless and CPU-cheap with no external service dependency. The only scaling concern is route-matching cost in the hot path — regex-driven template matching will not benefit from Laravel's compiled route collection. Benchmark against native routing before putting it on every request; for outbound link generation in API responses the impact is negligible.
Failure modes to plan for:
symfony/routing, breaking unrelated framework behavior. Highest probability, most expensive to diagnose. Test this first.route:cache.Ramp-up. Moderate. RFC-6570 is a compact spec, but the package API and docs are Symfony-idiomatic and read as foreign to a Laravel team, and the 4.0 bump means any tutorial or prior art you find may describe the old API. Expect roughly 1–2 engineer-weeks for the spike, adapter, and parity test suite, plus a small ongoing ownership tax and the standing cognitive cost of explaining to future engineers why this non-standard router exists and where its boundaries are.
TPM recommendation. Do not adopt the bundle; do re-open the standalone-library question. Release 3.5.0 is the first meaningful signal of life this package has shown, and if the router 4.0 bump relaxed the symfony/routing and PHP constraints, the blocking Composer conflict may have cleared — that is a one-day check, not a project. The recommendation logic itself is unchanged: the 1-star/0-dependent profile, the Symfony-bundle category mismatch, and the absence of a security process all still point away from this artifact. If URI-template capability is genuinely required, prefer a maintained standalone library (league/uri / rize/uri-template) and build the thin Laravel adapter yourself — same capability, active security posture, clean swap path. Reserve hautelook/templated-uri-router v4 for the narrow case where inbound URI-template matching is a hard requirement and no maintained alternative exists; even then, vendor it with a named owner and a documented exit plan. Re-assess on the next substantive release — a second consecutive release cadence would be a real signal; another lone dependency bump is not.
How can I help you explore Laravel packages today?