realtime-ux
Real-Time UX Patterns
LiveView makes real-time technically easy. The hard part is UX: making interactions feel instant, handling concurrent users gracefully, and degrading smoothly when connections fail. This skill covers the UX patterns, not the plumbing.
The Five UX Challenges of Real-Time
- Latency — The round trip to the server is perceptible. How do you make it feel instant?
- Presence — Multiple users are here. How do you show who, where, and what they're doing?
- Conflicts — Two users changed the same thing. Who wins? How does the loser know?
- Disconnection — The WebSocket dropped. What does the user see? What happens to their work?
- Loading — Data isn't here yet. What does the user see while waiting?
Core Principles
- Server owns the truth — optimistic UI is a perception layer, not a state layer. The server always has the last word.
- Acknowledge every action — users need immediate feedback, even if the server hasn't responded yet.
- Degrade gracefully — disconnects happen. The UI should communicate state honestly, not freeze silently.
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