{"repo":"dannote/phoenix_streamdown","free":true,"listed":false,"github":"https://github.com/dannote/phoenix_streamdown","clone":"git clone https://github.com/dannote/phoenix_streamdown.git","description":"Streaming markdown renderer for Phoenix LiveView, optimized for LLM output","language":"Elixir","stars":25,"topics":["elixir","liveview","llm","markdown","mdex","phoenix","server-rendering","streaming"],"license":"MIT","category":"ai-agents","readme_excerpt":"PhoenixStreamdown Streaming markdown renderer for Phoenix LiveView, optimized for LLM output. Inspired by Streamdown and vue-stream-markdown, but built to fully leverage LiveView — server-side rendering, automatic DOM diffing, word-level streaming animations, and zero client-side JavaScript. Installation Usage That's it. Pass content as a markdown string, set streaming to true while tokens are arriving. Completed blocks are frozen with phx-update=\"ignore\" — only the last block re-renders on each token. Streaming animations Add word-level fade-in like Vercel's Streamdown: Include the CSS ( fadeIn , blurIn , slideUp ): How it works 1. Remend — auto-closes incomplete syntax ( bold → bold , unclosed fences, partial links) 2. Blocks — splits into independent blocks so earlier ones are stable 3. MDEx — renders each block to HTML server-side (Rust-backed) 4. LiveView — diffs only the active block, skips the rest On a 56-block document, this is 7x less server work and 460x smaller diffs per token compared to re-rendering the full document each time. Example A full chat app with ReqLLM streaming is in the example/ directory. Run it: Documentation HexDocs — attributes, customization (themes, CSS classes, stable IDs, MDEx options). License MIT","default_branch":null,"files":null,"tree":[],"storefront":"/r/dannote","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/dannote/phoenix_streamdown/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}