PhoenixReplay CLI

A package records Phoenix LiveView sessions and replays them from assigns, with skills for agent setup and debugging.

  • 110 ★ on the repository
  • Last commit
  • MIT
CLI

Extended access

Why this level

  • Recordings contain user input and assigns data; keys such as `password` and `token` are hidden but the rest needs your own sanitizer
  • A replay dashboard in production without your own authentication exposes other people's sessions
All reasons and checks

elixir-vibe/phoenix_replay

Install

Manual install

mix igniter.install phoenix_replay

The first install command in the README. The installer mounts the dashboard at `/dev/replay` in development only.

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • Recordings contain user input and assigns data; keys such as `password` and `token` are hidden but the rest needs your own sanitizer
  • A replay dashboard in production without your own authentication exposes other people's sessions

This is third-party code. Review the repository files before installing.

What it does

PhoenixReplay records LiveView and LiveComponent events, navigation and assigns on the server and replays a session by re-rendering your templates with recorded values. There are no DOM snapshots, so a half-minute session takes a few kilobytes. A browser recorder adds the pointer, touches, scrolling and form input. The package installs with `mix igniter.install phoenix_replay` and opens a dashboard at `/dev/replay`. It ships two skills in `skills/`: `phoenix-replay-setup` wires up recording, and `phoenix-replay-debugging` reads recordings through `PhoenixReplay.Trace` to see what a user did and why a LiveView failed. The `mix phoenix_replay.list` and `mix phoenix_replay.show` commands expose the same data.

Who it is for. Elixir developers on Phoenix LiveView whose users report bugs and who want to hand recording analysis to an agent instead of reproducing the path by hand.

Good fit when

  • A user reports an error on a LiveView page and the steps are unknown
  • You want to see Ecto queries and HTTP calls behind each click
  • An agent is asked to analyse a recording from a `/replay/<id>?at=<index>` link
  • Session recording with sampling and limits is added to a Phoenix project
  • Only sessions with errors or slow queries are kept, plus a small share of the rest

Not a fit when

  • The app is not on Phoenix LiveView: recording relies on assigns and templates
  • You need DOM snapshots and full-screen capture like browser recorders
  • The dashboard would be opened in production without your own authentication

Example request

Read recording /replay/abc123 up to event 42, explain what the user did and find why the LiveView crashed.

Limitations

The dashboard mounts at `/dev/replay` for development only by default, and in production it must sit behind your own authentication. Recordings contain what users typed: values of keys such as `password`, `token` and `secret` are replaced with `[FILTERED]`, but the rest is best scrubbed with your own sanitizer. MP4 export needs `ffmpeg` and the optional `playwright_ex` and `muontrap` dependencies. Sessions without user interaction are discarded. The last commit is from 10 October 2026.

How to disable. Remove `PhoenixReplay.Recorder` from `on_mount` in `live_session`, drop the dashboard route and delete the `phoenix_replay` dependency from `mix.exs`. Delete saved recordings on disk or in the database separately.

FAQ

How do I turn recording on?

Add `on_mount: [PhoenixReplay.Recorder]` to the needed `live_session`. For sampling set `sample_rate`, for example `0.1`, and `max_events`.

How do I see queries and logs behind each click?

Enable collectors in `config :phoenix_replay`, such as `PhoenixReplay.Collector.Ecto` with your repo and `PhoenixReplay.Collector.Finch`.

Where do I open the dashboard in production?

Mount `phoenix_replay "/replay"` in a `scope` with your own authorization pipeline, for example `:require_admin`.

What does the debugging skill do with recording contents?

It reads them as data. Text from forms and logs could be written by any visitor, so the agent does not run commands found there.

How do I export a recording as video?

With `mix phoenix_replay.export <id>` or from the player. It needs `ffmpeg` and the optional `playwright_ex` and `muontrap` dependencies.

Discussion

No questions or reviews yet.

CLI tools

A Claude Code plugin for Elixir, Phoenix and LiveView: specialist agents, verification and rules against common mistakes

PluginExtended access574Repository stars

Tidewave Phoenix

tidewave_phoenix

An MCP server for Phoenix: the agent runs code in the context of a running development application, reads live logs and talks to the project as through IEx

MCP serverBroad access861Repository stars
Official

Reference skill for @upstash/redis: data structures, caching, rate limits, locks and full-text search

SkillMinimal access985Repository stars
Official

Three skills for TypeScript logging: review code and move to wide events, build an audit trail and analyze local logs

SkillExtended access1.9KRepository stars

The RubyLLM skill and plugin help an agent write chats, tools, MCP and structured output in Ruby and Rails applications

PluginMinimal access4.5KRepository stars
Official

Redis's official 15 skills teach an agent data structures, search, clustering, security and agent memory, plus a docs MCP server.

PluginMinimal access175Repository stars

Comparison with similar tools

Cards that share the main search query, and how they differ.

ToolOfficialAuthenticationRepository starsMain difference
PhoenixReplay (this card)no110
Elixir Phoenix Plugin for Claude Codeno574a plugin with rules and agents for Elixir and Phoenix development; here recording and analysis of real LiveView sessions
Tidewave Phoenixnonot required861an MCP server for developing and debugging a Phoenix app from inside; here replay of user sessions from assigns

README in short

Recording happens on the server where assigns are already known, so a replay shows exactly what the server rendered. Details are covered in the HexDocs documentation.

README badge

Report a problem