fidr/phoenix_live_react
55.2
Adequate · 18 September 2026
138
lines of production code
Elixir
with JavaScript
1
measurement over time
What this system is
This system is an Elixir library that integrates React components into Phoenix LiveView applications. It enables bidirectional communication between React and LiveView, allowing React components to respond to LiveView events and merge props with server state. The library provides utilities for rendering React components within LiveView templates and managing their lifecycle and configuration.
Behavioural changes
Enhanced LiveReact component rendering with props merging, ID management, and configurable binding prefixes
The \PhoenixLiveReact.live\_react\_component/3\ function now accepts props as either a map or a keyword list, automatically converting the latter to a map. It supports an \:id\ option to assign specific identifiers to the receiver and container elements (with the container ID suffixed by \-container\ to ensure uniqueness), and introduces a \:merge\_props\ option to control whether props are merged. Additionally, users can override the default LiveView binding prefix (e.g., \phx-\) via the \:binding\_prefix\ option, affecting both the hook and update attributes. The library also now uses \PhoenixHTMLHelpers\ instead of direct \Phoenix.HTML\ imports.
lib · high confidence
Updated webpack externals for React DOM client resolution
The webpack configuration now explicitly maps the 'react-dom/client' module to the external 'react-dom/client' library. This change ensures that the build process correctly resolves the React DOM client entry point, preventing resolution issues when the application relies on the modern React DOM client API.
assets · high confidence
Upgrade to React 18 and add live component support
The JavaScript integration now uses React 18's \createRoot\ API instead of the deprecated \ReactDOM.render\, improving rendering performance and compatibility with modern React features. It also introduces support for Phoenix LiveView's \pushEventTo\ and \handleEvent\ callbacks, allowing React components to interact more deeply with LiveView events. Additionally, a new \liveReactMerge\ option enables prop merging across updates, and the library now supports initializing components on page load via \initLiveReact\. The use of \eval\ for loading component classes has been replaced with a safer dot-notation lookup, enhancing security under strict Content Security Policies.
assets/js · high confidence
Upgrade to React 18 and support for live component events
The bundled JavaScript client has been updated to use React 18, switching the rendering entry point from \react-dom\ to \react-dom/client\ (specifically \createRoot\). This change enables the use of React 18's concurrent features and improves rendering performance. Additionally, the client now supports \pushEventTo\ and \handleEvent\ callbacks, allowing Live React components to interact more deeply with Phoenix LiveView's event system. The update also introduces a \liveReactMerge\ option, which allows component props to be merged with LiveView state rather than replaced entirely, and adds support for rendering components on page load via \initLiveReact\.
priv · high confidence
Dependencies
Upgrade to Phoenix HTML 4 and React 18 support
This release updates the library's dependencies to require Phoenix HTML 4.0 (adding the new phoenix\_html\_helpers dependency) and React 18 as peer dependencies. On the JavaScript side, the build toolchain has been upgraded from Webpack 4 to Webpack 5, with corresponding updates to Babel and related loaders. The package version has been bumped to 0.6.0 in the Elixir project and 0.4.2 in the root package.json.
(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
Baseline
- First survey — no prior run to compare against. CAI 55.
Lenses
- Code Health 100
- Architecture 69
- Maturity 54
- Readiness 42
- Security 88
Changes since last survey
- 46 commits — 45 feature/other, 1 fixes
By area
- (root) — 25 commits
- assets/package-lock.json — 10 commits
- (repo) — 4 commits
- assets/js — 3 commits
- lib/phoenix_live_react.ex — 3 commits
- assets/webpack.config.js — 1 commit
Notable commits
- fix: fix: fixing react-dom/client resolution issue
- change: Add description to main module
- change: Add handleEvent, update docs
- change: Add option to also render the components on page load
- change: Add option to override the default LiveView binding prefix
- change: Add package.json installation instructions and relax version in Readme
- change: Add pushEvent to docs/readme
- change: Add support for live components (pushEventTo)
- change: Allow both phoenix_html 2 and 3
- change: Bump @babel/traverse from 7.16.3 to 7.23.7 in /assets
- change: Bump elliptic from 6.5.2 to 6.5.3 in /assets
- change: Bump json5 from 1.0.1 to 1.0.2 in /assets
- change: Bump loader-utils from 1.4.0 to 1.4.2 in /assets
- change: Bump lodash from 4.17.15 to 4.17.19 in /assets
- change: Bump minimist from 1.2.5 to 1.2.6 in /assets
- change: Bump path-parse from 1.0.6 to 1.0.7 in /assets
- change: Bump terser from 5.10.0 to 5.14.2 in /assets
- change: Bump to 0.4.2
- change: Bump version
- change: Bump version, update readme
- …and 26 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
fidr/phoenix_live_react 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 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit f0ac5b6c1c4f452a9be8038980323ea3e6c3c173 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.