Basics
This check is disabled by default.
Learn how to enable it via .credo.exs.
This check has a base priority of high and works with any version of Elixir.
Explanation
Flags events a JavaScript hook pushes that the receiving LiveView or LiveComponent does not handle. LiveView crashes the process when such an event arrives.
Before:
// assets/js/app.js
Hooks.Chart = {mounted() { this.pushEvent("zoom", {}) }}
<div id="chart" phx-hook="Chart"> <!-- in StatsLive, no "zoom" clause -->After:
def handle_event("zoom", params, socket), do: ...this.pushEvent goes to the LiveView that renders the hook's element,
also from inside a LiveComponent. this.pushEventTo(this.el, ...)
goes to the LiveComponent or LiveView whose own render contains the
element. The finding anchors at the phx-hook attribute, because
Credo reports only in Elixir files.
Pushes with dynamic event names or targets, selector targets, and hooks soundcheck cannot resolve to an object literal are skipped or unverifiable.
Confidence: medium. Tier: semantic (run mix compile before mix credo).
Check-Specific Parameters
Use the following parameters to configure this check:
:excluded_paths
Paths to skip (atoms, binaries as path segments, or regexes).
This parameter defaults to [~r/\/test\//, "test"].
:strict
Report unverifiable findings too.
This parameter defaults to false.
General Parameters
Like with all checks, general params can be applied.
Parameters can be configured via the .credo.exs config file.