phoenixframework/phoenix_live_reload
67.6
Adequate · 3 October 2026
476
lines of production code
Elixir
with JavaScript
2
measurements over time
What this system is
This system is a development tool for Phoenix applications that provides live reloading capabilities for assets and templates. It monitors file changes to trigger targeted updates, such as injecting new CSS styles without a full page refresh, and supports server log streaming to the browser console. Additionally, it facilitates debugging by allowing developers to open source files directly from the browser interface.
Features
Live reload now supports server log streaming and HEEx editor shortcuts
Developers can now stream server logs directly to the browser's web console by enabling the \web\_console\_logger\ configuration, with logs emitted as \phx:live\_reload:log\ events for custom handling. Additionally, the library introduces client-side functions \openEditorAtCaller\ and \openEditorAtDef\ (accessible via \enableEditorShortcuts\) that allow clicking on HEEx components in the DOM to open the configured \PLUG\_EDITOR\ at the specific source file and line, facilitating faster debugging of component definitions and callers.
(repo-wide) · high confidence
Behavioural changes
CSS hot-reload now updates stylesheets and @imported styles without a full page refresh
The live-reload client now replaces changed CSS \<link\> tags and \<style\> blocks (including those with @import directives) by injecting fresh versions into the DOM and removing the old ones, rather than reloading the entire page. This behavior is the default for CSS changes; a full page reload is still triggered if the 'reloadPageOnCssChanges' configuration option is enabled. The implementation also includes safeguards to prevent duplicate removals and handles load errors by cleaning up pending styles.
priv · high confidence
Live reload now uses Phoenix Channels with configurable web console logging
The live reload mechanism has been refactored to use a dedicated Phoenix Channel (\Phoenix.LiveReloader.Channel\) and Socket (\Phoenix.LiveReloader.Socket\) instead of the previous router-based approach. This change introduces a new \web\_console\_logger\ configuration option that, when enabled, forwards Elixir log messages to the browser's web console via the channel. The system now supports configurable debounce times for file change events, allows broadcasting file change notifications to custom PubSub topics via the \:notify\ option, and enables full page reloads on CSS changes through the \:reload\_page\_on\_css\_changes\ setting. Additionally, the application now starts a \WebConsoleLogger\ GenServer and a file monitor supervisor, and supports opening files in an editor via the \PLUG\_EDITOR\ environment variable.
_lib/phoenix\_live\reload · high confidence
Fixes
Migrate to Elixir 1.9+ config syntax and set JSON library
The application configuration has been updated to use the modern \import Config\ syntax, replacing the deprecated \use Mix.Config\ module to resolve compilation warnings on newer Elixir versions. Additionally, the configuration now explicitly sets \:phoenix\ to use \Jason\ as the JSON library, addressing deprecations in Phoenix 1.4.
config · high confidence
Test coverage
Added comprehensive tests for the live reload channel and plug
Added new test suites for the \Phoenix.LiveReloader.Channel\ and \Phoenix.LiveReloader\ plug, replacing the previous \phoenix\_live\_reload\_test.exs\. The new tests verify that the channel correctly sends notifications for various asset types (JS, CSS, images, templates, views, and LiveViews), respects configuration for web console logging and editor URLs, and filters out files in \\_build\ directories. The plug tests confirm that the live reload iframe is correctly injected into HTML responses, handles multiple body tags, respects script names and custom iframe attributes, and skips injection for non-HTML requests or missing body tags.
test · high confidence
Dependencies
Upgrade to Phoenix 1.4+ and Elixir 1.11 with modernized dependencies
Phoenix Live-Reload now requires Elixir 1.11+ and supports Phoenix 1.4 through 1.5, replacing the old git-based dependency fetches with stable Hex versions. The file monitoring backend has switched from the \:fs\ library to \:file\_system\ (v1.0.0) to improve stability, and the application now uses a standard supervision tree via \Phoenix.LiveReloader.Application\. Documentation tooling has been updated to use ExDoc 0.40.3 with Makeup for syntax highlighting, and the package metadata now lists José Valim as a maintainer.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 67 → 68 (+0.7)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.1)
- Architecture 69 → 69 (+0.0)
- Maturity 59 → 59 (+0.0)
- Readiness 66 → 69 (+2.4)
- Security 93 → 94 (+1.4)
Findings
- No change — the same findings as the prior survey.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
phoenixframework/phoenix_live_reload was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 923bc4445b94d4731e48b46d10e8b90c47149456 — the exact code this score is about.
- Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-24c657e50118.