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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bartblast" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartblast/120/17647_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bartblast
                    <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 class="user-title">
									<span>Creator of Hologram</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="garrison" data-post="28" data-topic="72519">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/g/3bc359/48.png" class="avatar"> garrison:</div>
<blockquote>
<p>I’ve done this manually before (a static router that sends PubSub messages to the correct LiveComponents) and in practice you only want to send some messages to some components which opens up that can of worms all over again. I suppose you could just match on a subset of messages in each component and throw the rest away, though this is suboptimal for performance (but probably won’t matter).</p>
</blockquote>
</aside>
<p>Hologram has these concepts built into the framework level - cid (component ID), session ID, connection ID, and eventually user/group IDs. I’d like to explore using these for smart message routing - not sure if that’s possible yet, but it could solve problems like manual message filtering by having the framework handle “right message to right component” automatically.</p>
<p>Your performance concern about throwing away messages is what I’d love to eliminate through intelligent targeting based on these identities. Maybe it’s more “targeted messaging” than traditional pub/sub, but could still use pub/sub underneath.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374623" 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/time-to-implement-pub-sub-in-hologram-looking-for-your-input/72519/42">Post #41</a>
	                </div>
	            </div>
              <div id="likers-container-374623" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374623"
                     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 #41"></div>
  </section>
</div>
    <div class="postbit" id="374625" data-post-id="374625">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bartblast" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartblast/120/17647_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bartblast
                    <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 class="user-title">
									<span>Creator of Hologram</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Eiji" data-post="29" data-topic="72519">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>So anyway we have to add some code. I only suggested that no matter if support for existing package will take 10 LOC or 10_000 LOC we could put them in the separate package following <code>phoenix_pubsub</code> naming. Also please keep in mind that this naming is used for some reason as otherwise it would be called just <code>pubsub</code>. Since <code>Hologram</code> is intended to work independently from <code>phoenix</code> (at least from developer perspective) it may not guarantee a compatibility with every <code>phoenix_*</code> package especially if it expects some <code>phoenix</code>-related context. The simplest examples are always best, so think that every component package for <code>LiveView</code> would not work in <code>Hologram</code> simply because of different templates used in those packages.</p>
</blockquote>
</aside>
<p>Honestly, I’d much rather use existing packages wherever possible - this project already has a gargantuan scope! <img src="https://forum.elixirforum.com/images/emoji/apple/sweat_smile.png?v=15" title=":sweat_smile:" class="emoji" alt=":sweat_smile:" loading="lazy" width="20" height="20"> The challenge is that Hologram’s client-server transpilation architecture creates some unique constraints.</p>
<p>The pub/sub system will likely need to be baked into the framework’s inner workings, particularly for security reasons. Since Hologram transpiles Elixir code to run on the client, we need tight control over what gets exposed and how messages flow between client and server contexts.</p>
<p>Phoenix.PubSub can be used at a very low level, but we’ll need an orchestration layer on top of it to bridge the gap between traditional handle_info callbacks and Hologram’s action/command paradigm and component system.</p>
<p>This isn’t just about API differences - it’s about maintaining security boundaries while still providing seamless real-time communication across the client-server boundary.</p>
<p>I appreciate the approach that if we can make it work cleanly with existing tools, that’s always preferable to reinventing wheels! But I’m afraid this is just not possible for this case…</p>
<aside class="quote no-group" data-username="Eiji" data-post="29" data-topic="72519">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Oh btw. I wonder if <code>CQRS/Event sourcing</code> with <code>commanded</code> package could have few things to say in this topic too. <img src="https://forum.elixirforum.com/images/emoji/apple/thinking.png?v=15" title=":thinking:" class="emoji" alt=":thinking:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>That’s a good idea to explore in the future once there’s a local-first data source layer and some usage patterns emerge. It may happen that it is convergent in some way! Though I’d like to keep the base model as simple as possible - focusing on DX and ease of development - and CQRS / Event sourcing add some architectural complexity. But maybe with some other primitives in place, new patterns can emerge from this?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374625" 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/time-to-implement-pub-sub-in-hologram-looking-for-your-input/72519/43">Post #42</a>
	                </div>
	            </div>
              <div id="likers-container-374625" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374625"
                     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 #42"></div>
  </section>
</div>
    <div class="postbit" id="374626" data-post-id="374626">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bartblast" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartblast/120/17647_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bartblast
                    <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 class="user-title">
									<span>Creator of Hologram</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="jam" data-post="30" data-topic="72519" 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/jam/48/36266_2.png" class="avatar"> jam:</div>
<blockquote>
<p>I think it depends on what you have in mind based on the <a href="https://forum.elixirforum.com/t/how-to-approach-authentication-and-authorization-in-hologram/72527" rel="nofollow">authorization thread</a>. <img src="https://forum.elixirforum.com/images/emoji/apple/slightly_smiling_face.png?v=15" title=":slightly_smiling_face:" class="emoji" alt=":slightly_smiling_face:" loading="lazy" width="20" height="20"></p>
<p>Maybe it’s best to authorize in the <code>init</code> and leave <code>subscribe</code> purely as the way to listen to a topic. That way there’s only one place to house authorization logic and it works the same regardless of whether the app uses pubsub.</p>
</blockquote>
</aside>
<p>Authorization needs to happen server-side, which creates some challenges.</p>
<p>We may sometimes need to subscribe dynamically (through commands), but I think the most common case would be “static” - components subscribe on server-side initialization through some DSL, and unsubscribe is managed automatically by the framework.</p>
<p>So probably both patterns: declarative subscriptions for the common cases, dynamic/imperative subscriptions through commands when needed.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374626" 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/time-to-implement-pub-sub-in-hologram-looking-for-your-input/72519/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-374626" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374626"
                     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 #43"></div>
  </section>
</div>
    <div class="postbit" id="382233" data-post-id="382233">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hey, just throwing some ideas out there. I’m much newer to Elixir than you guys so I don’t think in elixir and it’s much easier for me to express my ideas using JS, so I hope that you will forgive me my example, but for me ideal API would be some kind of composable ‘sync’ primitive. Let me show how it would look like in JS (syntax and names are a bit inspired by SolidJS, I know that Hologram works more like React, but it’s just to express idea).</p>
<pre data-code-wrap="js"><code class="lang-js">const [notifications, setNotifications] = createServerSignal()
const userId = ‘xyz’
// server signal is derived state that persists on the server
const userServerNotifications = createDerivedServerSignal((notifications) =&gt; notifications.filter(n =&gt; n.userId = userId))
// I would expect that client ‘signals’ would be able to use any server side signals, 
// but this should only work ‘one way’ so ofc I don't expect server signals to be able to use client signals
const userClientNotifications = createDerivedClientSignal((notifications) =&gt; notifications.filter(n =&gt; n.userId = userId))
</code></pre>
<p>Then in template we could use both server side signals and client side signals (server side signals could be ‘wrapped’ in client side signal that does nothing transparently and just returns state on the client side). State flows top to bottom.<br>
The difference between <code>userClientNotifications</code> and <code>userServerNotifications</code> here is that for <code>userClientNotifications</code> I’d expect all notifications to be sent to the client and filtered client side.</p>
<p>If hologram could somehow provide something similar - some composable API that allows to sync some state into the client then I think it would be just great. I don’t think integration with some specific solution (like ElectricSQL) would be a good idea. I think that for start using something similar to what I’ve provided could be good start (basically hologram abstracting transport between server and client).<br>
I think that maybe in the beginning each server ‘signal’ could work like ‘liveState’ (at least I believe that’s how it works) so it would just have the object represented as JSON and send diffs applied to it where server → client boundary is crossed.<br>
For me it would allow to build most of the realtime functionality that I’m interested in for now and the idea is declarative and would be great DX.<br>
Now the question is - is that doable in Elixir (I’m not going to be helpful too much here as most of my Elixir code was vibe coded as I’m working on TS fulltime and only get to use Elixir in my free time for now hah).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="382233" 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/time-to-implement-pub-sub-in-hologram-looking-for-your-input/72519/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-382233" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="382233"
                     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 #44"></div>
  </section>
</div>
    <div class="postbit" id="387906" data-post-id="387906">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jonas_h" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jonas_h
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Could we get a status update on this?</p>
<p>For my projects PubSub is the big missing piece with Hologram that I can’t easily work around.</p>
<p>(Loving Hologram btw!)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387906" 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/time-to-implement-pub-sub-in-hologram-looking-for-your-input/72519/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-387906" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387906"
                     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 #45"></div>
  </section>
</div>
    <div class="postbit" id="387915" data-post-id="387915">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I was able to integrate PubSub on my hologram project through Phoenix channels, so it is possible currently. I’ll push my code in a few days, I want to blog about it. I made a <a href="http://skribbl.io" rel="noopener nofollow ugc">skribbl.io</a> clone. <img src="https://forum.elixirforum.com/images/emoji/apple/cowboy_hat_face.png?v=15" title=":cowboy_hat_face:" class="emoji" alt=":cowboy_hat_face:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387915" 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/time-to-implement-pub-sub-in-hologram-looking-for-your-input/72519/47">Post #46</a>
	                </div>
	            </div>
              <div id="likers-container-387915" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387915"
                     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 #46"></div>
  </section>
</div>
    <div class="postbit" id="387939" data-post-id="387939">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bartblast" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartblast/120/17647_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bartblast
                    <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 class="user-title">
									<span>Creator of Hologram</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi <a class="mention" href="/u/jonas_h" rel="nofollow">@jonas_h</a>, thanks for the kind words and the nudge!</p>
<p>Short version: I’m no longer planning a dedicated PubSub API. The plan is now Local-First sync for data, plus Server-triggered actions for ephemeral events (notifications, presence, typing indicators, etc.).</p>
<p>Reasoning is in <a href="https://forum.elixirforum.com/t/support-for-realtime-server-side-updates-and-streams-like-liveview-and-phoenixsync/73767/3" rel="nofollow">this reply</a> from a few months back - short of it: PubSub for data sync forces you to wire up reconciliation by hand, which is exactly what leads to the bugs people keep running into. A declarative local-first layer handles that automatically. I also covered this in my recent ElixirConf talk - I’ll share the recording when it’s up.</p>
<p><strong>Where things stand:</strong></p>
<ul>
<li><strong>Server-triggered actions</strong> are in progress and will ship in v0.9.0. Low-level primitive for ephemeral events, similar in spirit to PubSub - covers most realtime use cases.</li>
<li><strong>Local-First sync</strong> is still in the design phase (<a href="https://forum.elixirforum.com/t/designing-local-first-features-for-hologram-whats-your-dream-dx/74862" rel="nofollow">discussion here</a>). The end goal is a declarative auto-sync store, so most apps won’t need the low-level primitive at all.</li>
</ul>
<p><strong>What you can do today:</strong> the linked reply also covers workarounds - polling-command + <code>Hologram.JS.exec/1</code>, Phoenix Channels alongside Hologram, etc. <a class="mention" href="/u/ken-kost" rel="nofollow">@ken-kost</a>’s <a href="http://skribbl.io" rel="noopener nofollow ugc">skribbl.io</a> integration is likely along those lines - looking forward to his write-up.</p>
<p>Thanks for your patience, and glad you’re enjoying Hologram!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387939" data-batch-url="/posts/batch_likers">
                        4
                      </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/time-to-implement-pub-sub-in-hologram-looking-for-your-input/72519/48">Post #47</a>
	                </div>
	            </div>
              <div id="likers-container-387939" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387939"
                     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 #47"></div>
  </section>
</div>
    <div class="postbit" id="387989" data-post-id="387989">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jonas_h" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jonas_h
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="bartblast" data-post="48" data-topic="72519">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartblast/48/17647_2.png" class="avatar"> bartblast:</div>
<blockquote>
<p><strong>Server-triggered actions</strong> are in progress and will ship in v0.9.0. Low-level primitive for ephemeral events, similar in spirit to PubSub - covers most realtime use cases.</p>
</blockquote>
</aside>
<p>Awesome, looking forward to the v0.9.0 release!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387989" 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/time-to-implement-pub-sub-in-hologram-looking-for-your-input/72519/49">Post #48</a>
	                </div>
	            </div>
              <div id="likers-container-387989" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387989"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>