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 IDAreaCapabilityStatusOwnerKnown gaps
assets.static-change-trackingDeploymentTracked static assets and static_changed behaviormissing#42Track asset digests; Expose static change detection; Verify reconnect behavior across deployments
async.operationsAsyncAsync assigns, tasks, streams, and cancellationmissing#165Design idiomatic typed async results; Implement cancellation and replacement; Verify disconnect cleanup and failure behavior
client.hooksClientClient hooks and DOM patch interoperabilitypartial#187Inventory hook lifecycle callbacks; Verify pushEvent and handleEvent behavior; Test DOM patch options and cleanup
client.js-commandsClientPhoenix LiveView JS command paritypartial#166Inventory all upstream commands and options; Implement missing commands; Verify composed commands in real browsers
collections.streamsCollectionsStreams and stream DOM semanticsmissing#164Implement stream lifecycle and limits; Implement insert, delete, reset, and refetch semantics; Verify DOM behavior in real browsers
components.stateful-and-statelessComponentsStateful and stateless component compositionpartial#187Inventory component lifecycle semantics; Verify targeting and diff behavior; Add typed composition examples
developer-experience.typed-apiDeveloper ExperienceIdiomatic, strongly typed TypeScript and JavaScript APIspartial#187Eliminate public any-based completeness claims; Add type-level contract tests; Document idiomatic deviations from Phoenix APIs
forms.validation-and-recoveryFormsForms, validation, recovery, debounce, and throttlepartial#187Inventory nested input and recovery semantics; Verify CSRF and validation errors; Add browser tests for debounce and throttle
lifecycle.callbacksLifecycleMount, params, events, messages, connected state, and terminationpartial#187Complete callback inventory; Document connected and disconnected behavior; Add lifecycle browser evidence
messaging.pubsubMessagingServer messages, PubSub, and distribution boundariespartial#187Define single-process and distributed guarantees; Verify subscription cleanup; Document adapter boundaries
navigation.patch-and-redirectNavigationPatch, redirect, flash, title, history, and reconnect behaviorpartial#187Catalogue patch and redirect semantics; Verify flash and page-title updates; Test browser history and reconnect behavior
protocol.client-interoperabilityProtocolProtocol and browser-client interoperabilitypartial#182Upgrade LiveViewJS examples and scaffolds to the pinned client; Expand differential fixtures through reconnect and error behavior
rendering.diff-and-staticsRenderingDiff rendering, comprehensions, and template staticspartial#177Sign data-phx-static tokens; Verify statics deduplication; Add current-client DOM conformance tests
routing.typed-params-and-layoutsRoutingTyped route params, layouts, and cross-runtime discoverypartial#163Type route parameters; Implement documented layout composition; Verify Node, Bun, and Deno behavior
runtime.adaptersRuntimeProduction adapters for Node, Bun, and Denopartial#160Remove Node-only assumptions from shared code; Define adapter contracts; Run identical protocol and browser suites under each runtime
testing.browser-and-runtimeTestingBlack-box browser and cross-runtime verificationmissing#184Build the hermetic Playwright reference application; Exercise all server runtimes; Collect deterministic failure artifacts
uploads.lifecycleUploadsUpload selection, progress, cancellation, and consumptionpartial#185Harden 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.