<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="179730" data-post-id="179730">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="i-n-g-m-a-r" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  i-n-g-m-a-r
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Please consider my post withdrawn.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="179730" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/liveview-append-and-performance-degradation-with-large-number-of-appended-elements/32376/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-179730" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="179730"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="179734" data-post-id="179734">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="LostKobrakai" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/LostKobrakai/120/3072_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  LostKobrakai
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mononym" data-post="10" data-topic="32376">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mononym/48/4124_2.png" class="avatar"> mononym:</div>
<blockquote>
<p>All of the templates you see, whether the normal EEX templates or the LEEX templates, end up being processed and turned into strings after which is where LiveView comes in.</p>
</blockquote>
</aside>
<p>This is not true at all. You’re correct in that eex and leex templates are processed by their respective view modules, but there’s a big difference in how they’re processed. Only .leex templates (or <code>~L"…" code)</code> does get detailed change tracking, which allows liveview to send static parts only once and on updates send only the tiniest bits of updated markup instead of large chunks of markup, where 95% are already present on the client. I’m not sure how much, but it should at least help morphdom to make better choices in what to update in the dom.</p>
<p>Plain eex templates will only be compiled to functions returning iodata – no change tracking for parts of the template. Which is why you’d want to be careful to use .leex everywhere liveview is involved.</p>
<aside class="quote no-group" data-username="mononym" data-post="10" data-topic="32376">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mononym/48/4124_2.png" class="avatar"> mononym:</div>
<blockquote>
<p>For loops have nothing to do with Live Components. A Live Component is simply a way to encapsulate state (in some cases) and display logic in an easily reusable way, much like templates.</p>
</blockquote>
</aside>
<p>You’re correct, but if I understand liveview correctly live components also act as kind of a “root” element for updates on the client side / for morphdom. So it could be possible that using components might improve the client side performance as well.</p>
<aside class="quote no-group" data-username="mononym" data-post="11" data-topic="32376" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mononym/48/4124_2.png" class="avatar"> mononym:</div>
<blockquote>
<p>Which I called out explicitly in the initial post. And hence my asking, in the first post, how people are approaching it and even gave the idea of simulating that using hotkeys and “scrolling” through the messages that way.</p>
</blockquote>
</aside>
<p>Sorry, didn’t read the whole topic thoroughly. But this can be a solution. If you have to much stuff, reducing the amount of stuff is one way to resolve issues. You can do this either by using client side rendering and keeping data on the client, but rendering only parts (liveview can e.g. work nicely with alpine.js) or by doing the same on the server with more latency.</p>
<aside class="quote no-group" data-username="mononym" data-post="10" data-topic="32376">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mononym/48/4124_2.png" class="avatar"> mononym:</div>
<blockquote>
<p>LiveView is about replacing JS as much as possible to provide richer UI experiences and to provide for a whole new set of interoperability between client and server out of the box while keeping as much server side as possible to reduce context change, development context switching, and improve the security and integrity of data. All of the templates, for loops, and everything else that makes building the actual HTML easy is outside LiveView’s bailiwick.</p>
</blockquote>
</aside>
<p>I’m not sure this is a great description of liveview. Liveview is a great tool to reduce complexity in places where server and client need to interact anyways. It’s a suboptimal solution for any interaction, which doesn’t need to involve the server. It’s also not inherently more secure than comparable js solutions.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="179734" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/liveview-append-and-performance-degradation-with-large-number-of-appended-elements/32376/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-179734" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="179734"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="179735" data-post-id="179735">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Matheus" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Matheus/120/37272_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Matheus
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I was having a problem similar to yours, in my case, I have a panel that preloads 40 thousand cards (in the most extreme case), distributed in 7 lists (this is a Kanban style project that I am doing). However, in a more friendly way, I limited each list to appearing only the first 20. And that already starts to return me some delays the moment I execute some action of events, like for example, opening the card modal, creating a tag for the card, editing, moving etc. This delay had a duration of ~ 60ms. Due to the LiveComponents feature that they offer, I chose to share several LiveComponents throughout my project, by the type of communication and properties. Now with this change, I can get an improvement in performance on my panel, due to the behavior of divisions of the HTML bits, but from time to time there are some short delays, which do not get in the way of UX, because it was a very extreme case in which I would carry 40 thousand cards.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="179735" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/liveview-append-and-performance-degradation-with-large-number-of-appended-elements/32376/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-179735" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="179735"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="179738" data-post-id="179738">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mononym" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mononym/120/4124_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mononym
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>Plain eex templates will only be compiled to functions returning iodata – no change tracking for parts of the template. Which is why you’d want to be careful to use .leex everywhere liveview is involved.</p>
</blockquote>
<p>You are right in that how they are processed is very different, but my understanding is that the templates enter the processing code as strings. How you interpolate values into those strings doesn’t matter from the point of view of LiveView. As far as I understand it, whether I do <code>&lt;div class="&lt;%= "foo" %&gt;"&gt;</code> or <code>&lt;%= raw(foo) %&gt;</code> where the variable foo is <code>"&lt;div class=\"foo\"&gt;"</code> doesn’t really matter as you end up with the same html with the same values will be in the string that is then processed by the LiveView code.</p>
<p>Am I misunderstanding the sequence of events?</p>
<blockquote>
<p>You’re correct, but if I understand liveview correctly live components also act as kind of a “root” element for updates on the client side / for morphdom. So it could be possible that using components might improve the client side performance as well.</p>
</blockquote>
<p>I can see how that might help in some cases. Would obviously depend heavily on how it impacts redrawing. I’ll take a peek at that.</p>
<blockquote>
<p>I’m not sure this is a great description of liveview.</p>
</blockquote>
<p>I’m not happy with it either, but LiveView is certainly not at all about making writing the actual html for a page easier which was my main point.</p>
<blockquote>
<p>It’s also not inherently more secure than comparable js solutions.</p>
</blockquote>
<p>Perhaps I should have said it’s easier to be more secure. Because you’re right, you can make JS solutions secure…at the expense of doubling up all your logic and doing the validation checks server side.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="179738" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/liveview-append-and-performance-degradation-with-large-number-of-appended-elements/32376/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-179738" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="179738"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="179739" data-post-id="179739">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mononym" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mononym/120/4124_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mononym
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>How, exactly, did you implement your components? For example, did you just replace a <code>form</code> element in a LEEX template with a call to render a live component, which did nothing more than render that same form element that was originally created in the main template? In such a case I would love to understand how that  would lead to an improvement as it seems like you would still have the same DOM manipulation issues.</p>
<p>Did you also change the overall structure of the page as you also implemented the components?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="179739" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/liveview-append-and-performance-degradation-with-large-number-of-appended-elements/32376/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-179739" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="179739"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="179740" data-post-id="179740">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="LostKobrakai" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/LostKobrakai/120/3072_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  LostKobrakai
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mononym" data-post="15" data-topic="32376">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mononym/48/4124_2.png" class="avatar"> mononym:</div>
<blockquote>
<p>Am I misunderstanding the sequence of events?</p>
</blockquote>
</aside>
<p>It seems you are. LiveView does not process the resulting markup after assigns are interpolated. It only processes the templates. .leex templates are processed, so that static parts of the template are taken apart from dynamic parts. The dynamic parts also have dependency tracking, which allows to update only the parts, which actually depend on the data being updated.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">&lt;div class="&lt;%= "foo" %&gt;"&gt;
</code></pre>
<p>becomes something akin to (pseudo-code)</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">%{static: ["&lt;div class=\"", 1, "\"&gt;"], dynamic: %{1 =&gt; %{depends_on: fn -&gt; @foo end}}
</code></pre>
<p>where <code>["&lt;div class=\"", 1, "\"&gt;"]</code> can be sent once to the client and only the value of <code>@foo</code> is sent on updates.<br>
… while</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">&lt;%= raw(foo) %&gt;
</code></pre>
<p>would be represented like this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">%{static: [1], dynamic: %{1 =&gt; %{depends_on: fn -&gt; raw(@foo) end}}
</code></pre>
<p>where the whole <code>raw(@foo)</code> would be sent on each update.</p>
<p>If you now render a .leex template you don’t get back a plain string, but a struct, holding those details, where the runtime can now decide to send only the parts that matter to the client, significantly reducing the amount of traffic on the wire (imagine the above nested a few handful of layers).</p>
<p>Non .leex templates essentially result in the same unoptimized sending as the latter example.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="179740" data-batch-url="/posts/batch_likers">
                        6
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/liveview-append-and-performance-degradation-with-large-number-of-appended-elements/32376/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-179740" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="179740"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="179745" data-post-id="179745">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="chrismccord" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/chrismccord/120/24233_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  chrismccord
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Phoenix</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Components would solve your issues in this case. The issue is we have to patch the entire LiveView DOM container for any change, and for large DOM trees, this requires traversing the tree as you alluded to. If you wrap the paragraphs in a component and/or the form in a component, it will allow LiveView to patch only those areas when they change, and also skip walking those areas when the parent LiveView needs to patch a DOM a non-component node that it owns.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="179745" data-batch-url="/posts/batch_likers">
                        11
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/liveview-append-and-performance-degradation-with-large-number-of-appended-elements/32376/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-179745" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="179745"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="179776" data-post-id="179776">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mononym" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mononym/120/4124_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mononym
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Alright then, I guess I’m gonna go write a couple of components and see what impact it has on the performance.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="179776" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/liveview-append-and-performance-degradation-with-large-number-of-appended-elements/32376/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-179776" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="179776"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="179777" data-post-id="179777">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mononym" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mononym/120/4124_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mononym
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you for the explanation.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="179777" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/liveview-append-and-performance-degradation-with-large-number-of-appended-elements/32376/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-179777" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="179777"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="179785" data-post-id="179785">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ChrisYammine" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ChrisYammine/120/19254_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ChrisYammine
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Would love to hear back if this actually solved your issue</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="179785" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/liveview-append-and-performance-degradation-with-large-number-of-appended-elements/32376/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-179785" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="179785"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/32376/load_more?page=3">Load more posts (13 remaining)</a>
</div></template></turbo-stream>