Skip to content

Add LiveView HEEx lowering#16

Merged
dannote merged 8 commits into
masterfrom
add-liveview-heex-support
May 22, 2026
Merged

Add LiveView HEEx lowering#16
dannote merged 8 commits into
masterfrom
add-liveview-heex-support

Conversation

@dannote
Copy link
Copy Markdown
Collaborator

@dannote dannote commented May 21, 2026

Summary

  • add a LiveView plugin with HEEx source support and ~H AST lowering
  • introduce source-origin metadata for template labels and spans
  • route plugin source extensions through project/file parsing and hide LiveView rendering helper edges
  • add LiveView semantic edges for assigns, streams, JS.push/push_event handlers, and parser-lowered component attrs

Notes

  • For LiveView 1.2 parser-backed templates, Reach lowers HEEx through a Reach-owned HEEx IR so :if, :for, static phx-* event attrs, and component calls get cleaner source labels and control/data-flow.
  • For current LiveView 1.1.x projects, Reach falls back through TagEngine; assign flow, stream flow, and JS.push/push_event event wiring are active, while component attr flow avoids generated runtime helper calls to prevent noisy edges.
  • Manually reviewed semantic edge output from the external smoke run and tightened component attr edges after finding generated slot/runtime noise.

Validation

  • MIX_ENV=test mix compile --warnings-as-errors
  • MIX_ENV=test mix test test/reach/frontend/elixir_test.exs test/reach/project/project_test.exs test/reach/reach_test.exs test/reach/plugin/lower_elixir_ast_test.exs test/reach/plugins/live_view_test.exs test/reach/plugins/live_view/heex_lowerer_test.exs test/reach/plugins/live_view/semantics_test.exs test/reach/visualize/control_flow/block_quality_test.exs
  • external smoke against 10 LiveView projects: phoenix_live_view, phoenix_live_dashboard, livebook, plausible/analytics, ash_hq, firezone, blockscout, keila, live_beats, surface

@dannote dannote merged commit 432c2a6 into master May 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant