Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Inspect LiveView socket assigns for memory bloat — missing temporary_assigns, unused assigns, unbounded lists needing streams, memory estimates. Use when LiveView memory grows or you need to add temporary_assigns.
.claude/skills/oliver-kriska-lv-assigns/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✓→✗ | ▼ Worse | -64% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 56% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 8% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 7% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 19% | 0% |
Analyze LiveView socket assigns for memory efficiency, clarity, and best practices.
Use Grep to find all assign( and assign_new( calls in the target LiveView file.
Use Grep to find large data patterns: lists stored in assigns (assign.*\[\], assign.*Repo\.all) and full schema storage (assign.*Repo\.get) in the target file.
| Pattern | Problem | Solution | |---------|---------|----------| | assign(:items, Repo.all(...)) | Unbounded list | Use stream/3 | | assign(:user, Repo.get!(...)) | Full schema | Select only needed fields | | assign(:file_data, binary) | Large binary | Store reference, not data | | Nested preloads | Excessive data | Preload only what's rendered |
Should use temporary_assigns:
elixirdef mount(_params, _session, socket) do {:ok, socket, temporary_assigns: [flash_message: nil]} end
Search for assigns defined but never used in templates:
Use Grep to extract all assign names (assign\(:(\w+)) from the LiveView file, then use Grep to find all @\w+ references in the corresponding .heex template. Compare to find unused assigns.
elixir# BAD: @items might not exist def render(assigns) do ~H"<%= for item <- @items do %>" end # GOOD: Initialize in mount def mount(_params, _session, socket) do {:ok, assign(socket, items: [])} end
For each assign, estimate memory footprint:
| Data Type | Approx Size | Concern Level | |-----------|-------------|---------------| | Integer | 8 bytes | Low | | String (100 chars) | ~200 bytes | Low | | List of 100 maps | ~10-50 KB | Medium | | List of 1000 items | ~100-500 KB | High | | Binary (image) | Varies | Critical | | Full Ecto schema | ~1-5 KB each | Medium |
Run /skill:lv-assigns path/to/live_view.ex to generate an assigns inventory with memory estimates and optimization recommendations.
Other measured skills in the registry, with their headline benchmark lift.