elixir-liveview
Phoenix LiveView Patterns
Expert guidance for building real-time, interactive web applications with Phoenix LiveView.
Lifecycle & State
- Keep
mount/3minimal — assign only what's needed for initial render - Use
handle_params/3for URL-driven state, notmount/3 - Prefer
assign_new/3overassign/3when value may already exist - Use
assign_async/3andstart_async/3for expensive operations - Never block
mount/3with slow database queries or API calls
# ✅ Good: Minimal mount, async loading
def mount(_params, _session, socket) do
{:ok, assign(socket, page_title: "Dashboard", loading: true)}
end
def handle_params(%{"id" => id}, _uri, socket) do
More from hwatkins/my-skills
elixir-tdd
Test-driven development enforcement for Elixir and Phoenix. Requires failing tests before implementation. Use when implementing features, fixing bugs, or when code quality discipline is needed.
23spam-prevention
When the user needs to prevent spam signups, bot accounts, fake registrations, or abuse of signup/trial flows. Also use when mentioning "spam accounts," "fake signups," "bot registrations," "disposable emails," "signup abuse," or "trial fraud." For broader security concerns, see saas-security.
14elixir-otp
OTP patterns for Elixir — GenServer, Agent, Task, ETS, supervision trees, Registry, and process design. Use when designing concurrent systems, stateful processes, or deciding when (and when NOT) to use processes.
8rust-tdd
Test-driven development enforcement for Rust. Requires failing tests before implementation. Use when implementing features, fixing bugs, or when code quality discipline is needed.
5rust-core
Expert Rust development with ownership, borrowing, lifetimes, traits, error handling, and idiomatic patterns. Use for any Rust code.
4rust-async
Async Rust with Tokio, futures, concurrency patterns, channels, and performance. Use when building async services, networking, or concurrent Rust applications.
4