funddy/jsrouting-bundle
Funddy JSRoutingBundle exposes Symfony routes to JavaScript, letting front-end code generate URLs from route names and parameters without hardcoding paths. It integrates with Symfony routing and provides a lightweight JS helper for client-side links, AJAX calls, and navigation.
Architecture fit — poor, and the framing needs correcting up front. funddy/jsrouting-bundle is a Symfony2 bundle, not a Laravel package. It has no service provider, no facade, no config/*.php publishable config, and no Composer extra.laravel block. It integrates through Symfony's Bundle class, DI container compiler passes, and the kernel.request/route-dump lifecycle. Dropping it into a Laravel application is not a configuration exercise; it is a rewrite. The functional intent — exposing server-side named routes to client-side JavaScript so templates stop hardcoding URLs — is legitimate and has a direct Laravel-native equivalent (Ziggy). A TPM should treat this ticket as "we need route generation in JS," not "we need this package."
Integration feasibility — only inside a legacy Symfony 2.x footprint. Even there, feasibility is marginal. The package is a low-signal artifact: 5 stars, 0 dependents, and it duplicates a far more established capability (FOSJsRoutingBundle). Zero dependents on Packagist means essentially no production evidence and no downstream consumers exercising it. Anyone proposing it is likely re-implementing or forking FOSJsRoutingBundle behavior without the maintenance base.
Technical risk — high, on multiple independent axes.
symfony/framework-bundle: ~2.x, PHP 5.5–7.0 constraints, and Assetic-era asset assumptions. These constraints will block PHP 8 upgrades and can hold an entire composer.lock hostage.Key questions for the requester:
Stack fit — no. There is no supported path from a Symfony2 bundle into a Laravel application. Laravel's service container, HTTP kernel, routing facade, and asset pipeline are structurally different. Any "integration" would be a port of the bundle's logic into Laravel idioms, at which point the package contributes nothing but inspiration and the port carries all the maintenance burden. Recommend rejecting the package and restating the requirement.
Recommended target by stack:
| Stack | Recommended approach | Rationale |
|---|---|---|
| Laravel (stated) | Ziggy | Purpose-built, active, Blade @routes directive, per-route filtering |
| Symfony (if legacy) | FOSJsRoutingBundle on a maintained Symfony LTS | Established successor with the same API shape |
| Symfony 2.x (frozen, no upgrade budget) | Vendor and fork this bundle, or dump routes at build time via a static artifact | Only justified if the app is genuinely immovable |
Migration path (Laravel assumption). Install Ziggy, replace hardcoded URL strings in JS with route() calls, and remove the JsRouting concept from the design entirely. Effort is measured in hours to low days for a typical app; the real cost is auditing existing hardcoded URLs. If the team already prototyped against this bundle's API surface, the migration is a rename with a thin adapter — the client-side call signature (Routing.generate('name', params)) is portable to Ziggy's route().
Compatibility constraints to verify before any decision. Inspect composer.json for the symfony/* version pins and PHP floor. A ~2.x framework constraint is a hard blocker on any Symfony 3+ or PHP 8 modernization effort and is the single most likely way this package causes collateral damage beyond its own footprint. Check whether it requires Assetic; if so, the asset pipeline coupling is a second blocker.
Sequencing:
Maintenance. Assume zero upstream support from day one. The package must be vendored into the repo or pinned with a commit hash; relying on Packagist resolution against a 0-dependent, low-activity package risks a yanked tag breaking builds. Budget a standing maintenance line — realistically a fraction of an engineer — for security review of the dump endpoint and for unblocking Composer upgrades. Compare against Ziggy or FOSJsRoutingBundle, where that cost is amortized across a community.
Support. No vendor, no SLA, no CVE process, no release notes. Incident response falls entirely to internal engineers reading source. For a package that touches the route table — an authentication-adjacent surface — this is the weakest part of the proposal. Escalation path is "the one engineer who read the code," which is a bus-factor-1 risk.
Scaling. Negligible runtime impact. The route dump is a serialization of a bounded set of route definitions, cacheable at the CDN or edge, and typically generated at deploy time rather than per-request. Route tables in the thousands are still small payloads. Scale is not the objection here; lifecycle is.
Failure modes to plan for:
generate() silently. Mitigate with a smoke test that asserts every client-referenced route name exists in the dump.symfony/* pins block PHP or Symfony upgrades. Detect in CI with a composer why-not gate.Ramp-up. Low technical complexity — the concept is a route serializer, and an engineer familiar with either framework can read the source in an afternoon. The risk is inverted: onboarding is cheap, but there is no documentation, no examples, and no community to ask. Knowledge concentrates in whoever did the initial read, which is exactly the profile you want to avoid for an auth-adjacent component.
TPM recommendation. Do not adopt. The package is functionally superseded, targets an end-of-life framework, has no dependent base, and conflicts with the stated Laravel stack. Close the ticket as "won't do — use Ziggy," and open a separate line item only if a genuine Symfony 2.x estate is confirmed, in which case the conversation is about framework remediation, not bundle selection.
How can I help you explore Laravel packages today?