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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>About seo I never thought. Never had a need. I read that crawling spa’s not a problem anymore with google: <a href="https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html" rel="noopener nofollow ugc">https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html</a>. Worth a case study?<br>
This is an interesting read (in part about seo) I find: <a href="https://www.airpair.com/javascript/posts/the-tipping-point-of-clientside-performance" rel="noopener nofollow ugc">https://www.airpair.com/javascript/posts/the-tipping-point-of-clientside-performance</a> , but the new google crawler is not mentioned.<br>
Concerning initial render-time I would stick to the rule of the thumb: first a good architecture, then optimize 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="8502" 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/embedded-elixir-phoenix-in-a-webpage-vs-frontend-communicating-with-a-phoenix-backend/1330/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-8502" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="8502"
                     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 #21"></div>
  </section>
</div>
    <div class="postbit" id="8504" data-post-id="8504">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Ooo, thanks for the links, not read about that yet.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>Great to see that SPA’s are indexable by Google now.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" 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="8504" 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/embedded-elixir-phoenix-in-a-webpage-vs-frontend-communicating-with-a-phoenix-backend/1330/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-8504" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="8504"
                     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 #22"></div>
  </section>
</div>
    <div class="postbit" id="8509" data-post-id="8509">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It still an issues that’s why the whole isomorphic/universal js thing exists in the first place aside from faster initial render (Including Angular 2 Universal). It’s nice to not have a need for SEO but for majority of external facing apps it’s obviously a big concern. SPA is not automatically “good architecture” or even “better” it’s all a function of requirements you have in any given case.  There is no good by default architecture it’s  specific to requirement of a given project. Every bullet point you listed as a pro of SPA has a set of cons that you have to accept.  BTW I am not against SPAs we build a lot of them but it’s good to have realistic understanding of tradeoffs one needs to make.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="8509" 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/embedded-elixir-phoenix-in-a-webpage-vs-frontend-communicating-with-a-phoenix-backend/1330/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-8509" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="8509"
                     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 #23"></div>
  </section>
</div>
    <div class="postbit" id="8546" data-post-id="8546">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Havn’t used it myself, but it seems that are already some solutions for serverside rendering for <a href="http://blog.overstuffedgorilla.com/render-react-with-phoenix/" rel="noopener nofollow ugc">React</a> and even <a href="http://blog.overstuffedgorilla.com/server-side-elm-with-phoenix/" rel="noopener nofollow ugc">Elm</a>. Of course I haven’t used this in production</p>
<p>Personally I find it hard to decide on one or the other. I work with React a lot and love it. But taking into account that the the inventors of React trump that the greatest innovation of React is compenentization, we already have that in Phoenix. I also feel that all that power that React gives us will result in more complexity and it’s ecosystem is very much oriented on a JavaScript backend (although changing a bit lately).</p>
<p>I haven’t used it enough, but a worthy alternative looks <a href="https://vuejs.org/" rel="noopener nofollow ugc">Vue.js</a>. The greatest benefit is that you don’t have to use a virtual DOM, and can still render your (initial) HTML, and from there pick it up with Vue.js.</p>
<p>Some interesting links (not with a Elixir backend):</p>
<p><a href="http://tomdale.net/2015/02/youre-missing-the-point-of-server-side-rendered-javascript-apps/" rel="noopener nofollow ugc">You’re Missing the Point of Server-Side Rendered JavaScript Apps</a></p>
<p><a href="http://www.onebigfluke.com/2015/01/experimentally-verified-why-client-side.html" rel="noopener nofollow ugc">Experimentally verified: “Why client-side templating is wrong”</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="8546" 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/embedded-elixir-phoenix-in-a-webpage-vs-frontend-communicating-with-a-phoenix-backend/1330/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-8546" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="8546"
                     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 #24"></div>
  </section>
</div>
    <div class="postbit" id="8547" data-post-id="8547">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Don’t forget that a big reason for universal JS, for companies like Twitter, Facebook, is support for old devices and countries with slow internet connection. For most application this isn’t an issue at all.</p>
<p>Also, from what i’ve read the whole SEO not working on SPA thing seems to be a thing of the past.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="8547" 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/embedded-elixir-phoenix-in-a-webpage-vs-frontend-communicating-with-a-phoenix-backend/1330/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-8547" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="8547"
                     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 #25"></div>
  </section>
</div>
    <div class="postbit" id="8549" data-post-id="8549">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It’s not a thing of the past <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> and will not be a thing of the past for a long while.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="8549" 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/embedded-elixir-phoenix-in-a-webpage-vs-frontend-communicating-with-a-phoenix-backend/1330/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-8549" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="8549"
                     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 #26"></div>
  </section>
</div>
    <div class="postbit" id="8556" data-post-id="8556">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Could you eloborate a little more? <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> Should I read it as: SPA’s are indexed by search crawlers, but will not offer the same SEO as server rendered apps?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="8556" 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/embedded-elixir-phoenix-in-a-webpage-vs-frontend-communicating-with-a-phoenix-backend/1330/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-8556" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="8556"
                     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 #27"></div>
  </section>
</div>
    <div class="postbit" id="8561" data-post-id="8561">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>Martin.Fowler.Thoughtworks<br>
3 december 2014 ·<br>
Retweeted Justin Searls (<span class="mention">@searls</span>):<br>
“Isomorphic JavaScript” is a new term that describes software systems which are a total &gt;mess on both the front-end <em>and</em> the back-end.</p>
</blockquote>
<p>No, isomorphic javascript is not a mess, it is “a function of requirements”. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" 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="8561" 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/embedded-elixir-phoenix-in-a-webpage-vs-frontend-communicating-with-a-phoenix-backend/1330/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-8561" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="8561"
                     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 #28"></div>
  </section>
</div>
    <div class="postbit" id="8563" data-post-id="8563">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>SPA’s might or might not get indexed by a crawler Panda might or might not penalize you. Google’s crawler will try to index an SPA but it has aggressive timeouts undisclosed limits on number of requests it will process number of js files you can have and it does not support # urls Service Workers, the Fetch API, Promises, and requestAnimationFrame among other things.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="8563" 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/embedded-elixir-phoenix-in-a-webpage-vs-frontend-communicating-with-a-phoenix-backend/1330/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-8563" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="8563"
                     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 #29"></div>
  </section>
</div>
    <div class="postbit" id="12994" data-post-id="12994">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Vue2 supports templating, JSX, and progressively scales with routing, state management, and possibly native mobile (weex, beta?). It competes and exceeds React in every category (my opinion) except community mindshare. It has big international mindshare, from the likes of Alibaba etc., though.</p>
<p>Both Vue and React don’t have to take over your entire page. You can use bits of Vue or React. Just target <span class="hashtag-raw">#vue-app</span> and <span class="hashtag-raw">#react-app</span> in their own divs. I think Elm also can do this, but it outputs the source into a giant JS file.</p>
<p>Vue would be perfect as an elixir front end with server side rendering support straight from Elixir/BEAM if there was a library to do JSON-IO similar to react-stdio.</p>
<p>The templating DSL of vue is nice and simple (and you get JSX support, too!). It’s easy to see what’s happening at a glance in vue components, and it’s super easy to unit test.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="12994" 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/embedded-elixir-phoenix-in-a-webpage-vs-frontend-communicating-with-a-phoenix-backend/1330/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-12994" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="12994"
                     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 #30"></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/1330/load_more?page=4">Load more posts (9 remaining)</a>
</div></template></turbo-stream>