LiveViewJS capability parity
August 26, 2026 ยท View on GitHub
Target Phoenix LiveView: 1.2.10
Compatibility status: target
Last reviewed: 2026-08-26
Status meanings:
- supported: all required evidence categories are present.
- partial: a working subset exists and the remaining gaps are explicit.
- missing: the capability is not implemented and has an owning issue.
- not-applicable: LiveViewJS intentionally differs and documents why.
| Capability ID | Area | Capability | Status | Owner | Known gaps |
|---|---|---|---|---|---|
assets.static-change-tracking | Deployment | Tracked static assets and static_changed behavior | missing | #42 | Track asset digests; Expose static change detection; Verify reconnect behavior across deployments |
async.operations | Async | Async assigns, tasks, streams, and cancellation | missing | #165 | Design idiomatic typed async results; Implement cancellation and replacement; Verify disconnect cleanup and failure behavior |
client.hooks | Client | Client hooks and DOM patch interoperability | partial | #187 | Inventory hook lifecycle callbacks; Verify pushEvent and handleEvent behavior; Test DOM patch options and cleanup |
client.js-commands | Client | Phoenix LiveView JS command parity | partial | #166 | Inventory all upstream commands and options; Implement missing commands; Verify composed commands in real browsers |
collections.streams | Collections | Streams and stream DOM semantics | missing | #164 | Implement stream lifecycle and limits; Implement insert, delete, reset, and refetch semantics; Verify DOM behavior in real browsers |
components.stateful-and-stateless | Components | Stateful and stateless component composition | partial | #187 | Inventory component lifecycle semantics; Verify targeting and diff behavior; Add typed composition examples |
developer-experience.typed-api | Developer Experience | Idiomatic, strongly typed TypeScript and JavaScript APIs | partial | #187 | Eliminate public any-based completeness claims; Add type-level contract tests; Document idiomatic deviations from Phoenix APIs |
forms.validation-and-recovery | Forms | Forms, validation, recovery, debounce, and throttle | partial | #187 | Inventory nested input and recovery semantics; Verify CSRF and validation errors; Add browser tests for debounce and throttle |
lifecycle.callbacks | Lifecycle | Mount, params, events, messages, connected state, and termination | partial | #187 | Complete callback inventory; Document connected and disconnected behavior; Add lifecycle browser evidence |
messaging.pubsub | Messaging | Server messages, PubSub, and distribution boundaries | partial | #187 | Define single-process and distributed guarantees; Verify subscription cleanup; Document adapter boundaries |
navigation.patch-and-redirect | Navigation | Patch, redirect, flash, title, history, and reconnect behavior | partial | #187 | Catalogue patch and redirect semantics; Verify flash and page-title updates; Test browser history and reconnect behavior |
protocol.client-interoperability | Protocol | Protocol and browser-client interoperability | partial | #182 | Upgrade LiveViewJS examples and scaffolds to the pinned client; Expand differential fixtures through reconnect and error behavior |
rendering.diff-and-statics | Rendering | Diff rendering, comprehensions, and template statics | partial | #177 | Sign data-phx-static tokens; Verify statics deduplication; Add current-client DOM conformance tests |
routing.typed-params-and-layouts | Routing | Typed route params, layouts, and cross-runtime discovery | partial | #163 | Type route parameters; Implement documented layout composition; Verify Node, Bun, and Deno behavior |
runtime.adapters | Runtime | Production adapters for Node, Bun, and Deno | partial | #160 | Remove Node-only assumptions from shared code; Define adapter contracts; Run identical protocol and browser suites under each runtime |
testing.browser-and-runtime | Testing | Black-box browser and cross-runtime verification | missing | #184 | Build the hermetic Playwright reference application; Exercise all server runtimes; Collect deterministic failure artifacts |
uploads.lifecycle | Uploads | Upload selection, progress, cancellation, and consumption | partial | #185 | Harden persistence and limits; Verify cancellation and disconnect cleanup; Add browser tests for internal and external uploads |
The machine-readable source is
compatibility/capabilities.json.
Run npm run roadmap:write after changing it and
npm run verify:roadmap before submitting a pull request.