Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Live Reload Bundle Laravel Package

kunstmaan/live-reload-bundle

Symfony bundle that adds automatic live reload to development: it watches templates, assets and config, then refreshes the browser when files change, so updates appear instantly without manual reloads. Handy for Kunstmaan CMS projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is not a Laravel package at all — it is a Symfony 2.x bundle (Kunstmaan\LiveReloadBundle) built around Symfony's bundle registration, DI container, and kernel event system. Laravel has no equivalent bundle abstraction, so the artifact cannot be dropped into a Laravel application as-is. Functionally, the value proposition is extremely narrow: emit a <script src="//localhost:35729/livereload.js"> tag into rendered HTML, typically gated to the dev environment. That is roughly a five-line Blade directive or middleware, meaning the architectural "fit" is effectively zero — we would be importing a framework adapter for a behavior we can express natively.

Integration feasibility. Low. A working integration would require either (a) a fork that strips the Symfony bundle plumbing and re-implements it as a Laravel service provider plus a response-mutating middleware, or (b) Composer-installing a Symfony bundle into a Laravel app, which is not viable without pulling in symfony/http-kernel and related contracts. Neither path is justified by the payoff.

Technical risk. High relative to value:

  • Abandonment: last release 2014-08-13, ~11 years stale; 22 stars and 0 dependents confirm no community backstop.
  • PHP compatibility: written for the PHP 5.4–5.6 / Symfony 2.x era; unverified against PHP 8.2/8.3 and will likely fatal on removed APIs, deprecated dynamic properties, or tightened type handling.
  • Security posture: no maintained release means no CVE response path. The injected script points at a local livereload.js server; if environment gating is misconfigured or copy-pasted, the tag can leak into staging/production and create a broken or mixed-content script reference for real users.
  • Toolchain decay: it assumes grunt-contrib-watch, which itself is legacy. Modern workflows have standardized on Vite HMR, webpack-dev-server, or Browsersync.
  • Health score of 0.17 is consistent with the above: low adoption, no releases, no dependency graph.

Key questions for the maintainer/requestor.

  1. What concrete problem is this solving that Vite HMR (Laravel's default since Laravel 10) or Browsersync does not already solve?
  2. Is the requirement genuinely "livereload in the browser," or "hot reload for Blade/CSS"? The former is a one-line script tag; the latter is a bundler concern.
  3. Would the team accept a small in-house middleware plus a config flag instead of a third-party dependency?
  4. If a fork is proposed, who owns it, and what is the patch cadence against PHP/Symfony/Laravel upgrades?
  5. Does the team's local dev environment already run a Node watcher (Vite/Mix)? If so, this package is redundant.

Verdict. Do not adopt. The capability is trivial to reimplement, the package is framework-mismatched, and it is over a decade unmaintained.

Integration Approach

Stack fit. Poor. The target stack is Laravel (PHP 8.x, Composer, Blade, service providers, HTTP middleware). The package targets Symfony 2.x (PHP 5.x, bundle registration via AppKernel, kernel request/response listeners). There is no shared abstraction to bridge; the only portable element is the concept, not the code.

Recommended migration path.

  1. Do not install the package. Skip the Composer dependency entirely.
  2. Adopt the platform-native equivalent. Laravel ships with Vite via laravel/vite-plugin; npm run dev gives HMR and full-page reload for Blade changes out of the box. For projects still on Laravel Mix, mix.browserSync() or mix.options({ hmr: true }) covers it.
  3. If a script-tag injection is genuinely required (e.g., a non-Vite legacy front end), implement it as a ~15-line InjectLiveReload middleware registered only when app()->environment('local'), appending the tag to HTML responses before the closing </body>. Gate on config, never on a hard-coded host.

Compatibility. If someone insists on a port, the minimum bar is PHP 8.1+, Laravel 10/11, PSR-4 autoloading, and a composer.json declaring php and illuminate/support constraints. That is a rewrite, not an integration, and the resulting artifact would be smaller than its own README.

Sequencing (if a port were approved).

  • Phase 1: Confirm the requirement and rule out Vite/Browsersync overlap (1 day).
  • Phase 2: Prototype the middleware + config flag in a branch (1–2 days).
  • Phase 3: Add tests asserting the tag is absent in production/testing and present in local (0.5 day).
  • Phase 4: Document, review, merge. Total ≈ 3–4 days versus an open-ended maintenance liability for a fork.

Recommendation. Re-implement, don't integrate. The dependency adds surface area without adding capability.

Operational Impact

Maintenance. The package has no active maintainer, no release cadence since 2014, and zero dependents — there is no upstream to patch, no issue triage, and no upgrade path. Any fork becomes a permanent internal ownership item for a feature that should be temporary dev tooling. Reimplementing in-house reduces the maintenance surface to a middleware that either works or is deleted.

Support. No vendor, no SLA, no documented compatibility matrix. Internal support cost falls entirely on the adopting team. If a new hire asks "why is this here?", the answer is a 2014 Grunt artifact — a non-trivial onboarding tax for near-zero benefit.

Scaling. Not applicable in the production sense: livereload is a developer-machine concern, and the package should never execute in production. The real scaling question is developer onboarding — every environment needs Node, a watcher, and port 35729 open locally. Vite collapses that into the existing asset pipeline the team already runs.

Failure modes.

  • Environment leakage: tag rendered in staging/production → browsers attempt localhost:35729, producing a failed request or mixed-content block; worst case a hung page load.
  • Port collisions: 35729 conflicts with other local tooling; failure is silent from the PHP side and confusing in the browser.
  • Framework/PHP drift: a PHP 8 upgrade breaks the bundle at boot, taking down the dev environment rather than failing gracefully.
  • Dead toolchain: grunt-contrib-watch no longer matches how the team builds assets; the injection fires but no server is listening, producing a permanent console error and eroding trust in dev-environment fidelity.
  • Abandonware supply chain: an unmaintained Composer package is an unreviewed code path in the dependency graph with no security response channel.

Ramp-up. Low technical effort (the concept is one script tag) but misleadingly high cognitive overhead: engineers must learn a dead Symfony/Grunt idiom to understand why a Laravel app contains a Symfony bundle. Net ramp-up cost is negative value — time spent learning tooling that should not exist in the repo.

Bottom line for operations. Adopting this package trades a one-line dev convenience for an unmaintained, framework-mismatched dependency. Use Vite HMR; if a script tag is truly needed, own the ~15 lines internally and delete them when the legacy front end retires.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route