zenstruck/asset-manifest-bundle
Symfony bundle that reads a JSON asset manifest (like Webpack Encore's manifest.json) to resolve versioned, hashed asset paths at runtime, so templates reference correct filenames without hardcoding them.
app.css to app.4f3a9c.css at render time?" That is a real product decision (users seeing stale CSS after a release is a visible, support-ticket-generating defect), but it is a solved one.JsonManifestVersionStrategy, Webpack Encore, AssetMapper, or Vite in Laravel) or "write ~40 lines of manifest-reading code ourselves."max-age caching on a CDN safe. If that's on the roadmap, the capability matters even though this specific implementation doesn't.Adopt only if all of the following hold:
Look elsewhere in essentially every other case:
symfony/asset with JsonManifestVersionStrategy), Webpack Encore, pentatrion/vite-bundle, or AssetMapper (6.4+).laravel-vite-plugin + the @vite directive, or laravel-mix's mix-manifest.json on older stacks.Bottom line: do not adopt. zenstruck/asset-manifest-bundle solves a genuine problem — mapping logical asset names to content-hashed build outputs so browsers and CDNs never serve stale files — but the package is archived, last released in December 2016, has 8 GitHub stars and zero known dependents. That profile is a supply-chain liability, not a shortcut.
For executives: this is a "no" with a clear upside. The capability we care about (safe long-lived CDN caching plus reliable cache-busting on release) is available natively in our framework and in actively maintained tooling. Taking on an abandoned dependency would add a future forced-migration project with no offsetting benefit.
For engineering: the concept is worth stealing, the code isn't. If we're on modern Symfony, JsonManifestVersionStrategy or AssetMapper already does this with framework support; on Laravel, Vite handles it. If we find this bundle in a legacy codebase, treat it as migration debt — pin the version, vendor a fork if needed, and schedule replacement alongside the next asset-pipeline change. Recommend we record the decision as "capability adopted via maintained alternative; package rejected on maintenance-risk grounds."
How can I help you explore Laravel packages today?